2010-12-08 2 views
0

sharpsvn의 병합 방법을 사용하여 두 개의 리비전을 병합 할 때 충돌 이벤트가 발생하지 않습니다. SvnMergeArgs 및 SvnUpdateArgs 충돌 이벤트를 사용하여 시도했다. sharpsvn의 update 메소드가 뒤 따르는 병합 메소드를 호출했습니다. 병합은 작업 복사본을 이전 버전으로 덮어 쓰고 업데이트는 이벤트를 실행하지 않습니다.병합 충돌 발생 충돌 이벤트

내가 여기서 분쟁이 해고되지 않는 것을 놓치고 있습니다. 다음은 내 코드입니다.

 private static void MergingBranchedScript() 
    { 
     using (SvnClient client = new SvnClient()) 
     { 

      client.Merge(@"path\abc.sql", 
       new Uri("file:///path/Trunk/Script/abc.sql"), 
       new SvnRevisionRange(4,7), new SvnMergeArgs()); 

      SvnUpdateArgs args = new SvnUpdateArgs(); 
      SvnUpdateResult result; 
      client.Update(@"path\Script", args, out result); 
      args.Conflict += new EventHandler<SvnConflictEventArgs>(args_Conflict); 
     } 
    } 

    public static void args_Conflict(object sender, SvnConflictEventArgs e) 
    { 
     //implementation 
    } 
+0

Subversion 1.8이 출시 될 때까지 모든 종류의 충돌에 대해 충돌 핸들러가 호출되지 않습니다. 우리는 나무 충돌을 일으키지 않는 몇 가지 사례를 발견했습니다. 1.8에서 모든 충돌에 대해 호출되어야하지만 충돌 해결자를 호출하기 전에 가능한 한 많은 작업을 완료하려고 할 때 1.7 이후의 경우보다 늦은 경우가 있습니다. –

답변

4

현재 코드는 작업이 이미 완료된 경우에만 이벤트를 후크합니다. 모든 명령에 충돌 이벤트를 연결하려면 병합을 호출하기 전에

client.Conflict += new EventHandler<SvnConflictEventArgs>(args_Conflict); 

을 사용해야합니다.

그러나 client.Merge()에 전달한 SvnMergeArgs에서 이벤트를 연결할 수도 있습니다.