5151@class GTTag;
5252@class GTTree;
5353@class GTRemote;
54-
55- // / Checkout strategies used by the various -checkout... methods
56- // / See git_checkout_strategy_t
57- typedef NS_OPTIONS (NSInteger , GTCheckoutStrategyType) {
58- GTCheckoutStrategyNone = GIT_CHECKOUT_NONE,
59- GTCheckoutStrategySafe = GIT_CHECKOUT_SAFE,
60- GTCheckoutStrategyForce = GIT_CHECKOUT_FORCE,
61- GTCheckoutStrategyAllowConflicts = GIT_CHECKOUT_ALLOW_CONFLICTS,
62- GTCheckoutStrategyRemoveUntracked = GIT_CHECKOUT_REMOVE_UNTRACKED,
63- GTCheckoutStrategyRemoveIgnored = GIT_CHECKOUT_REMOVE_IGNORED,
64- GTCheckoutStrategyUpdateOnly = GIT_CHECKOUT_UPDATE_ONLY,
65- GTCheckoutStrategyDontUpdateIndex = GIT_CHECKOUT_DONT_UPDATE_INDEX,
66- GTCheckoutStrategyNoRefresh = GIT_CHECKOUT_NO_REFRESH,
67- GTCheckoutStrategyDisablePathspecMatch = GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH,
68- GTCheckoutStrategySkipLockedDirectories = GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES,
69- };
70-
71- // / Checkout notification flags used by the various -checkout... methods
72- // / See git_checkout_notify_t
73- typedef NS_OPTIONS (NSInteger , GTCheckoutNotifyFlags) {
74- GTCheckoutNotifyNone = GIT_CHECKOUT_NOTIFY_NONE,
75- GTCheckoutNotifyConflict = GIT_CHECKOUT_NOTIFY_CONFLICT,
76- GTCheckoutNotifyDirty = GIT_CHECKOUT_NOTIFY_DIRTY,
77- GTCheckoutNotifyUpdated = GIT_CHECKOUT_NOTIFY_UPDATED,
78- GTCheckoutNotifyUntracked = GIT_CHECKOUT_NOTIFY_UNTRACKED,
79- GTCheckoutNotifyIgnored = GIT_CHECKOUT_NOTIFY_IGNORED,
80-
81- GTCheckoutNotifyAll = GIT_CHECKOUT_NOTIFY_ALL,
82- };
54+ @class GTCheckoutOptions;
8355
8456// / Transport flags sent as options to +cloneFromURL... method
8557typedef NS_OPTIONS (NSInteger , GTTransportFlags) {
@@ -98,6 +70,9 @@ extern NSString * const GTRepositoryCloneOptionsBare;
9870// / Default value is `YES`.
9971extern NSString * const GTRepositoryCloneOptionsCheckout;
10072
73+ // / A `GTCheckoutOptions` object describing how to perform the checkout.
74+ extern NSString * const GTRepositoryCloneCheckoutOptions;
75+
10176// / A `GTCredentialProvider`, that will be used to authenticate against the
10277// / remote.
10378extern NSString * const GTRepositoryCloneOptionsCredentialProvider;
@@ -199,7 +174,7 @@ extern NSString * const GTRepositoryInitOptionsOriginURLString;
199174// / options - A dictionary consisting of the options:
200175// / `GTRepositoryCloneOptionsTransportFlags`,
201176// / `GTRepositoryCloneOptionsBare`,
202- // / `GTRepositoryCloneOptionsCheckout `,
177+ // / `GTRepositoryCloneCheckoutOptions `,
203178// / `GTRepositoryCloneOptionsCredentialProvider`,
204179// / `GTRepositoryCloneOptionsCloneLocal`,
205180// / `GTRepositoryCloneOptionsServerCertificateURL`
@@ -209,6 +184,9 @@ extern NSString * const GTRepositoryInitOptionsOriginURLString;
209184// / (if `GTRepositoryCloneOptionsCheckout` is YES).
210185// /
211186// / returns nil (and fills the error parameter) if an error occurred, or a GTRepository object if successful.
187+ + (id )cloneFromURL : (NSURL *)originURL toWorkingDirectory : (NSURL *)workdirURL options : (NSDictionary *)options error : (NSError **)error transferProgressBlock : (void (^)(const git_transfer_progress *, BOOL *stop))transferProgressBlock ;
188+
189+ // / Backward-compatible method that uses `GTRepositoryCloneOptionsCheckout`
212190+ (id )cloneFromURL : (NSURL *)originURL toWorkingDirectory : (NSURL *)workdirURL options : (NSDictionary *)options error : (NSError **)error transferProgressBlock : (void (^)(const git_transfer_progress *, BOOL *stop))transferProgressBlock checkoutProgressBlock : (void (^)(NSString *path, NSUInteger completedSteps, NSUInteger totalSteps))checkoutProgressBlock ;
213191
214192// / Lookup objects in the repo by oid or sha1
@@ -454,7 +432,7 @@ extern NSString * const GTRepositoryInitOptionsOriginURLString;
454432// / progressBlock - The block to call back for progress updates. Can be nil.
455433// /
456434// / Returns YES if operation was successful, NO otherwise
457- - (BOOL )checkoutCommit : (GTCommit *)targetCommit strategy : (GTCheckoutStrategyType) strategy notifyFlags : (GTCheckoutNotifyFlags) notifyFlags error : (NSError **)error progressBlock : ( void (^)( NSString *path, NSUInteger completedSteps, NSUInteger totalSteps)) progressBlock notifyBlock : ( int (^)(GTCheckoutNotifyFlags why, NSString *path, GTDiffFile *baseline, GTDiffFile *target, GTDiffFile *workdir)) notifyBlock ;
435+ - (BOOL )checkoutCommit : (GTCommit *)targetCommit options : (GTCheckoutOptions *) options error : (NSError **)error ;
458436
459437// / Checkout a reference
460438// /
@@ -467,13 +445,13 @@ extern NSString * const GTRepositoryInitOptionsOriginURLString;
467445// / progressBlock - The block to call back for progress updates. Can be nil.
468446// /
469447// / Returns YES if operation was successful, NO otherwise
470- - (BOOL )checkoutReference : (GTReference *)targetReference strategy : (GTCheckoutStrategyType) strategy notifyFlags : (GTCheckoutNotifyFlags) notifyFlags error : (NSError **)error progressBlock : ( void (^)( NSString *path, NSUInteger completedSteps, NSUInteger totalSteps)) progressBlock notifyBlock : ( int (^)(GTCheckoutNotifyFlags why, NSString *path, GTDiffFile *baseline, GTDiffFile *target, GTDiffFile *workdir)) notifyBlock ;
448+ - (BOOL )checkoutReference : (GTReference *)targetReference options : (GTCheckoutOptions *) options error : (NSError **)error ;
471449
472450// / Convenience wrapper for checkoutCommit:strategy:notifyFlags:error:notifyBlock:progressBlock without notifications
473- - (BOOL )checkoutCommit : (GTCommit *)target strategy : (GTCheckoutStrategyType) strategy error : (NSError **)error progressBlock : ( void (^)( NSString *path, NSUInteger completedSteps, NSUInteger totalSteps)) progressBlock ;
451+ // - (BOOL)checkoutCommit:(GTCommit *)target options:(GTCheckoutOptions *)options error:(NSError **)error;
474452
475453// / Convenience wrapper for checkoutReference:strategy:notifyFlags:error:notifyBlock:progressBlock without notifications
476- - (BOOL )checkoutReference : (GTReference *)target strategy : (GTCheckoutStrategyType) strategy error : (NSError **)error progressBlock : ( void (^)( NSString *path, NSUInteger completedSteps, NSUInteger totalSteps)) progressBlock ;
454+ // - (BOOL)checkoutReference:(GTReference *)target options:(GTCheckoutOptions *)options error:(NSError **)error;
477455
478456// / Flush the gitattributes cache.
479457- (void )flushAttributesCache ;
0 commit comments