2017-12-04 12 views
1

SharpSvn을 사용하여 작업 복사본 변경 사항을 프로그래밍 방식으로 저장소에 적용하려고합니다. 불행히도 다음과 같은 오류 메시지가 나타납니다. "커밋 중에 오류가 발생했습니다 : 'SomeFile'이 추가 예정이지만 누락되었습니다." (여기서 파일 경로가 제거되었음을 유의하십시오.) 파일이 존재하며 TortoiseSVN을 사용하여 변경 사항을 적용하면 모든 것이 예상대로 작동합니다. 커밋에 대한sharpsvn 누락 된 항목이있는 커밋 실패

내 코드 :

// use throw on error, since it provides more information why the operation failed 
      // might slow down a little bit, because of the exception handling 
      SvnCommitArgs commitArgs = new SvnCommitArgs() { ThrowOnError = true, Depth = (SharpSvn.SvnDepth)depth, LogMessage = logMessage }; 
      List<Tuple<string, SvnCommitItemChangeType>> committedItems = new List<Tuple<string, SvnCommitItemChangeType>>(); 
      SharpSvn.SvnCommitResult commitResult; 

      using (var svnClient = new SvnClient()) 
      { 
       svnClient.Notify += (sender, notifyEventArgs) => 
       { 
        switch (notifyEventArgs.Action) 
        { 
         case SvnNotifyAction.CommitReplacedWithCopy: 
          committedItems.Add(new Tuple<string, SvnCommitItemChangeType>(notifyEventArgs.FullPath, SvnCommitItemChangeType.ReplacedByCopy)); 
          break; 
         case SvnNotifyAction.CommitAddCopy: 
          committedItems.Add(new Tuple<string, SvnCommitItemChangeType>(notifyEventArgs.FullPath, SvnCommitItemChangeType.CopyAdded)); 
          break; 
         case SvnNotifyAction.CommitReplaced: 
          committedItems.Add(new Tuple<string, SvnCommitItemChangeType>(notifyEventArgs.FullPath, SvnCommitItemChangeType.Replaced)); 
          break; 
         case SvnNotifyAction.CommitDeleted: 
          committedItems.Add(new Tuple<string, SvnCommitItemChangeType>(notifyEventArgs.FullPath, SvnCommitItemChangeType.Deleted)); 
          break; 
         case SvnNotifyAction.CommitAdded: 
          committedItems.Add(new Tuple<string, SvnCommitItemChangeType>(notifyEventArgs.FullPath, SvnCommitItemChangeType.Added)); 
          break; 
         case SvnNotifyAction.CommitModified: 
          committedItems.Add(new Tuple<string, SvnCommitItemChangeType>(notifyEventArgs.FullPath, SvnCommitItemChangeType.Modified)); 
          break; 
        } 
       }; 
       svnClient.Commit(itemPaths.ToList(), commitArgs, out commitResult); 
      } 

내가 발견 한 무엇 : 디렉토리는 UpperCases로 작성되지만 오류 메시지가 낮은 경우를 보여줍니다.

편집 : 중 오류가 커밋 : 'D : \ TestManager를 \ SYSDATA \ 시스템'이 VictorSvnCore.DL.SvnCommitException을 : 오류 메시지 (로그) 또한 예정되어 있지만,없는 ---> SharpSvn.SvnWorkingCopyPathNotFoundException : 커밋 실패 (세부 사항을 따릅니다) : ---> SharpSvn.SvnWorkingCopyPathNotFoundException : 'D : \ Test \ System'이 추가 예정이지만 누락되었습니다. --- 내부 예외 스택 추적 끝 --- SharpSvn.SvnClientArgs .HandleResult (SvnClientContext 클라이언트 SvnException 에러 오브젝트 대상)에서 SharpSvn.SvnClientArgs.HandleResult (SvnClientContext 클라이언트 svn_error_t * 에러 오브젝트 대상) SharpSvn.SvnClient.Commit에서 (1 paths, SvnCommitArgs args, SvnCommitResult& result) at VictorSvnCore.DL.SvnClientFacade.Commit(IReadOnlyCollection ICollection은 1 itemPaths, Strin g logMessage, SvnDepth depth)

+0

정확한 경로를 사용하여 이러한 문제를 해결했습니다. https://stackoverflow.com/a/326153/3809520 – royalTS

답변

1

SharpSvn은 대소 문자를 구분하므로 정확한 경로 (파일 시스템에서와 같이)를 사용해야합니다. 정확한 경로를 검색 할 수 있도록 this answer 내 문제를 해결했습니다. 또 다른 가능성은 SvnTools 클래스의 GetTruePath() 메서드가 SharpSvn 인 것일 수 있습니다.