diff --git a/PBGitIndex.h b/PBGitIndex.h index 261b226..a358f5a 100644 --- a/PBGitIndex.h +++ b/PBGitIndex.h @@ -48,7 +48,7 @@ - (BOOL)unstageFiles:(NSArray *)unstageFiles; // Intra-file changes -//- (void)applyPatch:(NSString *)hunk stage:(BOOL)stage reverse:(BOOL)reverse; +- (BOOL)applyPatch:(NSString *)hunk stage:(BOOL)stage reverse:(BOOL)reverse; - (NSString *)diffForFile:(PBChangedFile *)file staged:(BOOL)staged contextLines:(NSUInteger)context; @end diff --git a/PBGitIndex.m b/PBGitIndex.m index 5097158..717ceff 100644 --- a/PBGitIndex.m +++ b/PBGitIndex.m @@ -246,6 +246,31 @@ return YES; } +- (BOOL)applyPatch:(NSString *)hunk stage:(BOOL)stage reverse:(BOOL)reverse; +{ + NSMutableArray *array = [NSMutableArray arrayWithObjects:@"apply", nil]; + if (stage) + [array addObject:@"--cached"]; + if (reverse) + [array addObject:@"--reverse"]; + + int ret = 1; + NSString *error = [repository outputForArguments:array + inputString:hunk + retValue:&ret]; + + // FIXME: show this error, rather than just logging it + if (ret) { + NSLog(@"Error: %@", error); + return NO; + } + + // TODO: Try to be smarter about what to refresh + [self refresh]; + return YES; +} + + - (NSString *)diffForFile:(PBChangedFile *)file staged:(BOOL)staged contextLines:(NSUInteger)context { NSString *parameter = [NSString stringWithFormat:@"-U%u", context];