2

C# プロジェクトで SharpSvn を使用しています。いくつかのテキスト ファイルを含むフォルダーと、サブフォルダーを含む別のフォルダーがあります。バージョン管理下にフォルダーを追加してコミットしています。ここまでは順調ですね。これは私のコードです:

using (SvnClient client = new SvnClient())
                    {

                        SvnCommitArgs ca = new SvnCommitArgs();

                        SvnStatusArgs sa = new SvnStatusArgs();
                        sa.Depth = SvnDepth.Empty; 

                        Collection<SvnStatusEventArgs> statuses;

                        client.GetStatus(pathsConfigurator.FranchisePath, sa, out statuses);
                        if (statuses.Count == 1)
                        {
                            if (!statuses[0].Versioned)
                            {
                                client.Add(pathsConfigurator.FranchisePath);
                                ca.LogMessage = "Added";
                                client.Commit(pathsConfigurator.FranchisePath, ca);
                            }
                            else if (statuses[0].Modified)
                            {
                                ca.LogMessage = "Modified";
                                client.Commit(pathsConfigurator.FranchisePath, ca);
                            }

                        }
                    }

テキスト ファイルの 1 つに変更を加えてから、コードを再度実行します。変更はコミットされません。この条件は false です。

if (statuses.Count == 1)

if ブロック内のすべてのロジックは実行されません。

私はこのロジックを書いていないので、このコード行を完全に取得できません:

client.GetStatus(pathsConfigurator.FranchisePath, sa, out statuses);
                        if (statuses.Count == 1) {}

API の公式サイトにアクセスしましたが、これに関するドキュメントが見つかりませんでした。

  1. この API に詳しい人は、これらの 2 つの行が何をするのか教えてもらえますか?

  2. このコードにどのような変更を加える必要があるので、pathsConfigurator.FranchisePathフォルダーの内容の一部が変更された場合、変更を含むフォルダー全体がコミットされます。実際の例での提案は大歓迎です。

4

1 に答える 1

3

すべてを含む 1 つのディレクトリをコミットするのは非常に簡単です。そのディレクトリで commit を呼び出すだけです。

コミットのデフォルトの深さは、SvnDepth.Infinity直接機能するようになっています。SvnCommitArgsオブジェクトを提供することにより、追加のオプションを設定できますSvnClient.Commit()

于 2012-08-21T16:44:51.883 に答える