我们正在使用SharpSvn以编程方式向SVN龟添加SolidWorks文件。 在SolidWorks中打开文件时,我想通过代码将其添加到SVN而不关闭文件。 我使用下面的代码
var SvnResult = new SvnResult();
var FullPath = SvnHelper.FileCombine(FileName);
try
{
var SvnArg = new SvnAddArgs();
SvnArg.Force = true;
SvnArg.Depth = SvnDepth.Infinity;
//
SvnClient.Add(FullPath, SvnArg);
SvnResult.Message = "Success.";
SvnResult.Status = true;
//
return SvnResult;
}
catch (SvnException exc)
{
SvnResult.Message = exc.Message;
SvnResult.Status = false;
return SvnResult;
}
我得到这样的错误: 该进程无法访问该文件,因为它正由另一个进程使用。
如何在不关闭文件的情况下将其添加到SVN? 的问候,
答案 0 :(得分:0)
我们解决了这个问题。起初我们使用TortoiseSvn.exe命令行来添加和提交文件,但是当我们用来发送commit命令时,引发了svn Dialog表单。为解决此问题,我从svn安装程序安装“命令行客户端工具”。通过安装此选项,您可以在svn路径“C:\ Program Files \ TortoiseSVN \ bin”下找到svn.exe。 我将此路径添加到Environment Variables,然后在文件打开时使用svn命令行添加和提交。
public SvnResult CommitFiles_BySVNCmd(string filePath)
{
var fullPath = SvnHelper.FileCombine(filePath);
var svnResult = new SvnResult();
try
{
// svn add command
var status = GetStatus(fullPath);
//
if (status.LocalContentStatus == SvnStatus.NotVersioned)
{
var argumentsAdd = $@"add {fullPath}";
ProcessStart(argumentsAdd);
}
// svn commit command
var argumentsCommit = $@"commit -m Commited_Automatically {fullPath}";
ProcessStart(argumentsCommit);
svnResult.Message = "Success
svnResult.Status = true;
return svnResult;
}
catch (SvnException se)
{
svnResult.Message = se.Message;
svnResult.Status = false;
return svnResult;
}
}
private void ProcessStart(string arguments)
{
var processInfo = new ProcessStartInfo("svn", arguments);
processInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
Process.Start(processInfo);
}
最诚挚的问候,