Skip to content

Commit 3cda265

Browse files
committed
Parse refs with ObjectiveGit
1 parent 0543464 commit 3cda265

File tree

3 files changed

+19
-21
lines changed

3 files changed

+19
-21
lines changed

Classes/git/PBGitIndex.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ - (NSString *) parentTree
238238
{
239239
NSString *parent = self.amend ? @"HEAD^" : @"HEAD";
240240

241-
if (![self.repository parseReference:parent])
241+
if (![self.repository revisionExists:parent])
242242
// We don't have a head ref. Return the empty tree.
243243
return @"4b825dc642cb6eb9a060e54bf8d69288fbee4904";
244244

@@ -269,7 +269,7 @@ - (void)commitWithMessage:(NSString *)commitMessage andVerify:(BOOL) doVerify
269269

270270
NSMutableArray *arguments = [NSMutableArray arrayWithObjects:@"commit-tree", tree, nil];
271271
NSString *parent = self.amend ? @"HEAD^" : @"HEAD";
272-
if ([self.repository parseReference:parent]) {
272+
if ([self.repository revisionExists:parent]) {
273273
[arguments addObject:@"-p"];
274274
[arguments addObject:parent];
275275
}

Classes/git/PBGitRepository.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@ static NSString * PBStringFromBranchFilterType(PBGitXBranchFilterType type) {
152152
- (PBGitRevSpecifier*) addBranch: (PBGitRevSpecifier*) rev;
153153
- (BOOL)removeBranch:(PBGitRevSpecifier *)rev;
154154

155-
- (NSString*) parseSymbolicReference:(NSString*) ref;
156-
- (NSString*) parseReference:(NSString*) ref;
155+
- (GTReference*) parseSymbolicReference:(NSString*) ref;
156+
- (BOOL) revisionExists:(NSString*) spec;
157157

158158
- (void) forceUpdateRevisions;
159159
- (NSURL*) getIndexURL;

Classes/git/PBGitRepository.m

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -290,13 +290,13 @@ - (PBGitRevSpecifier *)headRef
290290
if (_headRef)
291291
return _headRef;
292292

293-
NSString* branch = [self parseSymbolicReference: @"HEAD"];
294-
if (branch && [branch hasPrefix:@"refs/heads/"])
295-
_headRef = [[PBGitRevSpecifier alloc] initWithRef:[PBGitRef refFromString:branch]];
293+
GTReference *branchRef = [self parseSymbolicReference: @"HEAD"];
294+
if (branchRef && [branchRef.name hasPrefix:@"refs/heads/"])
295+
_headRef = [[PBGitRevSpecifier alloc] initWithRef:[PBGitRef refFromString:branchRef.name]];
296296
else
297297
_headRef = [[PBGitRevSpecifier alloc] initWithRef:[PBGitRef refFromString:@"HEAD"]];
298298

299-
_headOID = [self OIDForRef:[_headRef ref]];
299+
_headOID = branchRef.OID;
300300

301301
return _headRef;
302302
}
@@ -1158,23 +1158,21 @@ - (BOOL)executeHook:(NSString *)name arguments:(NSArray *)arguments output:(NSSt
11581158
return (ret == 0);
11591159
}
11601160

1161-
- (NSString *)parseReference:(NSString *)reference
1161+
- (BOOL)revisionExists:(NSString *)spec
11621162
{
1163-
int ret = 1;
1164-
NSString *ref = [self outputForArguments:[NSArray arrayWithObjects: @"rev-parse", @"--verify", reference, nil] retValue: &ret];
1165-
if (ret)
1166-
return nil;
1167-
1168-
return ref;
1163+
return [self.gtRepo lookUpObjectByRevParse:spec error:nil] != nil;
11691164
}
11701165

1171-
- (NSString*) parseSymbolicReference:(NSString*) reference
1166+
- (GTReference *)parseSymbolicReference:(NSString*) reference
11721167
{
1173-
NSString* ref = [self outputForArguments:[NSArray arrayWithObjects: @"symbolic-ref", @"-q", reference, nil]];
1174-
if ([ref hasPrefix:@"refs/"])
1175-
return ref;
1176-
1177-
return nil;
1168+
GTReference *gtRef = [self.gtRepo lookUpReferenceWithName:reference error:nil];
1169+
if (!gtRef) return nil;
1170+
id target = gtRef.unresolvedTarget;
1171+
if ([target isKindOfClass:[GTReference class]]) {
1172+
NSString *ref = ((GTReference *)target).name;
1173+
if ([ref hasPrefix:@"refs/"]) return target;
1174+
}
1175+
return nil;
11781176
}
11791177

11801178
@end

0 commit comments

Comments
 (0)