5

追加を試みる前に、SharpSVN を使用してファイルのステータスを照会する簡単な C# アプリを作成しました。この目的のために私がさまざまな場所で見た例では、SvnClient の GetStatus メソッドを呼び出し、フル パスと out パラメータを SvnStatusEventArgs のコレクションに渡します。

私の理解では、ファイルの場合、GetStatus は、NotVersioned、Missing、Normal などのステータスで、カウントがちょうど 1 の SvnStatusEventArgs コレクションを返す必要があります。

私のアプリケーションでは、ソース管理下のファイルに対して GetStatus を呼び出すと、コレクション カウント0が返されます。

        SvnClient foo = new SvnClient();
        Collection<SvnStatusEventArgs> statuses;
        foo.GetStatus("C:\\Temp\\svnu\\Program.cs", new SvnStatusArgs {Depth = SvnDepth.Empty}, out statuses);

statuses[0].LocalContentStatus 値が Normal で 1 を期待している場合、statuses.Count の値はゼロです。この期待は間違っていますか?ソース管理にないファイルを参照するパスへの呼び出しの場合、呼び出しは NotVersioned の status[0].LocalContentStatus 値で機能します。

パスは作業コピーであることが確認され、Program.cs ファイルは実際に Subversion に登録されています。SharpSVN バージョン 1.7005.2163.13448 および VS2010 を実行しています。

私の明らかな混乱を解消してくれてありがとう。

編集詳細情報: Program.cs を変更した後、コミットはしていませんが、この同じコード スニペットは、LocalContentStatus が "Modified" の単一のステータス値を返します。ファイルをコミットした後、元の動作 (ステータス値が返されない) が返されました。

4

1 に答える 1

6

Bert Huijbenのフィードバックに基づいて、回答の投稿が遅れたことをお詫びします。みんなの利益のために、ここに答えを投稿します。

元のGetStatus呼び出しを変更しRetrieveAllEntriesてSvnStatusArgsオブジェクトのプロパティを設定すると、実際にはこの問題が解決され、ファイルのローカル(ただし興味のない:))コピーの戻りステータスカウントが1になり、.LocalContentStatusが「Normal」になります。 、" 望んだ通りに。

foo.GetStatus("C:\\Temp\\svnu\\Program.cs", new SvnStatusArgs {Depth = SvnDepth.Empty,
                                                               RetrieveAllEntries = true}, out statuses);

どうもありがとう。

于 2012-07-18T17:58:09.393 に答える