»Subversionはてなブックマークに追加はてなブックマークを見る

Subversionに関するTips。

»タグ・ブランチを作成する

タグやブランチを作成するにはsvn copyでtrunkをコピーする。 例えば、現在のtrunkの状態にtags/release-1.0という名前を付けるには次のようにする。

svn copy svn://repos/someproject/trunk svn://repos/someproject/tags/release-1.0 -m "version 1.0"

»属性(プロパティ)を付ける

バージョン管理されているファイルに属性を設定するには、svn propsetを使う。

svn propset svn:keywords "URL Rev Id Date Author" sample.c

他にも属性に関連するコマンドには次のようなものがある。

propget
付与されている属性の値を表示する
proplist
付与されている属性を一覧にして表示する
propdel
付与されている属性を削除する
propedit
外部エディタを使って属性の値を編集する

»リポジトリをリネームする

リポジトリをリネームする場合は、

  1. 新しいリポジトリ名で現在のリポジトリの複製を作る
  2. 現在のリポジトリを削除する

という手順で変更できる。

svnadmin create repo_new
svnadmin dump repo_old | svnadmin load repo_new
rm -rf repo_old

なお、svnadmin dump/loadではリポジトリのパーミッション、設定ファイル類はコピーされないので、忘れずにコピーする

chmod -R g+w repo_new
cp -ipr repo_old/conf/* repo_old/conf/*

»異なるバージョン間でのリポジトリ移動

あるバージョンのSubversionで管理されているリポジトリを、別のバージョンのSubversionで管理されている環境に移動する場合は、svnadmin dump/loadを使い次の手順で行う。

  1. バージョンAのsvnadminでリポジトリをダンプする
svnadmin dump /path/to/repos > dumpfile
  1. バージョンBのsvnadminでリポジトリを作成
  2. バージョンBのsvnadminでダンプしたリポジトリをロードする
svnadmin load /path/to/repos < dumpfile

»リポジトリと初期ディレクトリの構成を自動的に作成するスクリプト

定形のリポジトリを自動的に作成する目的で作成したスクリプト。 このスクリプトは、リポジトリを作成したあと次のような初期ディレクトリ構成をリポジトリにインポートする。

/
|-- README
|-- tags/
|-- branches/
`-+ trunk/
  |-- src/
  `-- bin/

また、設定ファイルのテンプレート.svnserve.confをコピーし、作成したリポジトリの設定ファイルに上書きする。

#!/bin/bash

# usage: makerepo.sh reponame

REPONAME=$1
REPOSDIR='/var/repos'
TEMPDIR='/tmp/repolayout'
TEMPLOGFILE="$REPOSDIR/tmp.txt"
LOGMESSAGE='imports initial directory layout'
SVNREPOFSTYPE='fsfs'
SVNREPOCREATE="/usr/bin/svnadmin create --fs-type $SVNREPOFSTYPE"
SVNREPOIMPORT="/usr/bin/svn import --file $TEMPLOGFILE"

#
# リポジトリを作成する
#
echo "creates repository '$REPONAME'"

$SVNREPOCREATE $REPOSDIR/$REPONAME

#
# 初期ディレクトリ構成(trunk, branches, tags, README)を作成する
#
echo "creates initial directory layout"

mkdir -p $TEMPDIR
cd $TEMPDIR
mkdir trunk branches tags
: > README

#
# trunk以下のディレクトリを作成する
#
echo "make source directory(y/n)"
read makesourcedir

if [ "$makesourcedir" = 'y' ]
then
  cd trunk
  mkdir bin src
  cd -
fi

ls -lR

#
# 初期ディレクトリ構成をリポジトリにインポートする
#
echo "imports initial directory layout to repository"

echo $LOGMESSAGE > $TEMPLOGFILE
$SVNREPOIMPORT . file://$REPOSDIR/$REPONAME
rm -rf /tmp/repolayout/
rm $TEMPLOGFILE

#
# リポジトリの設定ファイルのテンプレートをコピーする
#
echo "copies repository configuration file"
cp $REPOSDIR/.svnserve.conf $REPOSDIR/$REPONAME/conf/svnserve.conf

echo "finished."

Sponsored Link