Skip to content

Commit e52feca

Browse files
authored
Merge pull request #619 from tiennou/fix-clone-checkout
Revert to "default enabled" behavior of checking out when cloning
2 parents 177938a + 0110eab commit e52feca

File tree

3 files changed

+18
-11
lines changed

3 files changed

+18
-11
lines changed

ObjectiveGit/GTRepository.h

+4-5
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ extern NSString * const GTRepositoryCloneOptionsBare;
7171

7272
/// An `NSNumber` wrapped `BOOL`, if NO, don't checkout the remote HEAD.
7373
/// Default value is `YES`.
74-
extern NSString * const GTRepositoryCloneOptionsCheckout;
74+
extern NSString * const GTRepositoryCloneOptionsPerformCheckout;
7575

7676
/// A `GTCheckoutOptions` object describing how to perform the checkout.
77-
extern NSString * const GTRepositoryCloneCheckoutOptions;
77+
extern NSString * const GTRepositoryCloneOptionsCheckoutOptions;
7878

7979
/// A `GTCredentialProvider`, that will be used to authenticate against the
8080
/// remote.
@@ -228,15 +228,14 @@ typedef NS_ENUM(NSInteger, GTRepositoryStateType) {
228228
/// options - A dictionary consisting of the options:
229229
/// `GTRepositoryCloneOptionsTransportFlags`,
230230
/// `GTRepositoryCloneOptionsBare`,
231-
/// `GTRepositoryCloneCheckoutOptions`,
231+
/// `GTRepositoryCloneOptionsPerformCheckout`,
232+
/// `GTRepositoryCloneOptionsCheckoutOptions`,
232233
/// `GTRepositoryCloneOptionsCredentialProvider`,
233234
/// `GTRepositoryCloneOptionsCloneLocal`,
234235
/// `GTRepositoryCloneOptionsServerCertificateURL`
235236
/// error - A pointer to fill in case of trouble.
236237
/// transferProgressBlock - This block is called with network transfer updates.
237238
/// May be NULL.
238-
/// checkoutProgressBlock - This block is called with checkout updates
239-
/// (if `GTRepositoryCloneOptionsCheckout` is YES).
240239
/// May be NULL.
241240
///
242241
/// returns nil (and fills the error parameter) if an error occurred, or a GTRepository object if successful.

ObjectiveGit/GTRepository.m

+10-2
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@
6060
#import "git2.h"
6161

6262
NSString * const GTRepositoryCloneOptionsBare = @"GTRepositoryCloneOptionsBare";
63-
NSString * const GTRepositoryCloneCheckoutOptions = @"GTRepositoryCloneCheckoutOptions";
63+
NSString * const GTRepositoryCloneOptionsPerformCheckout = @"GTRepositoryCloneOptionsPerformCheckout";
64+
NSString * const GTRepositoryCloneOptionsCheckoutOptions = @"GTRepositoryCloneOptionsCheckoutOptions";
6465
NSString * const GTRepositoryCloneOptionsTransportFlags = @"GTRepositoryCloneOptionsTransportFlags";
6566
NSString * const GTRepositoryCloneOptionsCredentialProvider = @"GTRepositoryCloneOptionsCredentialProvider";
6667
NSString * const GTRepositoryCloneOptionsCloneLocal = @"GTRepositoryCloneOptionsCloneLocal";
@@ -248,7 +249,14 @@ + (nullable instancetype)cloneFromURL:(NSURL *)originURL toWorkingDirectory:(NSU
248249
NSNumber *bare = options[GTRepositoryCloneOptionsBare];
249250
cloneOptions.bare = (bare == nil ? 0 : bare.boolValue);
250251

251-
GTCheckoutOptions *checkoutOptions = options[GTRepositoryCloneCheckoutOptions];
252+
NSNumber *checkout = options[GTRepositoryCloneOptionsPerformCheckout];
253+
BOOL doCheckout = (checkout != nil ? [checkout boolValue] : YES);
254+
255+
GTCheckoutOptions *checkoutOptions = options[GTRepositoryCloneOptionsCheckoutOptions];
256+
if (checkoutOptions == nil && doCheckout) {
257+
checkoutOptions = [GTCheckoutOptions checkoutOptionsWithStrategy:GTCheckoutStrategySafe];
258+
}
259+
252260
if (checkoutOptions != nil) {
253261
cloneOptions.checkout_opts = *(checkoutOptions.git_checkoutOptions);
254262
}

ObjectiveGitTests/GTRepositorySpec.m

+4-4
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@
100100

101101
NSDictionary *cloneOptions = @{
102102
GTRepositoryCloneOptionsCloneLocal: @YES,
103-
GTRepositoryCloneCheckoutOptions: checkoutOptions,
103+
GTRepositoryCloneOptionsCheckoutOptions: checkoutOptions,
104104
};
105105
repository = [GTRepository cloneFromURL:originURL toWorkingDirectory:workdirURL options:cloneOptions error:&error transferProgressBlock:transferProgressBlock];
106106
expect(repository).notTo(beNil());
@@ -125,7 +125,7 @@
125125
NSDictionary *options = @{
126126
GTRepositoryCloneOptionsBare: @YES,
127127
GTRepositoryCloneOptionsCloneLocal: @YES,
128-
GTRepositoryCloneCheckoutOptions: checkoutOptions,
128+
GTRepositoryCloneOptionsCheckoutOptions: checkoutOptions,
129129
};
130130
repository = [GTRepository cloneFromURL:originURL toWorkingDirectory:workdirURL options:options error:&error transferProgressBlock:transferProgressBlock];
131131
expect(repository).notTo(beNil());
@@ -147,7 +147,7 @@
147147
GTCheckoutOptions *checkoutOptions = [GTCheckoutOptions checkoutOptionsWithStrategy:GTCheckoutStrategySafe];
148148
checkoutOptions.progressBlock = checkoutProgressBlock;
149149

150-
repository = [GTRepository cloneFromURL:originURL toWorkingDirectory:workdirURL options:@{ GTRepositoryCloneCheckoutOptions: checkoutOptions } error:&error transferProgressBlock:transferProgressBlock];
150+
repository = [GTRepository cloneFromURL:originURL toWorkingDirectory:workdirURL options:@{ GTRepositoryCloneOptionsCheckoutOptions: checkoutOptions } error:&error transferProgressBlock:transferProgressBlock];
151151
expect(repository).notTo(beNil());
152152
expect(error).to(beNil());
153153

@@ -188,7 +188,7 @@
188188
checkoutOptions.progressBlock = checkoutProgressBlock;
189189
NSDictionary *cloneOptions = @{
190190
GTRepositoryCloneOptionsCredentialProvider: provider,
191-
GTRepositoryCloneCheckoutOptions: checkoutOptions,
191+
GTRepositoryCloneOptionsCheckoutOptions: checkoutOptions,
192192
};
193193

194194
repository = [GTRepository cloneFromURL:originURL toWorkingDirectory:workdirURL options:cloneOptions error:&error transferProgressBlock:transferProgressBlock];

0 commit comments

Comments
 (0)