protected void appendAffectedFilesToDescription(Entry change, StringBuilder description) { // see http://issues.jenkins-ci.org/browse/JENKINS-2508 // added additional try .. catch; getAffectedFiles is not supported // by all SCM implementations try { for (AffectedFile affectedFile : change.getAffectedFiles()) { description.append("* "); if(affectedFile.getEditType() != null) description.append("(").append(affectedFile.getEditType().getName()).append(") "); if(affectedFile.getPath() != null) description.append(affectedFile.getPath()); description.append("\n"); } } catch (UnsupportedOperationException e) { LOGGER.warning("Unsupported SCM operation 'getAffectedFiles'. Fall back to getAffectedPaths."); for (String affectedPath : change.getAffectedPaths()) { description.append("* ").append(affectedPath).append("\n"); } } }
for (AffectedFile affectedFile : change.getAffectedFiles()) { scmChange.append( "* " ).append( affectedFile.getPath() ).append( "\n" );
String getChanges(AbstractBuild r) { if (!r.hasChangeSetComputed()) { logger.info("No change set computed..."); return null; } ChangeLogSet changeSet = r.getChangeSet(); List<Entry> entries = new LinkedList<Entry>(); Set<AffectedFile> files = new HashSet<AffectedFile>(); for (Object o : changeSet.getItems()) { Entry entry = (Entry) o; logger.info("Entry " + o); entries.add(entry); files.addAll(entry.getAffectedFiles()); } if (entries.isEmpty()) { logger.info("Empty change..."); return null; } Set<String> authors = new HashSet<String>(); for (Entry entry : entries) { authors.add(entry.getAuthor().getDisplayName()); } MessageBuilder message = new MessageBuilder(notifier, r); message.append("Started by changes from "); message.append(StringUtils.join(authors, ", ")); message.append(" ("); message.append(files.size()); message.append(" file(s) changed)"); return message.appendOpenLink().toString(); }
/** * {@inheritDoc} */ @SuppressWarnings("unchecked") @Override public ChangeLog convertTo(ChangeLogSet source, ChangeLog destination) { ChangeLog changeLog = new ChangeLog(); for (hudson.scm.ChangeLogSet.Entry entry : (ChangeLogSet<? extends hudson.scm.ChangeLogSet.Entry>) source) { final Entry newEntry = new Entry(entry.getAuthor().getFullName(), entry.getMsg()); try { // Lets try to convert the affected files for (hudson.scm.ChangeLogSet.AffectedFile file : entry.getAffectedFiles()) { newEntry.getAffectedFiles().add(new AffectedFile(file.getPath(), convertChangeType(file.getEditType()))); } } catch (Exception e) { // Oke this ChangeLogSet entry doesn't implement the affected files method. Default to the affected // paths implementation for (String path : entry.getAffectedPaths()) { newEntry.getAffectedFiles().add(new AffectedFile(path, ChangeType.UNKNOWN)); } } changeLog.add(newEntry); } return changeLog; }
public ChangeEntryDTO convert(final ChangeLogSet.Entry source) { assert source != null; log.trace("Converting: {}", source); ChangeEntryDTO target = new ChangeEntryDTO(); // TODO: See if we need to pass both raw and annotated messages back? // target.setMessage(source.getMsg()); // FIXME: need to html-decode? target.setMessage(source.getMsgAnnotated()); target.setAuthor(userx.convert(source.getAuthor())); for (String path : source.getAffectedPaths()) { target.getPaths().add(path); } try { for (ChangeLogSet.AffectedFile file : source.getAffectedFiles()) { target.getFiles().add(convert(file)); } } catch (UnsupportedOperationException e) { // scm does not support getAffectedFiles() } return target; }