4

ac ファイルにコンテンツがなく、次のようにファイルを変更するとします。

#include <stdio.h>

int main()
{
    printf("Hello, world\n");
}

を実行svn diffすると、このメッセージが表示されました。

--- b.c (revision 1)
+++ b.c (working copy)
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+int main()
+{
+    printf("Hello, world\n");
+}

コードにもう 1 行追加します。

#include <stdio.h>

int main()
{
    printf("Hello, world\n");
    printf("Goodbye, world\n");
}

svn diff結果は次のとおりです。

--- b.c (revision 2)
+++ b.c (working copy)
@@ -3,4 +3,5 @@
 int main()
 {
     printf("Hello, world\n");
+    printf("Goodbye, world\n");
 }

古い(-)バージョンと新しい(+)バージョンの場合、コンマの後の数字は表示される合計数の行です。ただ、カンマの前の数字はよくわかりません。そこから変更が始まると思いますが、最初のケースでは、new(+) バージョンの番号は 0 ではなく 1 です。

出力をどのように解釈しsvn diffますか?

4

2 に答える 2

8

ウィキペディアの統合差分形式から:

@@ -l,s +l,s @@ optional section heading

ハンク範囲情報には、2 つのハンク範囲が含まれます。元のファイルのハンクの範囲の前にはマイナス記号が付き、新しいファイルの範囲の前にはプラス記号が付きます。各ハンク範囲の形式は l,s です。ここで、l は開始行番号、s は変更ハンクがそれぞれのファイルに適用される行数です。GNU diff の多くのバージョンでは、各範囲でカンマと末尾の値 s を省略できます。その場合、s のデフォルトは 1 です。本当に興味深い値は、最初の範囲の l 行番号だけであることに注意してください。他のすべての値は、差分から計算できます。

于 2012-09-06T02:38:39.893 に答える
3

そこから変更が始まると思いますが、最初のケースでは、new(+) バージョンの番号は 0 ではなく 1 です。

行番号は 1 から始まる1,6ため、new(+) ファイルの場合、記述したとおりに解釈できます。1は開始行番号で、6は表示される行数です。

行番号の 0 は、ファイルが存在しなかったことを示す特殊なケースでなければなりません。0,0そうすれば、存在しない old(-) ファイル — — と空のファイル — を区別できます1,0

于 2012-09-06T02:18:17.053 に答える