From 4ebe4b4aa971680d427fdb9b7f3539e63540da23 Mon Sep 17 00:00:00 2001 From: Pieter de Bie Date: Mon, 22 Sep 2008 22:49:59 +0200 Subject: [PATCH] PBGitRepository: add a handle for in-worktree-commands --- PBGitCommitController.h | 1 + PBGitRepository.h | 1 + PBGitRepository.m | 24 ++++++++++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/PBGitCommitController.h b/PBGitCommitController.h index 0a8d732..98d37a2 100644 --- a/PBGitCommitController.h +++ b/PBGitCommitController.h @@ -14,4 +14,5 @@ NSArray *cachedFiles; } +@property (retain) NSArray *unstagedFiles, *cachedFiles; @end diff --git a/PBGitRepository.h b/PBGitRepository.h index 1dd820b..e4a8ec1 100644 --- a/PBGitRepository.h +++ b/PBGitRepository.h @@ -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; diff --git a/PBGitRepository.m b/PBGitRepository.m index 818edb3..421ce2e 100644 --- a/PBGitRepository.m +++ b/PBGitRepository.m @@ -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:@" "];