Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

GitIndex: Add support for applying patches

  • Loading branch information...
commit 57dc38f58786f194e4cfe990d6bd6be1e4565de9 1 parent 87dfb47
@pieter authored
Showing with 26 additions and 1 deletion.
  1. +1 −1  PBGitIndex.h
  2. +25 −0 PBGitIndex.m
View
2  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
View
25 PBGitIndex.m
@@ -246,6 +246,31 @@ - (BOOL)unstageFiles:(NSArray *)unstageFiles
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];
Please sign in to comment.
Something went wrong with that request. Please try again.