UNIX/Subversion

UNIX/Subversion

リポジトリ生成

svnadmin create --fs-type fsfs リポジトリディレクトリ


リポジトリ移行

 1.3リポジトリから1.4リポジトリ等

svnadmin dump リポジトリディレクトリ > リポジトリダンプファイル
svnadmin create --fs-type=fsfs リポジトリディレクトリ
svnadmin load リポジトリディレクトリ < リポジトリダンプファイル


環境設定

  • ディレクトリ作成
    mkdir /etc/subversion/conf/
    mkdir /etc/subversion/hooks/
    mkdir /etc/subversion/hook-scripts/

  • /etc/subversion/passwd.default
    複数リポジトリで共通で使用するpasswdファイルを用意する。
    [users]
    username1 = password1
    username2 = password2
    username3 = password3

  • /etc/subversion/conf/svnserve.conf
    passwd.defaultファイルを使用するように変更したsvnserve.conf。
    リポジトリ生成スクリプトでコピーする。
    realmも自動に設定できるように、置換用キーワードを埋め込んだ。
    [general]
    anon-access = none
    auth-access = write
    password-db = /etc/subversion/passwd.default
    realm = {REPOSITORY_NAME}

tagsへのコミット防止HOOKスクリプト

  • /etc/subversion/hooks/pre-commit
    pre-commit.tmplをsvnperms.pyを使用するように変更。
    また、リポジトリ生成スクリプトで使用するの置換用キーワードを埋め込んだ。
    #!/bin/sh
    
    REPOS="$1"
    TXN="$2"
    
    # Make sure that the log message contains some text.
    SVNLOOK=/usr/bin/svnlook
    $SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" > /dev/null
    if [ $? -ne 0 ]; then
      echo "error: There isn't comment." >&2
      exit 1
    fi
    
    /etc/subversion/hook-scripts/svnperms.py -r "$REPOS" -t "$TXN" -f {REPOSITORY_DIR}/conf/svnperms.conf -s tagrestrict || exit 1
    
    # All checks passed, so allow the commit.
    exit 0

  • /etc/subversion/hook-scripts/svnperms.py
    スクリプト本体。
    subversionをインストールしたらどこかにあると思われる。
    cp -p どこかのディレクトリ/svnperms.py /etc/subversion/hook-scripts/svnperms.py

  • /etc/subversion/conf/svnperms.conf
    svnperms用の設定ファイル。
    リポジトリ構成が/project-name/{trunk,tags,branches}の場合
    [tagrestrict]
    .*/ = *(add,remove,update)
    trunk/.* = *(add,remove,update)
    tags/[^/]+/ = *(add,remove)
    branches/[^/]+/.* = *(add,remove,update)
    リポジトリ構成が/{trunk,tags,branches}/project-nameの場合
    [tagrestrict]
    trunk/.* = *(add,remove,update)
    tags/.*/ = *(add,remove)
    branches/.* = *(add,remove,update)

リポジトリ生成スクリプト

  • svnrepcr.sh
    次の処理を行うスクリプトです。
    ・リポジトリ生成。
    ・trunk/tags/branchesのインポート。
    ・リポジトリディレクトリへ/etc/subversion/{conf,hooks}のキーワード置換とコピー。
    #!/bin/sh
    
    ### 引数チェック
    if [ "$1" = "" ]; then
      echo "usage : svnrepcr.sh [REPOSITORY-DIR]"
      echo
      echo "ex. svnrepcr.sh /var/data/svn/category/newrepository"
      exit 0
    fi
    REPOSITORY_DIR=$1
    
    
    
    ### 環境設定
    umask 0002
    ETC_DIR=/etc/subversion
    REPOSITORY_NAME=`basename ${REPOSITORY_DIR}`
    
    
    
    ### リポジトリ生成
    svnadmin create --fs-type=fsfs ${REPOSITORY_DIR}
    
    
    
    ### リポジトリ初期登録
    TEMP_DIR=`mktemp -d`
    mkdir ${TEMP_DIR}/trunk
    mkdir ${TEMP_DIR}/branches
    mkdir ${TEMP_DIR}/tags
    svn import ${TEMP_DIR} file://${REPOSITORY_DIR} -m "Initial import"
    rm -rf ${TEMP_DIR}
    
    
    
    ### リポジトリ環境設定
    cp ${ETC_DIR}/conf/* ${REPOSITORY_DIR}/conf/
    sed "s/{REPOSITORY_NAME}/${REPOSITORY_NAME}/" ${ETC_DIR}/conf/svnserve.conf > ${REPOSITORY_DIR}/conf/svnserve.conf
    sed "s:{REPOSITORY_DIR}:${REPOSITORY_DIR}:" ${ETC_DIR}/hooks/pre-commit > ${REPOSITORY_DIR}/hooks/pre-commit
    chmod +x ${REPOSITORY_DIR}/hooks/pre-commit
    
    
    
    echo "create repository done."

ユーザー環境設定

置換キーワードの設定

  • C:\Documents and Settings\user\Application\Subversion\configに次の項目を設定する。
    [miscellany]
    enable-auto-props = yes
    
    [auto-props]
    *.java = svn:eol-style=native;svn:keywords=Id Date Author Rev URL
    
    この設定により、JavaDoc等に
    /**
     * @author $Author$
     * @version $Revision$ $Date:: 2008-05-26 19:06:45 +0900 $
     */
    と記述した場合、次のように置換される。 (Dateは文字化け対策のため、始めから置換した形で記述するのを推奨。)
    /**
     * @author $Author: user $
     * @version $Revision: 1173 $ $Date:: 2008-05-26 19:06:45 +0900 $
     */
    ただし、この設定はファイル新規追加時にしか効果がない。
    既にSubversion管理下のファイルに、上記の設定を反映させるにはSubversionのプロパティ設定を行う必要がある。

Eclipse上でSubversion管理下ファイルの設定を変更する。~

フォルダ、ファイルを右クリック-->チーム-->プロパティの設定
プロパティ名 :svn:eol-style
プロパティの内容:native
プロパティ名 :svn:keywords
プロパティの内容:Id Date Author Rev URL

関連ページ

2008-08-12 (火) 14:31:01 (3723d)

リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS