2017-12-04 54 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); 
      } 

を私が気づいたこと:ディレクトリは大文字にして書かれたが、エラーメッセージは下例を示しています。

編集: エラーメッセージ(ログ): VictorSvnCore.DL.SvnCommitException:コミット中のエラー: 'D:\ TestManagerの\のSysData \システム' が追加に予定されていますが、---> SharpSvn.SvnWorkingCopyPathNotFoundExceptionが欠落しています:コミットが失敗しました(詳細は次を参照してください):---> SharpSvn.SvnWorkingCopyPathNotFoundException: 'D:\ Test \ System'は追加予定ですが、欠落しています ---内部例外スタックトレースの終了--- SharpSvn.SvnClientArgs .HandleResult(SvnClientContextクライアント、SvnExceptionエラー、オブジェクトターゲット) SharpSvn.SvnClientArgs.HandleResult(SvnClientContextクライアント、svn_error_t *エラー、オブジェクトターゲット) SharpSvn.SvnClient.Commit(ICollection 1 paths, SvnCommitArgs args, SvnCommitResult& result) at VictorSvnCore.DL.SvnClientFacade.Commit(IReadOnlyCollection 1 itemPaths、Strin g logMessage、SvnDepth depth)

+0

正確なパスを使用して、これらの問題を解決しました。https://stackoverflow.com/a/326153/3809520 – royalTS

答えて

1

SharpSvnは大文字と小文字を区別するため、正確なパス(ファイルシステムと同じ)を使用する必要があります。私は正確なパスを取得することができますthis answerで私の問題を解決しました。別の可能性はSvnToolsクラスのGetTruePath()メソッドでSharpSvnである可能性があります。

関連する問題