2010-03-02 76 views
1

我想将我的计算机上的工作副本的更改提交到存储库。 该仓库是在一个URL,现在i'm这样做:在sharpsvn中提交的问题

using (SvnClient client = new SvnClient()) 
{ 
    SvnCommitArgs ca = new SvnCommitArgs(); 

    ca.ChangeLists.Add(workingcopydir + filename); 

    ca.LogMessage = "Change"; 

    client.Add(workingcopydir + filename); 



    try 
    { 
     client.Commit(workingcopydir, ca); 

     //, ca, out resultado 
    } 
    catch (Exception exc) 
    { 
     MessageBox.Show(this, exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
    } 
} 

但doesn't工作,当它完成文件添加但不COMMITED。为什么? 谢谢! :)

+1

SharpSvn将suberrors作为内部例外。因此,您的消息框仅显示错误消息的某些部分。 – 2010-03-05 20:14:22

回答

4

FWIW,我做它像这样:

public bool Add (string path) 
    { 
     using(SvnClient client = NewSvnClient()){ 
      SvnAddArgs args = new SvnAddArgs(); 
      args.Depth = SvnDepth.Empty; 
      args.AddParents = true; 
      return client.Add(path, args); 
     } 
    } 

    public bool Commit (string path, string message) 
    { 
     using(SvnClient client = NewSvnClient()){ 
      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; 
      } 
     } 
    } 

然后我把它想:

repo.Add("some folder"); 

    ... 

    repo.Commit("base working copy"); 
+0

非常感谢你,它的作品! – Pedro 2010-03-02 10:25:34

+0

@Pedro:不客气:) – 2010-03-02 10:29:17

1

changelist参数可以作为一个过滤器。只有标记在特定更改列表中的文件才会被操作。

对于提交,您可以只提供多个目标。