@Nullable public SVNURL getUrlForFile(final File file) { final RootUrlInfo rootUrlInfo = getWcRootForFilePath(file); if (rootUrlInfo == null) { return null; } final String absolutePath = file.getAbsolutePath(); final String rootAbsPath = rootUrlInfo.getIoFile().getAbsolutePath(); if (absolutePath.length() < rootAbsPath.length()) { // remove last separator from etalon name if (absolutePath.equals(rootAbsPath.substring(0, rootAbsPath.length() - 1))) { return rootUrlInfo.getAbsoluteUrlAsUrl(); } return null; } final String relativePath = absolutePath.substring(rootAbsPath.length()); try { return rootUrlInfo .getAbsoluteUrlAsUrl() .appendPath(FileUtil.toSystemIndependentName(relativePath), true); } catch (SVNException e) { LOG.info(e); return null; } }
/** * Returns real working copies roots - if there is <Project Root> -> Subversion setting, and there * is one working copy, will return one root */ public List<WCInfo> getAllWcInfos() { final SvnFileUrlMapping urlMapping = getSvnFileUrlMapping(); final List<RootUrlInfo> infoList = urlMapping.getAllWcInfos(); final List<WCInfo> infos = new ArrayList<WCInfo>(); for (RootUrlInfo info : infoList) { final File file = info.getIoFile(); infos.add( new WCInfo( file.getAbsolutePath(), info.getAbsoluteUrlAsUrl(), info.getFormat(), info.getRepositoryUrl(), SvnUtil.isWorkingCopyRoot(file), info.getType(), SvnUtil.getDepth(this, file))); } return infos; }