PBGitRepository: add a handle for in-worktree-commands

This commit is contained in:
Pieter de Bie
2008-09-22 22:49:59 +02:00
parent 53dfea545e
commit 4ebe4b4aa9
3 changed files with 26 additions and 0 deletions
+1
View File
@@ -14,4 +14,5 @@
NSArray *cachedFiles;
}
@property (retain) NSArray *unstagedFiles, *cachedFiles;
@end
+1
View File
@@ -21,6 +21,7 @@ extern NSString* PBGitRepositoryErrorDomain;
- (NSFileHandle*) handleForCommand:(NSString*) cmd;
- (NSFileHandle*) handleForArguments:(NSArray*) args;
- (NSFileHandle *) handleInWorkDirForArguments:(NSArray *)args;
- (NSString*) outputForCommand:(NSString*) cmd;
- (NSString*) outputForCommand:(NSString *)str retValue:(int *)ret;
- (NSString*) outputForArguments:(NSArray*) args;
+24
View File
@@ -257,6 +257,22 @@ static NSString* gitPath;
[self selectBranch: [self addBranch: [self headRef]]];
}
- (NSString *) workingDirectory
{
if ([self.fileURL.path hasSuffix:@"/.git"])
return [self.fileURL.path substringToIndex:[self.fileURL.path length] - 5];
else if ([[self outputForCommand:@"rev-parse --is-inside-work-tree"] isEqualToString:@"true"])
return gitPath;
return nil;
}
- (int) returnValueForCommand:(NSString *)cmd
{
int i;
[self outputForCommand:cmd retValue: &i];
return i;
}
- (NSFileHandle*) handleForArguments:(NSArray *)args
{
@@ -266,6 +282,14 @@ static NSString* gitPath;
return [PBEasyPipe handleForCommand:gitPath withArgs:arguments];
}
- (NSFileHandle*) handleInWorkDirForArguments:(NSArray *)args
{
NSString* gitDirArg = [@"--git-dir=" stringByAppendingString:self.fileURL.path];
NSMutableArray* arguments = [NSMutableArray arrayWithObject: gitDirArg];
[arguments addObjectsFromArray: args];
return [PBEasyPipe handleForCommand:gitPath withArgs:arguments inDir:[self workingDirectory]];
}
- (NSFileHandle*) handleForCommand:(NSString *)cmd
{
NSArray* arguments = [cmd componentsSeparatedByString:@" "];