これは奇妙なものです。私はあなたが助けることを願っていますJavaでSVNKitを使用してdoLog()を呼び出すと、不思議なURL
私はセットアップし、SVNKitでdoLog()を呼び出そうとしています。セットアップは少し複雑で、私はいくつかのパラメータについてはわかりません。エラーは(私が思う)いくつかの "未知の"文字がSVN URLに挿入されている可能性があります。ここで少し消毒コードは次のとおりです。ここで
// Auth manager
String userName = "ksnortum";
String password = "[email protected]";
ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(userName, password);
// Options
boolean readonly = true;
ISVNOptions options = SVNWCUtil.createDefaultOptions(readonly);
// Get log client
SVNLogClient logClient = new SVNLogClient(authManager, options);
// SVN URL parameters
String protocol = "https";
String userInfo = userName;
String host = "svn.hostname.com";
int port = 8443;
String path = "";
boolean uriEncoded = true;
SVNURL url = null;
// Create URL
try {
url = SVNURL.create(protocol, userInfo, host, port, path, uriEncoded);
}
catch (SVNException e) {
System.out.println("Can't create URL: " + e.toString());
}
System.out.println("URL: " + url.toString()); // debug
// Parameters for doLog()
String[] paths = { "svn/Training/PDX_Cycle_2_2011" };
SVNRevision pegRevision = SVNRevision.create(0l);
SVNRevision startRevision = SVNRevision.create(0l);
SVNRevision endRevision = SVNRevision.create(-1l);
boolean stopOnCopy = false;
boolean discoverChangedPaths = true;
long limit = 9999l;
// Log event handler
ISVNLogEntryHandler handler = new ISVNLogEntryHandler() {
/**
* This method will process when doLog() is done
*/
@Override
public void handleLogEntry(SVNLogEntry logEntry) throws SVNException {
System.out.println("Author: " + logEntry.getAuthor());
System.out.println("Date: " + logEntry.getDate());
System.out.println("Message: " + logEntry.getMessage());
System.out.println("Revision: " + logEntry.getRevision());
}
};
// Do log
try {
logClient.doLog(url, paths, pegRevision, startRevision, endRevision, stopOnCopy, discoverChangedPaths, limit, handler);
}
catch (SVNException e) {
System.out.println("Error in doLog() ");
e.printStackTrace();
}
は、デバッグおよびスタックトレース情報です:
URL: https://[email protected]:8443
org.tmatesoft.svn.core.SVNException: svn: '/svn/Training/!svn/bc/0/PDX_Cycle_2_2011' path not found: 404 Not Found (https://[email protected]:8443)
at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64)
at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)
at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.logImpl(DAVRepository.java:986)
at org.tmatesoft.svn.core.io.SVNRepository.log(SVNRepository.java:1034)
at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:1028)
at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:895)
at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:827)
at org.tmatesoft.svn.examples.repository.LogEntry.start(LogEntry.java:93)
at org.tmatesoft.svn.examples.repository.LogEntry.main(LogEntry.java:27)
Error in doLog()
問題がsvn: '/svn/Training/!svn/bc/0/PDX_Cycle_2_2011' path not found
です。私はなぜ!svn/bc/0
がパス名にあるのかわかりません。
編集:
私はリビジョンで良く行うために必要なように見えます。私はこの行を変更しました:
SVNRevision endRevision = SVNRevision.HEAD;
これは多くの助けになりました。
String[] paths = { "" };
を...とURLにそれらを置く:また、私はdoLog()のparamsの外にパスを取っ
String path = "svn/Training/PDX_Cycle_2_2011";
リビジョンが最大の問題だったようです。コメントしてくれてありがとう。
パスワードの「@」記号がこの原因で問題を引き起こしていると思いますか? URI(http://en.wikipedia.org/wiki/URI_scheme)ではなく、ユーザー名とパスワードが異なる方法でSVNKitのAuthenticationManagerを使用するように変更できますか? – khmarbaise
!svn/bc/OKはDAVリポジトリでOKです。しかし、 "0"はリビジョン0を意味します:問題は、ペグリビジョン0を使用している、つまりリビジョン0の "url"にアクセスしたいということです。 "url"がリポジトリルートでないと失敗します。 – mstrap