/** Test method for {@link svn.client.SVNClient#doCheckOut(java.util.Date)}. */ @Test public void testGetWCInfo() { try { SVNWCClient wcCln = svnCln.getSVNWCClient(); SVNInfo svnInfo = wcCln.doInfo(new File(this.wcPath), SVNRevision.HEAD); String lastCommitter = svnInfo.getAuthor(); assertEquals("thach", lastCommitter); Date lastDateCommit = svnInfo.getCommittedDate(); LOG.debug("lastDateCommit=" + lastDateCommit); assertNotNull(lastDateCommit); long lastRev = svnInfo.getRevision().getNumber(); assertEquals(99, lastRev); // Get SVNUrl LOG.debug("getChangelistName=" + svnInfo.getChangelistName()); String svnUrl = svnInfo.getRepositoryRootURL().toDecodedString(); assertEquals("http://svn.mkss.vn/svnobserver", svnUrl); analyzeFolder(new File(wcPath)); } catch (SVNException ex) { ex.printStackTrace(); fail(ex.getMessage()); } }
private void analyzeFolder(File file) { try { LOG.debug("File:" + file.getPath()); SVNInfo svnInfo = svnCln.getInfo(file); String lastCommitter = svnInfo.getAuthor(); Date lastDateCommit = svnInfo.getCommittedDate(); LOG.debug("lastDateCommit=" + lastDateCommit); long lastRev = svnInfo.getRevision().getNumber(); assertEquals(99, lastRev); // Get SVNUrl LOG.debug("getChangelistName=" + svnInfo.getChangelistName()); String svnUrl = svnInfo.getRepositoryRootURL().toDecodedString(); assertEquals("http://svn.mkss.vn/svnobserver", svnUrl); scanFolder(new File(wcPath)); } catch (SVNException ex) { // TODO Auto-generated catch block ex.printStackTrace(); } }
private void collectLogEntries( final ProgressIndicator indicator, FilePath file, VcsException[] exception, final Consumer<VcsFileRevision> result, final Ref<Boolean> supports15Ref) throws SVNException, VcsException { SVNWCClient wcClient = myVcs.createWCClient(); SVNInfo info = wcClient.doInfo(new File(file.getIOFile().getAbsolutePath()), SVNRevision.UNDEFINED); wcClient.setEventHandler( new ISVNEventHandler() { public void handleEvent(SVNEvent event, double progress) throws SVNException {} public void checkCancelled() throws SVNCancelException { indicator.checkCanceled(); } }); if (info == null || info.getRepositoryRootURL() == null) { exception[0] = new VcsException("File ''{0}'' is not under version control" + file.getIOFile()); return; } final String url = info.getURL() == null ? null : info.getURL().toString(); String relativeUrl = url; final SVNURL repoRootURL = info.getRepositoryRootURL(); final String root = repoRootURL.toString(); if (url != null && url.startsWith(root)) { relativeUrl = url.substring(root.length()); } if (indicator != null) { indicator.setText2(SvnBundle.message("progress.text2.changes.establishing.connection", url)); } final SVNRevision pegRevision = info.getRevision(); SVNLogClient client = myVcs.createLogClient(); final boolean supports15 = SvnUtil.checkRepositoryVersion15(myVcs, url); supports15Ref.set(supports15); client.doLog( new File[] {new File(file.getIOFile().getAbsolutePath())}, SVNRevision.HEAD, SVNRevision.create(1), SVNRevision.UNDEFINED, false, true, supports15, 0, null, new MyLogEntryHandler( myVcs, url, pegRevision, relativeUrl, result, repoRootURL, file.getCharset())); }
@Override public SVNRevision getRevision() { final SVNRevision revision = super.getRevision(); if (revision != null && revision.isValid()) return revision; final SVNStatusType status = getContentsStatus(); if (SVNStatusType.STATUS_NONE.equals(status) || SVNStatusType.STATUS_UNVERSIONED.equals(status) || SVNStatusType.STATUS_ADDED.equals(status)) return revision; final SVNInfo info = initInfo(); return info == null ? revision : info.getRevision(); }
@Test public void testGetInfo2() { DefaultSVNOptions options = SVNWCUtil.createDefaultOptions(true); SVNClientManager clientManager = SVNClientManager.newInstance(options, "", ""); SVNWCClient wcClient = clientManager.getWCClient(); /* * For using over http:// and https:// */ DAVRepositoryFactory.setup(); // Create configuration file in current folder File configFile = new File(".rockysvn"); String username = "******"; String password = "******"; ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(configFile, username, password); // String url = "https://open-ones.googlecode.com/svn/trunk/ProjectList/RockySVN"; String url = "https://hcm-svn.fsoft.fpt.vn/svn/F15-HCAM/trunk"; SVNRevision revision = SVNRevision.HEAD; File path = new File("D:/Project/MyProject/Open-Ones/RockySVN"); try { SVNRepository repository = SVNRepositoryFactory.create(SVNURL.parseURIDecoded(url)); repository.setAuthenticationManager(authManager); repository.getDatedRevision(new Date()); long latestRev = repository.getLatestRevision(); assertEquals(634, latestRev); SVNInfo svnInfo = wcClient.doInfo(path, revision); assertEquals("ThachLN", svnInfo.getAuthor()); assertEquals(123, svnInfo.getRevision().getID()); assertEquals(new Date(), svnInfo.getRevision().getDate()); } catch (SVNException ex) { ex.printStackTrace(); fail(ex.getMessage()); } }
@Override protected void load() { String relativeUrl = myUrl; final SVNURL repoRootURL = myInfo.getRepositoryRootURL(); final String root = repoRootURL.toString(); if (myUrl != null && myUrl.startsWith(root)) { relativeUrl = myUrl.substring(root.length()); } if (myPI != null) { myPI.setText2(SvnBundle.message("progress.text2.changes.establishing.connection", myUrl)); } final SVNRevision pegRevision = myInfo.getRevision(); SVNLogClient client = myVcs.createLogClient(); try { client.doLog( new File[] {new File(myFile.getIOFile().getAbsolutePath())}, SVNRevision.HEAD, SVNRevision.create(1), SVNRevision.UNDEFINED, false, true, mySupport15, 0, null, new MyLogEntryHandler( myVcs, myUrl, pegRevision, relativeUrl, myConsumer, repoRootURL, myFile.getCharset())); } catch (SVNCancelException e) { // } catch (SVNException e) { myException = new VcsException(e); } catch (VcsException e) { myException = e; } }
@Nullable private VcsRevisionNumber getCurrentRevision(FilePath file) { if (file.isNonLocal()) { // technically, it does not make sense, since there's no "current" revision for non-local // history (if look how it's used) // but ok, lets keep it for now return new SvnRevisionNumber(SVNRevision.HEAD); } try { SVNWCClient wcClient = myVcs.createWCClient(); SVNInfo info = wcClient.doInfo(new File(file.getPath()).getAbsoluteFile(), SVNRevision.UNDEFINED); if (info != null) { return new SvnRevisionNumber(info.getRevision()); } else { return null; } } catch (SVNException e) { return null; } }
@Test public void testMixedWorkingRevisions() throws Exception { enableSilentOperation(VcsConfiguration.StandardConfirmation.ADD); enableSilentOperation(VcsConfiguration.StandardConfirmation.REMOVE); final File trunk = new File(myTempDirFixture.getTempDirPath(), "trunk"); trunk.mkdir(); Thread.sleep(100); final File folder = new File(trunk, "folder"); folder.mkdir(); Thread.sleep(100); final File f1 = new File(folder, "f1.txt"); f1.createNewFile(); new File(folder, "f2.txt").createNewFile(); Thread.sleep(100); verify(runSvn("import", "-m", "test", trunk.getAbsolutePath(), myRepoUrl + "/trunk")); verify(runSvn("copy", "-m", "test", myRepoUrl + "/trunk", myRepoUrl + "/branch")); FileUtil.delete(trunk); verify(runSvn("co", myRepoUrl + "/trunk", trunk.getAbsolutePath())); verify(runSvn("co", myRepoUrl + "/branch", myBranchVcsRoot.getAbsolutePath())); // rev 3 final VirtualFile vf = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(f1); editFileInCommand(myProject, vf, "123\n456\n123"); Thread.sleep(100); verify(runSvn("ci", "-m", "test", trunk.getAbsolutePath())); // rev 4: record non inheritable merge verify(runSvn("propset", "svn:mergeinfo", "/trunk:3", myBranchVcsRoot.getAbsolutePath())); Thread.sleep(100); verify(runSvn("ci", "-m", "test", myBranchVcsRoot.getAbsolutePath())); Thread.sleep(100); // ! no update! final SvnVcs vcs = SvnVcs.getInstance(myProject); final SVNWCClient wcClient = vcs.createWCClient(); final SVNPropertyData data = wcClient.doGetProperty( myBranchVcsRoot, "svn:mergeinfo", SVNRevision.UNDEFINED, SVNRevision.WORKING); assert data != null && data.getValue() != null && "/trunk:3".equals(data.getValue().getString()); final SVNInfo f1info = wcClient.doInfo(new File(myBranchVcsRoot, "folder/f1.txt"), SVNRevision.WORKING); assert f1info.getRevision().getNumber() == 2; final CommittedChangesProvider<SvnChangeList, ChangeBrowserSettings> committedChangesProvider = vcs.getCommittedChangesProvider(); final List<SvnChangeList> changeListList = committedChangesProvider.getCommittedChanges( committedChangesProvider.createDefaultSettings(), new SvnRepositoryLocation(myRepoUrl + "/trunk"), 0); final SvnChangeList changeList = changeListList.get(0); final String encodedRepoUrl = SVNURL.parseURIDecoded(myRepoUrl).toString(); final BranchInfo branchInfo = new BranchInfo( vcs, encodedRepoUrl, encodedRepoUrl + "/branch", encodedRepoUrl + "/trunk", encodedRepoUrl + "/trunk", vcs.createWCClient()); SvnMergeInfoCache.MergeCheckResult result = branchInfo.checkList(changeList, myBranchVcsRoot.getAbsolutePath()); assert SvnMergeInfoCache.MergeCheckResult.NOT_MERGED.equals(result); // and after update verify(runSvn("up", myBranchVcsRoot.getAbsolutePath())); Thread.sleep(100); branchInfo.clear(); result = branchInfo.checkList(changeList, myBranchVcsRoot.getAbsolutePath()); assert SvnMergeInfoCache.MergeCheckResult.MERGED.equals(result); }