private Set<String> pathsAffectedByChange(ChangeLogScmRequest scmRequest, Set<ScmFileStatus> statusToInclude, int limit) throws ScmException { Set<String> affected = new LinkedHashSet<>(); ChangeLogScmResult changeLogScmResult = this.manager.changeLog(scmRequest); if (changeLogScmResult.isSuccess()) { List<ChangeSet> changeSets = limit(changeLogScmResult.getChangeLog().getChangeSets(),limit); for (ChangeSet change : changeSets) { List<ChangeFile> files = change.getFiles(); for (final ChangeFile changeFile : files) { if (statusToInclude.contains(changeFile.getAction())) { affected.add(changeFile.getName()); } } } } return affected; }
private Set<String> pathsAffectedByChange(ChangeLogScmRequest scmRequest, Set<ScmFileStatus> statusToInclude, int limit) throws ScmException { Set<String> affected = new LinkedHashSet<>(); ChangeLogScmResult changeLogScmResult = this.manager.changeLog(scmRequest); if (changeLogScmResult.isSuccess()) { List<ChangeSet> changeSets = limit(changeLogScmResult.getChangeLog().getChangeSets(),limit); for (ChangeSet change : changeSets) { List<ChangeFile> files = change.getFiles(); for (final ChangeFile changeFile : files) { if (statusToInclude.contains(changeFile.getAction())) { affected.add(changeFile.getName()); } } } } return affected; }
/** * This method extracts the simple metadata such as revision, lastCommitTimestamp of the commit/hash, author of the commit * from the Changelog available in the SCM repository * @param scmUrl - the SCM url to get the SCM connection * @param workingDir - the Working Copy or Directory of the SCM repo * @return a {@link Map<ExtraManifestKeys,String>} of values extracted form the changelog, with Keys from {@link ExtraManifestKeys} * @throws IOException - any error that might occur while manipulating the SCM Changelog * @throws ScmException - other SCM related exceptions */ public Map<ExtraManifestKeys, String> getChangeLog(String scmUrl, File workingDir) throws IOException, ScmException { Map<ExtraManifestKeys, String> changeLogMap = new HashMap<>(); ScmRepository scmRepository = scmManager.makeScmRepository(scmUrl); ChangeLogScmResult scmResult = scmManager.changeLog(new ChangeLogScmRequest(scmRepository, new ScmFileSet(workingDir, "*"))); if (scmResult.isSuccess()) { List<ChangeSet> changeSetList = scmResult.getChangeLog().getChangeSets(); if (changeSetList != null && !changeSetList.isEmpty()) { //get the latest changelog ChangeSet changeSet = changeSetList.get(0); changeLogMap.put(ExtraManifestKeys.SCM_TYPE, getScmType(scmUrl)); changeLogMap.put(ExtraManifestKeys.SCM_REVISION, changeSet.getRevision()); changeLogMap.put(ExtraManifestKeys.LAST_COMMIT_TIMESTAMP, manifestTimestampFormat(changeSet.getDate())); changeLogMap.put(ExtraManifestKeys.SCM_AUTHOR, changeSet.getAuthor()); } } return changeLogMap; } }
provider.changeLog( getScmRepository(), fileSet, null, null, 0, (ScmBranch) null, null ); assertTrue( firstResult.getProviderMessage() + ": " + firstResult.getCommandLine() + "\n" + firstResult.getCommandOutput(), firstResult.isSuccess() ); assertTrue( secondResult.getProviderMessage(), secondResult.isSuccess() ); assertEquals( firstLogSize + 1, secondResult.getChangeLog().getChangeSets().size() ); assertTrue( thirdResult.getProviderMessage(), thirdResult.isSuccess() ); assertEquals( 1, thirdResult.getChangeLog().getChangeSets().size() ); ChangeSet changeset = thirdResult.getChangeLog().getChangeSets().get( 0 );
provider.changeLog( getScmRepository(), fileSet, null, null, 0, (ScmBranch) null, null ); assertTrue( firstResult.getProviderMessage() + ": " + firstResult.getCommandLine() + "\n" + firstResult.getCommandOutput(), firstResult.isSuccess() ); assertTrue( secondResult.getProviderMessage(), secondResult.isSuccess() ); assertEquals( firstLogSize + 1, secondResult.getChangeLog().getChangeSets().size() ); assertTrue( thirdResult.getProviderMessage(), thirdResult.isSuccess() ); assertEquals( 1, thirdResult.getChangeLog().getChangeSets().size() ); ChangeSet changeset = thirdResult.getChangeLog().getChangeSets().get( 0 );
if ( changeLogResult.isSuccess() )
if ( changeLogResult.isSuccess() )
public void execute( Map context ) throws Exception { Project project = ContinuumBuildAgentUtil.getProject( context ); try { File workingDirectory = buildAgentConfigurationService.getWorkingDirectory( project.getId() ); ContinuumScmConfiguration config = createScmConfiguration( project, workingDirectory ); config.setLatestUpdateDate( ContinuumBuildAgentUtil.getLatestUpdateDate( context ) ); getLogger().info( "Getting changeLog of project: " + project.getName() ); ChangeLogScmResult changeLogResult = scm.changeLog( config ); if ( !changeLogResult.isSuccess() ) { getLogger().warn( "Error getting change log of project " + project.getName() ); getLogger().warn( "Command Output: " + changeLogResult.getCommandOutput() ); getLogger().warn( "Provider Message: " + changeLogResult.getProviderMessage() ); } context.put( ContinuumBuildAgentUtil.KEY_LATEST_UPDATE_DATE, getLatestUpdateDate( changeLogResult ) ); } catch ( ScmException e ) { context.put( ContinuumBuildAgentUtil.KEY_LATEST_UPDATE_DATE, null ); getLogger().error( e.getMessage(), e ); } }
@SuppressWarnings( "deprecation" ) private void testChangeLog( Date startDate, Date endDate, int changeLogSize, String branch ) throws Exception { if ( !isSystemCmd( CvsScmTestUtils.CVS_COMMAND_LINE ) ) { ScmTestCase.printSystemCmdUnavail( CvsScmTestUtils.CVS_COMMAND_LINE, getName() ); return; } ScmManager scmManager = getScmManager(); CvsScmTestUtils.executeCVS( getWorkingDirectory(), "-f -d " + getTestFile( "src/test/repository/" ) + " co " + getModule() ); ChangeLogScmResult changeLogResult = scmManager.getProviderByRepository( getScmRepository() ).changeLog( getScmRepository(), getScmFileSet(), startDate, endDate, 0, branch ); if ( !changeLogResult.isSuccess() ) { fail( changeLogResult.getProviderMessage() + "\n" + changeLogResult.getCommandOutput() ); } ChangeLogSet changeLogSet = changeLogResult.getChangeLog(); assertNotNull( changeLogSet ); assertEquals( changeLogSize, changeLogSet.getChangeSets().size() ); } }