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);
                            }

                        }
                    }

我对其中一个文本文件进行了一些更改,然后再次运行代码。修改未提交。这个条件是假的:

if (statuses.Count == 1)

并且 if 块中的所有逻辑都不会执行。

我没有写这个逻辑,也不能完全得到这行代码:

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

我去了 API 的官方网站,但找不到有关此的文档。

  1. 更熟悉这个 API 的人可以告诉这两行是做什么的吗?

  2. 需要对此代码进行哪些更改,因此如果文件夹的某些内容pathsConfigurator.FranchisePath发生更改,则整个文件夹都将提交更改。任何有关工作示例的建议将不胜感激。

4

1 回答 1

3

提交一个包含所有内容的目录非常简单:只需在该目录上调用 commit 即可。

默认的提交深度是SvnDepth.Infinity这样可以直接工作的。您可以通过提供一个SvnCommitArgs对象来设置其他选项SvnClient.Commit()

于 2012-08-21T16:44:51.883 回答