私がこれまでに見たsvnブランチのすべての例は次のようになりますsvn cp -m 'Making test branch' svn://svnrepo/hellosite svn://svnrepo/hellosite2
したがって、分岐するには、毎回リモートリポジトリの完全なURLを指定する必要があります。だが:
では、なぜ世界で毎回完全なURLを入力する必要があるのでしょうか。それとも私は何かが恋しいですか?現在のリモートリポジトリを参照できるショートカットはありますか?何かのようなもの svn cp -m 'Making test branch' //hellosite //hellosite2
SVN 1.6以降を使用して、その時点で作業コピー内にいる場合は、リポジトリルートへのショートカットとして キャレット記法 を使用できます。
svn cp -m 'Making test branch' ^/trunk ^/branches/hellosite
Windowsでは、少なくとも^/trunk
を二重引用符で囲んで、シェルを通過させる必要があることに注意してください。
svn cp -m "Making test branch" "^/trunk" "^/branches/hellosite"
シェルにエイリアスを追加するだけです。これを参照してください this SO post たとえば。
シェルでのsvnブランチに便利な小さなbashエイリアスファイルを作成しました。 (完全なファイルはここで入手できます: https://github.com/grexi/snippets/blob/master/svnaliases )
function getrepo {
REPO=`LANG=C svn info | grep "Repository Root"`
echo ${REPO:17}
}
function getrepobase {
if [ "`LANG=C svn info | grep -c Relative`" -gt 0 ];
then
parent=".."
grandparent=".."
if [ -d ".svn" ]; then
echo ""
else
while [ ! -d "$grandparent/.svn" ]; do
parent=$grandparent
grandparent="$parent/.."
done
echo $grandparent
fi
else
parent=""
grandparent="."
while [ -d "$grandparent/.svn" ]; do
parent=$grandparent
grandparent="$parent/.."
done
echo $parent
fi
}
function _svnbr {
if [ $# != 2 ]; then
echo "Usage: $0 branchname \"commit message\""
else
REPO=$(getrepo)
if [ -z "$REPO" ]; then
echo "You are not inside a svn working copy"
return;
fi
svn copy $REPO/trunk $REPO/branches/$1 -m "$2"
svn switch $REPO/branches/$1 $(getrepobase)
fi
}
alias svnbr=_svnbr
ブランチを作成すると、
svnbr "branchname" "commit message"
作業ディレクトリ内。