2012-03-26 14 views
2

問題がSVNにあります。SVN Console .NETエラー

私はいくつかのことを自動化するためのアプリケーションを.NET 4フォームで作成しています。問題の1つはSVNをチェックアウトしているようです。 「:e720002:書き込みエラー:指定されたファイルを見つけることができませんSVN」ここ

 String RepositoryLocation = GetRepositoryPath(); 
     String ProjectLocation = GetProjectPath(); 

     RepositoryLocation = "\"file:///" + RepositoryLocation + "\""; 
     ProjectLocation = "\"" + ProjectLocation + "\""; 

     System.Diagnostics.Process p = new System.Diagnostics.Process(); 
     System.Diagnostics.ProcessStartInfo ps = new ProcessStartInfo(); 

     ps.FileName = _svnDirectory + "svn.exe"; 
     ps.Arguments = @"checkout -r HEAD " + RepositoryLocation + " " + ProjectLocation; 
     ps.UseShellExecute = false; 
     ps.RedirectStandardError = true; 

     p.StartInfo = ps; 
     p.Start(); 

     if (waitForExit == true) 
     { 
      p.WaitForExit(); 
     } 

     // test for an error 
     String error = p.StandardError.ReadToEnd(); 

     p.Close(); 

これはエラーメッセージを出してくれる。

プロジェクトフォルダに.svn隠しフォルダが作成されているようですが、エラーはまだ表示されます。

このSVNのインストールは、TortoiseSVNクライアントとともにインストールされました。

SVNバージョン1.7.4 TortoiseSVNのバージョン1.7.6(おそらく必要ない)

UPDATE:引数にセットで

コマンドは次のとおりです。

"チェックアウト\" ファイル:///テストプロジェクト/テストプロジェクト/テストプロジェクト/テストプロジェクト/ \ ""

(引用符をエスケープすると、\ "C:/ test/testクライアント/リポジトリ/ディレクトリパス)

+0

コンソールsvn-clientでresultsコマンドを試しましたか? –

+0

これは完璧に動作します。これはおそらく引用問題などと信じていますか?または、おそらく権限の問題? –

+0

ほとんどのアクセス許可はありません –

答えて

2

私はまったく同じ問題を抱えています。私がしたことは、svnからのエラーメッセージを無視し、最後に 'svn status'コマンドを実行することです。空文字列を返す場合は、すべてが正常であることを意味します。そうでなければ、本当の問題があります。

+0

それは回避策ですそれは問題を修正する - ありがとう:)私は今、エラーメッセージを無視している。 –

1

以下の前提で正確なコードを実行しました。それは正常に働いた。正確なディレクトリにリポジトリを作成し、指定したディレクトリに作業コピーを作成しました。

svn updateを実行して、チェックアウトが良好であることを確認しました。その出力も以下です。

以下のすべてのものが、あなたがやっていること/戻ってきたものであることを確認してください。何かが違うなら、それはおそらく犯人です。すべてが同一であれば、権限の問題が発生している可能性があります。管理者としてVisual Studioを実行してUACを有効にしている場合は、管理者としてプロセスを実行できますか?

SVN更新

C:\test\test client\test project>svn update 
Updating '.': 
At revision 0. 

フォルダ構造

C:\ 
    - test 
    - test client 
     - test project 
     - repositories 
     - test project 

コード

private const string _svnDirectory = @"C:\Program Files\TortoiseSVN\bin\"; 

private static String GetRepositoryPath() 
{ 
    return @"C:/test/test client/repositories/test project/"; 
} 

private static String GetProjectPath() 
{ 
    return @"C:/test/test client/test project/"; 
} 
+0

Chrisさん、ありがとうございます。私とまったく同じですが、まだエラーが表示されています。 )(p.startた後、この以前のが、次のコードを挙げ; {; p.WaitForExit()}エラー 文字列エラーの //テスト= P IF(waitForExit == TRUE) であります.StandardError.ReadToEnd(); p.Close(); ここでエラーはどこからエラーを読み取っていますか。 私は元の質問をこれで更新しました。 –

+0

ラット。私はそれが何であるか分かりませんが、あなたのコードを複製し、同じReadToEnd()を追加しました。私の最後にはエラーが出なかったので、システム固有のものでなければなりません。 SVN固有ではありません。がんばろう! –

+0

Chrisさん、ありがとうございます。私のシステム設定はWindows 7で、私はこのマシンの管理者です:(昨日は管理者として実行していたVisual Studioを使って試してみましたが) –

1

問題は、WであってもよいですあなたはStandardErrorを読んでいます。 p.WaitForExit();MSDN

を参照してくださいする前にあなたがp.StandardError.ReadToEnd();への呼び出しを配置する必要があります。また、私は外部のコマンドラインクライアントを使用していないSVNのC#インタフェースのための優れたSharpSVNライブラリをお勧めします。

+0

+1。コマンドラインクライアントではあるがライブラリははるかに優れている(少なくともASCII以外のファイル名をbraindeadで扱うため、コマンドラインクライアントを頻繁に使用することはできない)。 – Joey

+0

WaitForExitの前にそれを持っていて、私はそれをSharpSVNに移すことを正当化することはできませんが、私はちょうどエラーを無視するかもしれません。他のアイデア::) –