9
9
#import " PBGitRef.h"
10
10
11
11
12
+ NSString * const kGitXTagRefPrefix = @" refs/tags/" ;
13
+ NSString * const kGitXBranchRefPrefix = @" refs/heads/" ;
14
+ NSString * const kGitXRemoteRefPrefix = @" refs/remotes/" ;
15
+
16
+
12
17
@implementation PBGitRef
13
18
14
19
@synthesize ref;
@@ -19,17 +24,85 @@ - (NSString*) shortName
19
24
return ref;
20
25
}
21
26
27
+ - (NSString *) tagName
28
+ {
29
+ if (![self isTag ])
30
+ return nil ;
31
+
32
+ return [self shortName ];
33
+ }
34
+
35
+ - (NSString *) branchName
36
+ {
37
+ if (![self isBranch ])
38
+ return nil ;
39
+
40
+ return [self shortName ];
41
+ }
42
+
43
+ - (NSString *) remoteName
44
+ {
45
+ if (![self isRemote ])
46
+ return nil ;
47
+
48
+ return (NSString *)[[ref componentsSeparatedByString: @" /" ] objectAtIndex: 2 ];
49
+ }
50
+
51
+ - (NSString *) remoteBranchName
52
+ {
53
+ if (![self isRemoteBranch ])
54
+ return nil ;
55
+
56
+ return [[self shortName ] substringFromIndex: [[self remoteName ] length ] + 1 ];;
57
+ }
58
+
22
59
- (NSString *) type
23
60
{
24
- if ([ref hasPrefix: @" refs/heads " ])
61
+ if ([self isBranch ])
25
62
return @" head" ;
26
- if ([ref hasPrefix: @" refs/tags " ])
63
+ if ([self isTag ])
27
64
return @" tag" ;
28
- if ([ref hasPrefix: @" refs/remotes " ])
65
+ if ([self isRemote ])
29
66
return @" remote" ;
30
67
return nil ;
31
68
}
32
69
70
+ - (BOOL ) isBranch
71
+ {
72
+ return [ref hasPrefix: kGitXBranchRefPrefix ];
73
+ }
74
+
75
+ - (BOOL ) isTag
76
+ {
77
+ return [ref hasPrefix: kGitXTagRefPrefix ];
78
+ }
79
+
80
+ - (BOOL ) isRemote
81
+ {
82
+ return [ref hasPrefix: kGitXRemoteRefPrefix ];
83
+ }
84
+
85
+ - (BOOL ) isRemoteBranch
86
+ {
87
+ if (![self isRemote ])
88
+ return NO ;
89
+
90
+ return ([[ref componentsSeparatedByString: @" /" ] count ] > 3 );
91
+ }
92
+
93
+ - (BOOL ) isEqualToRef : (PBGitRef *)otherRef
94
+ {
95
+ return [ref isEqualToString: [otherRef ref ]];
96
+ }
97
+
98
+ - (PBGitRef *) remoteRef
99
+ {
100
+ if (![self isRemote ])
101
+ return nil ;
102
+
103
+ return [PBGitRef refFromString: [@" refs/remotes/" stringByAppendingString: [self remoteName ]]];
104
+ }
105
+
33
106
+ (PBGitRef*) refFromString : (NSString *) s
34
107
{
35
108
return [[PBGitRef alloc ] initWithString: s];
0 commit comments