2016-08-11 4 views
1

私はシェルスクリプトで自動コンパイルプロセスを設定しましたが、最後のタグ付けからトランクがコミットされなかったかどうかを確認したいだけです...方法は単純な svnのコマンドラインを使用してそれを実行して、 "scriptly"または手動で歴史を読んだり比較したりすることはありませんか?トランクがタグ付けされているかどうかをsvnでチェックする方法

答えて

2

SVNでは、タグはリビジョンのエイリアスでも不変でもありません。代わりに単なるコピーです!タグは、作成後に変更することができます。したがって、唯一の方法は、2つのパスのリビジョン番号を比較することです。 This質問はそれらを取得する方法を示しています。

+0

おかげで、私が探したまさに。 – Amessihel

0

@cevingのおかげで、プロジェクトツリーにタグが最新であるかどうかをチェックする良いサンプルがあります。

は、プロジェクトが以下のように設定されていることを考える:

rootdev/prj1/ 
rootdev/prj1/trunk 
rootdev/prj1/tags 

スクリプト:

#!/bin/bash 
tabs 30 # be fancy 

function last-rev() 
{ 
    svn log "$1" -r HEAD:1 -l 1 -q | grep -ao '^r\S*' 
} 

find rootdev -ipath "*tags" | 
while read tags 
do 
    module="$(dirname $tags)" 
    modulename="$(basename $module)" 
    lasttag="$(ls -1 $tags | tail -n 1)" 
    lastrev=$(last-rev "$module") 
    lasttagrev=$(last-rev "$tags/$lasttag") 
    echo -ne "$modulename\t: $lasttag\t$lasttagrev/$lastrev " 
    [[ "$lastrev" == "$lasttagrev" ]] && echo "[UPTODATE]" || echo "[OUTDATED]" 
done 

出力:

DateUtils      : 1.0.0      r116/r116 [UPTODATE] 
ThisUtils      : 1.0.0      r116/r116 [UPTODATE] 
SomeUtils      : 1.2.1      r125/r125 [UPTODATE] 
ThatUtils      : 1.0.1      r101/r101 [UPTODATE] 
NotUtils      : 1.0.0      r101/r128 [OUTDATED] 
WhyUtils      : 1.2.0      r130/r130 [UPTODATE] 
関連する問題