我想使用SharpSVN将目录下的所有不版本文件添加到SVN中。
我首先在命令行上尝试了常规的svn命令:
C:\temp\CheckoutDir> svn status -v我看到了所有的子目录,所有已经签入的文件,一些标记为"?“的新文件,没有任何带有"L”锁指示的文件。
C:\temp\CheckoutDir> svn add . --force这将导致要添加的子目录中的所有新文件,这些文件本身已经处于版本控制之下。
我也想用SharpSVN来做同样的事情。我将一些额外的文件复制到同一个目录中,并运行以下代码:
...
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:
在我的代码中没有其他svnclient实例正在运行,我还尝试调用
svn.cleanup()就在加法之前,但没有用。
由于文档相当模糊;),我想知道这里是否有人知道答案。
提前感谢!
1月
发布于 2010-06-07 23:00:11
使用这个工具http://svncompletesync.codeplex.com/或者把它作为一个示例。它完全能满足你的需要。
发布于 2014-12-02 18:32:14
我尝试了Malcolm的工具,但是现在它看起来已经有几年的历史了,但是我无法让它运行,但是在查看了源代码之后,看起来这实际上就是您需要使用的所有工具来同步本地签出文件夹和SVN中的一个:
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);发布于 2009-06-08 22:05:29
我认为你不应该在这条路后面加上“,”。尝试:
svn.Add(@"C:\temp\CheckoutDir" , saa);请在SharpSvn讨论板/邮件列表中进一步讨论这一点,因为您所看到的行为可能是一个错误。
https://stackoverflow.com/questions/964890
复制相似问题