private SessionInfo openSourceRepository(SVNRepository targetRepos) throws SVNException {
String fromURL = targetRepos.getRevisionPropertyValue(0, SVNRevisionProperty.FROM_URL);
String fromUUID = targetRepos.getRevisionPropertyValue(0, SVNRevisionProperty.FROM_UUID);
String lastMergedRev = targetRepos.getRevisionPropertyValue(0, SVNRevisionProperty.LAST_MERGED_REVISION);
if (fromURL == null || fromUUID == null || lastMergedRev == null) {
SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.IO_ERROR, "Destination repository has not been initialized");
SVNErrorManager.error(err);
}
SVNURL srcURL = SVNURL.parseURIDecoded(fromURL);
SVNRepository srcRepos = createRepository(srcURL, false);
checkIfRepositoryIsAtRoot(srcRepos, srcURL);
String reposUUID = srcRepos.getRepositoryUUID(true);
if (!fromUUID.equals(reposUUID)) {
SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.IO_ERROR, "UUID of destination repository ({0}) does not match expected UUID ({1})", new String[] {
reposUUID, fromUUID
});
SVNErrorManager.error(err);
}
return new SessionInfo(srcRepos, Long.parseLong(lastMergedRev));
}