it-swarm-ja.com

ファイルがすでにsvnにコミットされているかどうかを確認します

ファイル/フォルダーがすでにsvnにコミットされているかどうかを確認するにはどうすればよいですか?チェックインのためにユーザーが選択したファイル/フォルダーがまだコミットされていないことを確認したいシェルスクリプトがあります。たとえば、を使用してすでにコミットされているフォルダをチェックインしようとした場合

svn add myfolder

次の警告が表示されます。

svn:警告:「myfolder」はすでにバージョン管理下にあります

4
smokinguns

svn infoの戻りコードを使用します。バージョン管理下にある場合は0、それ以外の場合はゼロ以外です。

私のシェルはコマンドの後にゼロ以外のリターンコードを表示するので、次のようになります。

$ svn info trunk
Path: trunk
URL: https://(...)/trunk
Repository Root: https://(...)
Repository UUID: 651713a4-5a46-7e42-a99e-f31e79777eab
Revision: 213
Node Kind: directory
(...)

$ touch foo
$ svn info foo 
foo:  (Not a versioned resource)

svn: A problem occurred; see other errors for details

rc: 1

bash出力を抑制して、infoスクリプト(他のシェルと同様)でそれを行う方法:

svn info <filename> 1>/dev/null 2>&1
echo $?
5
Daniel Beck

私はこれを使用しています:

if [ $(svn status $file | awk '{ print $1 }') == "?" ]; then
    echo "File is not under version control"
fi

このようにして、ここで確認できるさまざまなsvnステータスコードをクエリすることもできます: http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.status.html

1
derFunk

同様の問題を解決したかったのです。ファイルを生成するスクリプトの一部として、これが以前に行われていなかった場合は、自動的にSubversionに追加します。

私は次のことがうまくいったことがわかりました:

if ! svn info ${file} 1>/dev/null 2>&1 ; then
  svn add ${file}
fi

Bashで終了値をテストする この答えに私を導きました。

0
Mathew