Skip to content

Commit

Permalink
Prevent a file being shown in 2 different versions after multiple com…
Browse files Browse the repository at this point in the history
…mits
  • Loading branch information
mc1arke committed Sep 7, 2012
1 parent d7a1ee2 commit b188365
Showing 1 changed file with 11 additions and 7 deletions.
18 changes: 11 additions & 7 deletions src/main/java/hudson/scm/CvsLog.java
Expand Up @@ -48,7 +48,7 @@ private static enum Status {

public CvsChangeSet mapCvsLog(final String cvsRoot, final CvsRepositoryLocation location) throws IOException {
final List<CVSChangeLog> changes = new ArrayList<CVSChangeLog>();
final List<CvsFile> files = new ArrayList<CvsFile>();
final Map<String, CvsFile> files = new HashMap<String, CvsFile>();
CVSChangeLogSet.File file = null;
CVSChangeLog change = null;
final Map<String,String> branches = new HashMap<String,String>();
Expand Down Expand Up @@ -105,7 +105,7 @@ public CvsChangeSet mapCvsLog(final String cvsRoot, final CvsRepositoryLocation
}
reader.close();
dispose();
return new CvsChangeSet(files, changes);
return new CvsChangeSet(new ArrayList<CvsFile>(files.values()), changes);

}

Expand Down Expand Up @@ -264,7 +264,7 @@ private Status parseChangeHeader(final String line, final CVSChangeLogSet.File f
*/
private void parsePreviousChangeVersion(final String line, final CVSChangeLogSet.File file, final CVSChangeLog change,
final Map<String, String> branches, final List<CVSChangeLog> changes,
final List<CvsFile> files, final CvsRepositoryLocation location) {
final Map<String, CvsFile> files, final CvsRepositoryLocation location) {
if (!line.startsWith("revision")) {
throw new IllegalStateException("Unexpected line from CVS log: " + line);
}
Expand Down Expand Up @@ -294,7 +294,7 @@ private void parsePreviousChangeVersion(final String line, final CVSChangeLogSet
*/
private Status processComment(final String line, final CVSChangeLogSet.File file, final CVSChangeLog change,
final Status currentStatus, final Map<String, String> branches,
final String previousLine, final List<CVSChangeLog> changes, final List<CvsFile> files,
final String previousLine, final List<CVSChangeLog> changes, final Map<String, CvsFile> files,
final CvsRepositoryLocation location, final String prePreviousLine) {
if (line != null && line.startsWith(FILE_DIVIDER)) {
if (previousLine.equals(CHANGE_DIVIDER)) {
Expand Down Expand Up @@ -372,7 +372,7 @@ private void updateChangeMessage(final CVSChangeLog change, final String line) {
* @param location the CVS Repository location (head/branch/tag) the CVS RLOG was retrieved from
*/
private void saveChange(final CVSChangeLogSet.File file, final CVSChangeLog change, final Map<String, String> branches,
final List<CVSChangeLog> changes, final List<CvsFile> files, final CvsRepositoryLocation location) {
final List<CVSChangeLog> changes, final Map<String, CvsFile> files, final CvsRepositoryLocation location) {

final String branch = getBranchNameForRevision(file.getRevision(), branches);

Expand Down Expand Up @@ -400,8 +400,12 @@ private void saveChange(final CVSChangeLogSet.File file, final CVSChangeLog chan
}
}

final CvsFile cvsFile = new CvsFile(file.getSimpleName(), file.getRevision(), file.isDead());
files.add(cvsFile);
// we only want the first listing of this file since changes are
// sorted in reverse order of when they were made
if (!files.containsKey(file.getFullName())) {
final CvsFile cvsFile = new CvsFile(file.getSimpleName(), file.getRevision(), file.isDead());
files.put(file.getFullName(), cvsFile);
}

if (addChange) {
changes.add(currentChange);
Expand Down

0 comments on commit b188365

Please sign in to comment.