2012-01-25 8 views
0

OK、私は特定の日付または日付範囲に作られたリビジョン番号のリストを取得するには、このようなコマンドを実行することができます:配管Subversionのリビジョン番号

svn log -q -r{2012-01-25}:HEAD | grep '^r[0-9]' | cut -d\| -f1 | cut -b2- 

これは正常に動作してくれリストを与えますこの

12345 
12346 
12347 

のように今、私はdiffコマンドにこれらのリビジョン番号を渡すしたいと思いますので、期待通りのリビジョン番号に簡単なのsvn diffを実行すると、手動で

すなわち作品0

しかし、私はこの

svn log -q -r{2012-01-25}:HEAD | grep '^r[0-9]' | cut -d\| -f1 | cut -b2- | xargs svn diff -c 

のようなdiffコマンドに改訂リストパイプにしようとした場合には、ノードが見つからなかったというエラーを返します - 私は間違った引数を渡す午前のように私には見えます。

答えて

0

パイプの最後の部分で、xargsを実行しようとしている、ように見えます:

svn diff -c 12345 12346 12347 

それは試してみてくださいとき:

svn diff -c 12345 
svn diff -c 12346 
svn diff -c 12347 

-cオプションは引数を1つしか受け入れるため。

これを修正するには、xargsxargs -n1に置き換えてください。

0

問題が123451234612347の各々が別々の引数として渡されることです。 -cと1つの引数で結合する必要があります。

xargsのGNU findutilsバージョンを使用していると仮定すると、-Iオプションを使用できます。

$ printf "12345\n12346\n12347\n" | xargs -n 1 -I{} echo svn diff -c{} 
svn diff -c12345 
svn diff -c12346 
svn diff -c12347 

注これは、各バージョン番号を一度svn diff呼び出すこと:例は、SVNを使用していません。あなたのコマンドは、複数のバージョン番号で一度svnを呼び出します。複数のバージョン番号に対して1回svnを呼び出す場合:

svn diff -c12345 12346 12347 

異なる解決策が必要です。

EDIT:

は他の回答とSVNのマニュアルを読んで、あなたは-c後にスペースを持つことができるように見えますので、svn diff -c12345またはsvn diff -c 12345のいずれかが有効です。その場合は、ちょうど-n 1を使用してください。

関連する問題