5

SharpSVNを使用して、ディレクトリの下にあるすべてのバージョン管理されていないファイルをSVNに追加したいと思います。

最初にコマンドラインで通常のsvnコマンドを試しました。

C:\temp\CheckoutDir> svn status -v

すべてのサブディレクトリ、すでにチェックインされているすべてのファイル、「?」というラベルの付いたいくつかの新しいファイルが表示されますが、「L」ロックの表示はありません

C:\temp\CheckoutDir> svn add . --force

これにより、すでにバージョン管理下にあるサブディレクトリ内のすべての新しいファイルが追加されます。

SharpSVNを使用して同じことをしたいと思います。同じディレクトリにいくつかの追加ファイルをコピーして、次のコードを実行します。

...
using ( SharpSvn.SvnClient svn = new SvnClient() )
{
    SvnAddArgs saa = new SvnAddArgs();
    saa.Force = true;
    saa.Depth = SvnDepth.Infinity;
    try
    {
        svn.Add(@"C:\temp\CheckoutDir\." , saa);
    }
    catch (SvnException exc)
    {
        Log(@"SVN Exception: " + exc.Message + " - " + exc.File);
    }
}

ただし、SvnExceptionが発生します。

  • SvnException.Message:作業コピー'C:\ temp\CheckoutDir'がロックされています
  • SvnException.File:.. \ .. \ .. \ subversion \ libsvn_wc \ lock.c "

私のコードでは他のsvnclientインスタンスが実行されていません。また、呼び出してみました

svn.cleanup()

追加の直前ですが、役に立ちません。

ドキュメントはかなり曖昧なので;)、ここの誰かが答えを知っているかどうか疑問に思いました。

前もって感謝します!

1月

4

3 に答える 3

5

この私のツールhttp://svncompletesync.codeplex.com/を使用するか、サンプルとして使用してください。それはまさにあなたが必要とすることをします。

于 2010-06-07T23:00:11.867 に答える
1

パスの末尾に「,」を付けるべきではないと思います。試す:

svn.Add(@"C:\temp\CheckoutDir" , saa);

表示されている動作はバグである可能性があるため、SharpSvn ディスカッション ボード/メーリング リストでこれについてさらに議論してください。

于 2009-06-08T22:05:29.053 に答える