@Override public Revision fetchLatestRevisionNumber() throws ScmException { if (LOG.isDebugEnabled()) { LOG.debug( " Fetching latest revision number.\n " + this.scmConnectionInfo + "\n " + this.scmAccessInfo); } final ScmRepository repository = scmConnectionInfo.createRepository(scmManager); final ScmVersion remoteVersion = scmConnectionInfo.getRemoteVersion(); if (remoteVersion != null && "git".equals(repository.getProvider())) { final Revision revision = scmAccessInfo.fetchRemoteGitVersion(repository, remoteVersion); return revision; } else { final ScmProvider provider = createScmProvider(repository); final ChangeLogScmResult result = scmAccessInfo.fetchChangeLog(repository, provider); if (result != null) { final ChangeLogSet changeLogSet = result.getChangeLog(); final Revision revision = findEndVersion(changeLogSet); if (LOG.isDebugEnabled()) { LOG.debug(" Found revision '" + revision + "'."); } return revision; } else if (LOG.isDebugEnabled()) { LOG.debug(" No revision information found."); } return null; } }
@Override public LocallyModifiedInfo containsModifications(final ScmFileSet fileSet) throws ScmException { if (LOG.isDebugEnabled()) { LOG.debug( " Fetching modification information.\n " + this.scmConnectionInfo + "\n " + this.scmAccessInfo); } try { final ScmRepository repository = scmConnectionInfo.createRepository(scmManager); final ScmProvider provider = createScmProvider(repository); final ScmResultWrapper result = execute(fileSet, repository, provider); if (result.isSuccess()) { return createLocallyModifiedInfo(result); } else { final String message = result.toString(); if (LOG.isDebugEnabled()) { LOG.debug(message); } throw new ScmException(message); } } catch (final org.apache.maven.scm.ScmException e) { throw new ScmException(e); } }
private ScmResultWrapper execute( final ScmFileSet fileSet, final ScmRepository repository, final ScmProvider provider) throws org.apache.maven.scm.ScmException { final ScmVersion remoteVersion = scmConnectionInfo.getRemoteVersion(); final ScmResultWrapper result; if (remoteVersion != null) { final ScmVersion localVersion = null; result = createScmDiffResultWrapper( provider.diff(repository, fileSet, remoteVersion, localVersion)); } else { result = createScmStatusResultWrapper(provider.status(repository, fileSet)); } return result; }