mirror of
https://github.com/kennethreitz-archive/gitx.git
synced 2026-06-05 15:30:18 +00:00
66 lines
1.8 KiB
Objective-C
66 lines
1.8 KiB
Objective-C
//
|
|
// PBDiffWindowController.m
|
|
// GitX
|
|
//
|
|
// Created by Pieter de Bie on 13-10-08.
|
|
// Copyright 2008 Pieter de Bie. All rights reserved.
|
|
//
|
|
|
|
#import "PBDiffWindowController.h"
|
|
#import "PBGitRepository.h"
|
|
#import "PBGitCommit.h"
|
|
#import "PBGitDefaults.h"
|
|
#import "GLFileView.h"
|
|
|
|
|
|
@implementation PBDiffWindowController
|
|
@synthesize diff;
|
|
|
|
- (id) initWithDiff:(NSString *)aDiff
|
|
{
|
|
if (![super initWithWindowNibName:@"PBDiffWindow"])
|
|
return nil;
|
|
|
|
diff = aDiff;
|
|
|
|
return self;
|
|
}
|
|
|
|
|
|
+ (void) showDiffWindowWithFiles:(NSArray *)filePaths fromCommit:(PBGitCommit *)startCommit diffCommit:(PBGitCommit *)diffCommit
|
|
{
|
|
if (!startCommit)
|
|
return;
|
|
|
|
if (!diffCommit)
|
|
diffCommit = [startCommit.repository headCommit];
|
|
|
|
NSString *commitSelector = [NSString stringWithFormat:@"%@..%@", [startCommit realSha], [diffCommit realSha]];
|
|
NSMutableArray *arguments = [NSMutableArray arrayWithObjects:@"diff", @"--no-ext-diff", commitSelector, nil];
|
|
|
|
if (![PBGitDefaults showWhitespaceDifferences])
|
|
[arguments insertObject:@"-w" atIndex:1];
|
|
|
|
if (filePaths) {
|
|
[arguments addObject:@"--"];
|
|
[arguments addObjectsFromArray:filePaths];
|
|
}
|
|
|
|
int retValue;
|
|
NSString *diff = [startCommit.repository outputInWorkdirForArguments:arguments retValue:&retValue];
|
|
if (retValue) {
|
|
DLog(@"diff failed with retValue: %d for command: '%@' output: '%@'", retValue, [arguments componentsJoinedByString:@" "], diff);
|
|
return;
|
|
}
|
|
|
|
diff=[GLFileView parseDiff:diff];
|
|
diff=[diff stringByReplacingOccurrencesOfString:@"{SHA_PREV}" withString:[startCommit realSha]];
|
|
diff=[diff stringByReplacingOccurrencesOfString:@"{SHA}" withString:[diffCommit realSha]];
|
|
|
|
PBDiffWindowController *diffController = [[PBDiffWindowController alloc] initWithDiff:diff];
|
|
[diffController showWindow:nil];
|
|
}
|
|
|
|
|
|
@end
|