首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SharpSVN添加文件

使用SharpSVN添加文件
EN

Stack Overflow用户
提问于 2009-06-08 13:20:59
回答 3查看 7.3K关注 0票数 5

我想使用SharpSVN将目录下的所有不版本文件添加到SVN中。

我首先在命令行上尝试了常规的svn命令:

代码语言:javascript
复制
C:\temp\CheckoutDir> svn status -v

我看到了所有的子目录,所有已经签入的文件,一些标记为"?“的新文件,没有任何带有"L”锁指示的文件。

代码语言:javascript
复制
C:\temp\CheckoutDir> svn add . --force

这将导致要添加的子目录中的所有新文件,这些文件本身已经处于版本控制之下。

我也想用SharpSVN来做同样的事情。我将一些额外的文件复制到同一个目录中,并运行以下代码:

代码语言:javascript
复制
...
using ( SharpSvn.SvnClient svn = new SvnClient() )
{
    SvnAddArgs saa = new SvnAddArgs();
    saa.Force = true;
    saa.Depth = SvnDepth.Infinity;
    try
    {
        svn.Add(@"C:\temp\CheckoutDir\." , saa);
    }
    catch (SvnException exc)
    {
        Log(@"SVN Exception: " + exc.Message + " - " + exc.File);
    }
}

但是提出了一个SvnException:

  • SvnException.Message:工作副本C:\temp\CheckoutDir‘锁定
  • SvnException.File:......\subversion\libsvn_wc\lock.c“

在我的代码中没有其他svnclient实例正在运行,我还尝试调用

代码语言:javascript
复制
svn.cleanup()

就在加法之前,但没有用。

由于文档相当模糊;),我想知道这里是否有人知道答案。

提前感谢!

1月

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-07 23:00:11

使用这个工具http://svncompletesync.codeplex.com/或者把它作为一个示例。它完全能满足你的需要。

票数 5
EN

Stack Overflow用户

发布于 2014-12-02 18:32:14

我尝试了Malcolm的工具,但是现在它看起来已经有几年的历史了,但是我无法让它运行,但是在查看了源代码之后,看起来这实际上就是您需要使用的所有工具来同步本地签出文件夹和SVN中的一个:

代码语言:javascript
复制
string _localCheckoutPath = @"C:\temp\CheckoutDir\";
SvnClient client = new SvnClient();

Collection<SvnStatusEventArgs> changedFiles = new Collection<SvnStatusEventArgs>();
client.GetStatus(_localCheckoutPath, out changedFiles);

//delete files from subversion that are not in filesystem
//add files to suversion , that are new in filesystem

foreach (SvnStatusEventArgs changedFile in changedFiles)
{
    if (changedFile.LocalContentStatus == SvnStatus.Missing)
    {
        client.Delete(changedFile.Path);
    }
    if (changedFile.LocalContentStatus == SvnStatus.NotVersioned)
    {
        client.Add(changedFile.Path);
    }
}

SvnCommitArgs ca = new SvnCommitArgs();
ca.LogMessage = "Some message...";

client.Commit(_localCheckoutPath, ca);
票数 2
EN

Stack Overflow用户

发布于 2009-06-08 22:05:29

我认为你不应该在这条路后面加上“,”。尝试:

代码语言:javascript
复制
svn.Add(@"C:\temp\CheckoutDir" , saa);

请在SharpSvn讨论板/邮件列表中进一步讨论这一点,因为您所看到的行为可能是一个错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/964890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档