[英]Commit in sharpSVN
我在使用sharpsvn進行提交時遇到問題。 現在,我正在添加工作副本中的所有文件(如果添加了文件,則會引發異常),在此之后,我會提交。 它可以工作,但是引發異常。 在執行add()之前,有某種方法可以獲取存儲庫的狀態,並且僅添加新文件或已更改的文件? 如果我刪除工作副本上的一個文件或文件夾,如何刪除存儲庫中的這些文件或文件夾? 碼:
String[] folders;
folders = Directory.GetDirectories(direccionLocal,"*.*", SearchOption.AllDirectories);
foreach (String folder in folders)
{
String[] files;
files = Directory.GetFiles(folder);
foreach (String file in files)
{
if (file.IndexOf("\\.svn") == -1)
{
Add(file, workingcopy);
}
}
}
Commit(workingcopy, "change");
加:
public bool Add(string path, string direccionlocal)
{
using (SvnClient client = new SvnClient())
{
SvnAddArgs args = new SvnAddArgs();
args.Depth = SvnDepth.Empty;
Console.Out.WriteLine(path);
args.AddParents = true;
try
{
return client.Add(path, args);
}
catch (Exception ex)
{
return false;
}
}
}
承諾:
public bool Commit(string path, string message)
{
using (SvnClient client = new SvnClient())
{
SvnCommitArgs args = new SvnCommitArgs();
args.LogMessage = message;
args.ThrowOnError = true;
args.ThrowOnCancel = true;
try
{
return client.Commit(path, args);
}
catch (Exception e)
{
if (e.InnerException != null)
{
throw new Exception(e.InnerException.Message, e);
}
throw e;
}
}
}
你嘗試過類似的東西嗎
using(SvnClient client = new SvnClient())
{
SvnAddArgs aa = new SvnAddArgs();
aa.Depth = SvnDepth.Infinity;
aa.Force = true;
client.Add(rootDir, aa);
}
添加文件?
這應該都尚未將文件添加到您的工作副本中。 (相當於svn add --force <dirname>
)
如果您告訴您得到哪種異常,這將有所幫助。 Subversion庫可以返回數千種不同的錯誤代碼。 其中大多數都有有趣的消息文本。
SharpSvn將所有特定的Subversion錯誤嵌套為內部異常。 最后,您的代碼刪除了外部異常,並釋放了其余異常的堆棧跟蹤。 在外部異常上使用.ToString()應該會為您提供最佳的錯誤文本。 (對於與svn.exe類似的錯誤輸出,您需要合並所有.Messages)
另請參閱此其他答案以獲取更多建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.