From 3c7a22ef56f2a07d9befb94abd0c41e26a5e76e7 Mon Sep 17 00:00:00 2001 From: Pieter de Bie Date: Fri, 12 Sep 2008 17:56:42 +0200 Subject: [PATCH] Let the gitx CLI use our RevSpecification --- PBCLIProxy.mm | 4 +++- PBGitRepository.h | 2 +- PBGitRepository.m | 7 ++++--- PBRepositoryDocumentController.h | 3 ++- PBRepositoryDocumentController.m | 8 ++++---- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/PBCLIProxy.mm b/PBCLIProxy.mm index 6c66cd0..ca6ba32 100644 --- a/PBCLIProxy.mm +++ b/PBCLIProxy.mm @@ -8,6 +8,7 @@ #import "PBCLIProxy.h" #import "PBRepositoryDocumentController.h" +#import "PBGitRevSpecifier.h" @implementation PBCLIProxy @synthesize connection; @@ -32,7 +33,8 @@ // I am not familiar with GC though, so perhaps I was doing something wrong. NSURL* url = [NSURL fileURLWithPath:[repositoryPath path]]; NSArray* arguments = [NSArray arrayWithArray:args]; - if (id document = [[PBRepositoryDocumentController sharedDocumentController] openRepositoryAtLocation: url RevParseArgs: arguments]) { + PBGitRevSpecifier* rev = [[PBGitRevSpecifier alloc] initWithParameters:arguments]; + if (id document = [[PBRepositoryDocumentController sharedDocumentController] openRepositoryAtLocation: url RevSpecifier: rev]) { [NSApp activateIgnoringOtherApps:YES]; return YES; } diff --git a/PBGitRepository.h b/PBGitRepository.h index 021378d..a7138c6 100644 --- a/PBGitRepository.h +++ b/PBGitRepository.h @@ -35,7 +35,7 @@ extern NSString* PBGitRepositoryErrorDomain; + (NSURL*)gitDirForURL:(NSURL*)repositoryURL; + (NSURL*)baseDirForURL:(NSURL*)repositoryURL; -- (id) initWithURL: (NSURL*) path andArguments:(NSArray*) array; +- (id) initWithURL: (NSURL*) path andRevSpecifier:(PBGitRevSpecifier*) rev; @property (retain) PBGitRevList* revisionList; @property (assign) NSMutableArray* branches; diff --git a/PBGitRepository.m b/PBGitRepository.m index 6a15b55..3e4d746 100644 --- a/PBGitRepository.m +++ b/PBGitRepository.m @@ -126,14 +126,15 @@ static NSString* gitPath; return success; } -- (id) initWithURL: (NSURL*) path andArguments:(NSArray*) array +- (id) initWithURL: (NSURL*) path andRevSpecifier:(PBGitRevSpecifier*) rev { self = [self init]; NSURL* gitDirURL = [PBGitRepository gitDirForURL:path]; [self setFileURL: gitDirURL]; [self readRefs]; - [self readCurrentBranch]; - revisionList = [[PBGitRevList alloc] initWithRepository:self andRevListParameters:array]; + [self addBranch: rev]; + [self selectBranch: rev]; + revisionList = [[PBGitRevList alloc] initWithRepository:self andRevListParameters: rev]; return self; } // The fileURL the document keeps is to the .git dir, but that’s pretty diff --git a/PBRepositoryDocumentController.h b/PBRepositoryDocumentController.h index b6d0afd..e23d6b6 100644 --- a/PBRepositoryDocumentController.h +++ b/PBRepositoryDocumentController.h @@ -7,6 +7,7 @@ // #import +#import "PBGitRevSpecifier.h" @interface PBRepositoryDocumentController : NSDocumentController @@ -14,5 +15,5 @@ } -- (id) openRepositoryAtLocation:(NSURL*) url RevParseArgs:(NSArray*)args; +- (id) openRepositoryAtLocation:(NSURL*) url RevSpecifier:(PBGitRevSpecifier*) rev; @end diff --git a/PBRepositoryDocumentController.m b/PBRepositoryDocumentController.m index 136f52e..dfac75f 100644 --- a/PBRepositoryDocumentController.m +++ b/PBRepositoryDocumentController.m @@ -31,16 +31,16 @@ [super noteNewRecentDocumentURL:[PBGitRepository baseDirForURL:url]]; } -- (id) openRepositoryAtLocation:(NSURL*) url RevParseArgs:(NSArray*)args +- (id) openRepositoryAtLocation:(NSURL*) url RevSpecifier:(PBGitRevSpecifier*) rev { id document = [self documentForURL:url]; if (!document) { - document = [[PBGitRepository alloc] initWithURL:url andArguments:args]; + document = [[PBGitRepository alloc] initWithURL:url andRevSpecifier:rev]; [self addDocument:document]; [document makeWindowControllers]; } else { - // TODO: Use a more decent approach for this - [document setValue: [[PBGitRevList alloc] initWithRepository:document andRevListParameters: args] forKey:@"revisionList"]; + [document addBranch: rev]; + [document selectBranch: rev]; } [document showWindows]; return document;