22

ファイルまたはフォルダーにプロパティがいつ設定されたかを判断する最も簡単な方法は何ですか? 基本的に、プロパティで機能する「svn Blame」に相当するものを探しています。

log サブコマンドを使用すると、プロパティがいつ変更されたかを含め、ファイルまたはフォルダーの完全な履歴を取得できます。ただし、プロパティの変更とその他の種類の変更は区別されません。つまり、特定のプロパティの履歴については何もわかりません。

status コマンドは、プロパティとその他の種類の変更を区別しますが、作業コピーでのみ機能します。

Blame 自体は、ディレクトリではなくファイルのみをサポートし、プロパティではなくコンテンツに対して機能します。

アイデア?

4

5 に答える 5

8

私が考えることができる最善の方法は、svn propgetコマンドを使用して現在のプロパティ値をテキストファイルにダンプし、リビジョンをさかのぼってプロパティを別のテキストファイルにダンプし、2つを比較する小さなスクリプトまたはアプリを作成することです。変更を検出するとすぐに、変更をコミットしたユーザーとともにリビジョン番号(実際には変更を行った後のリビジョン番号)を出力します。

リビジョン80でディクショナリディレクトリのsvn:ignoreプロパティをダンプするコマンドの例を次に示します。

svn propget -r 80 svn:ignore dictionary
于 2009-08-05T16:41:30.510 に答える
8

特定のフォルダーのプロパティがいつ変更されたかのリストを取得する 1 つの方法は、次のとおりです。

svn log -v . |grep "   M /trunk/datacenter$" -B2

次の出力が得られます。

r963 | someuser | 2013-08-26 20:32:37 +0200 (Mon, 26 Aug 2013) | 4 lines
Changed paths:
   M /trunk/datacenter
--
r908 | someotheruser | 2013-08-15 12:15:03 +0200 (Thu, 15 Aug 2013) | 1 line
Changed paths:
   M /trunk/datacenter
--
r413 | someuser | 2013-04-26 09:02:08 +0200 (Fri, 26 Apr 2013) | 1 line
Changed paths:
   M /trunk/datacenter

次に、各リビジョンを見て、何が変更されたかを確認できます。

$ svn diff -c963

下部に:

...

Property changes on: .
___________________________________________________________________
Modified: svn:ignore
## -22,3 +22,5 ##

 .idea
 .classpath
+
+dev-config.groovy

短所:

  • 興味のある物件を特定する方法はありません
  • 退屈な

注: 行 " M /trunk/datacenter" が最初の行ではない可能性があるため、すべての場合に -B2 で十分かどうかはわかりません

于 2013-08-26T19:06:17.633 に答える
1
#!/bin/bash
# This is not a great solution, but it works for gathering the data

CURRENT_REVISION=95300
OLDEST_REVISION=93000
URL="file:///home/svn/repo/project/dir/target.c"
PROPERTY_NAME="svn:externals"

for i in `seq $OLDEST_REVISION $CURRENT_REVISION`
do
  svn -r$i propget "$PROPERTY_NAME" "$URL" | sed -e "s/^/$i\t/"
done
于 2012-03-22T17:48:55.923 に答える