From ba51ae810bd5db60addc873c3ad6fbe97e2834ac Mon Sep 17 00:00:00 2001 From: David Catmull Date: Fri, 17 Jun 2011 13:52:33 -0600 Subject: [PATCH] fix parent handling --- PBWebCommitController.m | 23 +++++++++++++---------- PBWebStashController.m | 2 +- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/PBWebCommitController.m b/PBWebCommitController.m index e442ee6..79fb31f 100644 --- a/PBWebCommitController.m +++ b/PBWebCommitController.m @@ -95,26 +95,29 @@ const NSString *kAuthorKeyDate = @"date"; // In case the commit is a merge, we need to explicity give diff-tree the // list of parents, or else it will yield an empty result. // If it's not a merge, this won't hurt. - NSMutableArray *parentsArray = [NSMutableArray array]; + NSMutableArray *allParents = [NSMutableArray array]; - for (NSDictionary *item in headerItems) { - if ([[item objectForKey:kHeaderKeyName] isEqualToString:@"parent"]) { - [parentsArray addObject:[item objectForKey:kHeaderKeyContent]]; - break; - } - } + for (NSDictionary *item in headerItems) + if ([[item objectForKey:kHeaderKeyName] isEqualToString:@"parent"]) + [allParents addObject:[item objectForKey:kHeaderKeyContent]]; - NSString *parents = [[self chooseDiffParents:parentsArray] componentsJoinedByString:@" "]; + NSArray *parents = [self chooseDiffParents:allParents]; // File Stats NSMutableDictionary *stats = [self parseStats:details]; // File list - NSString *dt = [repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"diff-tree", @"--root", @"-r", @"-C90%", @"-M90%", currentSha, parents, nil]]; + NSMutableArray *args = [NSMutableArray arrayWithObjects:@"diff-tree", @"--root", @"-r", @"-C90%", @"-M90%", nil]; + [args addObjectsFromArray:parents]; + [args addObject:currentSha]; + NSString *dt = [repository outputInWorkdirForArguments:args]; NSString *fileList = [GLFileView parseDiffTree:dt withStats:stats]; // Diffs list - NSString *d = [repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"diff-tree", @"--root", @"--cc", @"-C90%", @"-M90%", parents, currentSha, nil]]; + args = [NSMutableArray arrayWithObjects:@"diff-tree", @"--root", @"--cc", @"-C90%", @"-M90%", nil]; + [args addObjectsFromArray:parents]; + [args addObject:currentSha]; + NSString *d = [repository outputInWorkdirForArguments:args]; NSString *diffs = [GLFileView parseDiff:d]; NSString *html = [NSString stringWithFormat:@"%@%@
%@
",header,fileList,diffs]; diff --git a/PBWebStashController.m b/PBWebStashController.m index ea39534..82bef0f 100644 --- a/PBWebStashController.m +++ b/PBWebStashController.m @@ -21,7 +21,7 @@ - (NSArray*) chooseDiffParents:(NSArray *)parents { - return [NSArray arrayWithObject:[parents objectAtIndex:0]]; + return [NSArray arrayWithObject:[parents lastObject]]; } @end