2010-03-02 4 views
1

내 컴퓨터의 작업 복사본을 저장소로 변경하고 싶습니다. 저장소는 URL에 지금이 일을 미안 :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); 
    } 
} 

을하지만 파일이 커밋 추가 된 것이 아니라 마무리 할 때이 작업을 나던. 왜? 감사합니다 !!! :)

+1

SharpSvn은 내부 예외로 suberrors를 중첩합니다. 따라서 메시지 상자에는 오류 메시지의 일부분 만 표시됩니다. –

답변

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

+0

@ 페드로 : 환영합니다 :) –

1

변경 목록 인수는 필터로 작동합니다. 특정 변경 목록에있는 것으로 표시된 파일 만 조작합니다.

커밋의 경우 여러 대상을 제공 할 수 있습니다.