使用SharpSvn提交包含修改过的文件的整个文件夹。

时间:2012-06-27 13:29:22

标签: sharpsvn

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

                        }
                    }

我对其中一个文本文件进行了一些更改,然后运行代码againg。修改未提交。这种情况是错误的:

if (statuses.Count == 1)

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

我没有写过这个逻辑,也不能完全接受这行代码:

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

我访问了API的官方网站,但无法找到有关此内容的文档。

  1. 对此API更熟悉的人是否可以说明这两行是做什么的?

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

1 个答案:

答案 0 :(得分:3)

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

默认的提交深度为SvnDepth.Infinity,因此可以直接使用。您可以通过向SvnCommitArgs

提供SvnClient.Commit()对象来设置其他选项