3030#import " GTCommit.h"
3131#import " NSError+Git.h"
3232
33-
34- @interface GTBranch ()
35- @property (nonatomic , strong ) GTReference *reference;
36- @property (nonatomic , strong ) GTRepository *repository;
37- @end
38-
3933@implementation GTBranch
4034
4135- (NSString *)description {
@@ -56,9 +50,6 @@ - (NSUInteger)hash {
5650
5751#pragma mark API
5852
59- @synthesize reference;
60- @synthesize repository;
61-
6253+ (NSString *)localNamePrefix {
6354 return @" refs/heads/" ;
6455}
@@ -76,22 +67,25 @@ + (id)branchWithReference:(GTReference *)ref repository:(GTRepository *)repo {
7667}
7768
7869- (id )initWithName : (NSString *)branchName repository : (GTRepository *)repo error : (NSError **)error {
79- if ((self = [super init ])) {
80- self.reference = [GTReference referenceByLookingUpReferencedNamed: branchName inRepository: repo error: error];
81- if (self.reference == nil ) {
82- return nil ;
83- }
84-
85- self.repository = repo;
86- }
87- return self;
70+ NSParameterAssert (branchName != nil );
71+ NSParameterAssert (repo != nil );
72+
73+ GTReference *ref = [GTReference referenceByLookingUpReferencedNamed: branchName inRepository: repo error: error];
74+ if (ref == nil ) return nil ;
75+
76+ return [self initWithReference: ref repository: repo];
8877}
8978
9079- (id )initWithReference : (GTReference *)ref repository : (GTRepository *)repo {
91- if ((self = [super init ])) {
92- self.reference = ref;
93- self.repository = repo;
94- }
80+ NSParameterAssert (ref != nil );
81+ NSParameterAssert (repo != nil );
82+
83+ self = [super init ];
84+ if (self == nil ) return nil ;
85+
86+ _repository = repo;
87+ _reference = ref;
88+
9589 return self;
9690}
9791
@@ -100,8 +94,6 @@ - (NSString *)name {
10094}
10195
10296- (NSString *)shortName {
103- if (![self .reference isValid ]) return nil ;
104-
10597 const char *name;
10698 int gitError = git_branch_name (&name, self.reference .git_reference );
10799 if (gitError != GIT_OK) return nil ;
@@ -122,7 +114,7 @@ - (NSString *)sha {
122114}
123115
124116- (NSString *)remoteName {
125- if (self.branchType == GTBranchTypeLocal || ![ self .reference isValid ] ) return nil ;
117+ if (self.branchType == GTBranchTypeLocal) return nil ;
126118
127119 const char *name;
128120 int gitError = git_branch_name (&name, self.reference .git_reference );
@@ -145,7 +137,7 @@ - (GTCommit *)targetCommitAndReturnError:(NSError **)error {
145137}
146138
147139- (NSUInteger )numberOfCommitsWithError : (NSError **)error {
148- GTEnumerator *enumerator = [[GTEnumerator alloc ] initWithRepository: repository error: error];
140+ GTEnumerator *enumerator = [[GTEnumerator alloc ] initWithRepository: self . repository error: error];
149141 if (enumerator == nil ) return NSNotFound ;
150142
151143 if (![enumerator pushSHA: self .sha error: error]) return NSNotFound ;
@@ -181,19 +173,12 @@ - (NSArray *)uniqueCommitsRelativeToBranch:(GTBranch *)otherBranch error:(NSErro
181173}
182174
183175- (BOOL )deleteWithError : (NSError **)error {
184- if (!self.reference .valid ) {
185- if (error != NULL ) *error = GTReference.invalidReferenceError ;
186- return NO ;
187- }
188-
189176 int gitError = git_branch_delete (self.reference .git_reference );
190- if (gitError != GIT_OK) {
177+ if (gitError != GIT_OK) {
191178 if (error != NULL ) *error = [NSError git_errorFor: gitError withAdditionalDescription: @" Failed to delete branch." ];
192179 return NO ;
193180 }
194-
195- self.reference = nil ;
196-
181+
197182 return YES ;
198183}
199184
@@ -203,12 +188,6 @@ - (GTBranch *)trackingBranchWithError:(NSError **)error success:(BOOL *)success
203188 return self;
204189 }
205190
206- if (!self.reference .valid ) {
207- if (success != NULL ) *success = NO ;
208- if (error != NULL ) *error = GTReference.invalidReferenceError ;
209- return NO ;
210- }
211-
212191 git_reference *trackingRef = NULL ;
213192 int gitError = git_branch_upstream (&trackingRef, self.reference .git_reference );
214193
0 commit comments