ikvmc を使用して svnkit を C# (dll) ライブラリにコンパイルし、プロジェクトへの参照としてリンクしました。
チェックアウトするための概念実証コードを試しました。
public void checkOut(Dictionary<string,List<object>> tokens) {
string url_str = (string) tokens["checkout"][0];
setupLibrary();
java.io.File path = new java.io.File(Path.Combine (Directory.GetCurrentDirectory (), "check_out_folder"));
SVNURL url = SVNURL.parseURIEncoded(url_str);
SVNClientManager cm = SVNClientManager.newInstance();
SVNUpdateClient uc = cm.getUpdateClient();
try {
uc.doCheckout(url, path, SVNRevision.UNDEFINED, SVNRevision.HEAD, true);
}
catch (SVNException e) {
Console.WriteLine(e.getErrorMessage());
}
}
すべてが正常にコンパイルされ、正常に実行されます。ただし、次のエラーがあります。
$ mono subsync.exe -co http://code.djangoproject.com/svn/django/trunk/
svn: Cannot rename file '/home/nubela/Workspace/subsync/subsync/bin/Debug/check_out_folder/.svn/tmp/entries' to '/home/nubela/Workspace/subsync/subsync/bin/Debug/check_out_folder/.svn/entries'
checkout_folder が作成されます。競合するファイルは次のとおりです。
$ ls -alR check_out_folder/ | grep entries
-r--r--r-- 1 nubela nubela 204 2010-02-17 13:07 entries
-r--r--r-- 1 nubela nubela 204 2010-02-17 13:07 entries
checkout_folder の内容は次のとおりです。
[nubela@nubela-netbook check_out_folder]$ ls -al
total 12
drwxr-xr-x 3 nubela nubela 4096 2010-02-17 13:07 ./
drwxrwxr-x 3 nubela nubela 4096 2010-02-17 13:07 ../
drwxr-xr-x 6 nubela nubela 4096 2010-02-17 13:07 .svn/
なぜこれが起こっているのか、どうすればこれを克服できるのでしょうか?
編集:Windowsで動作します(.NETではなくモノで)。Windows には、ファイルに対する煩わしいファイル アクセス許可がないためです。
Edit2: chmod 777 -R checkout_folder が既にあり、2 つのエントリ ファイルを明示的に chmod 777 します。それでもうまくいきません。変。