@@ -184,7 +184,7 @@ - (id)initWithURL:(NSURL *)localFileURL error:(NSError **)error {
184
184
}
185
185
186
186
187
- typedef void (^GTTransferProgressBlock)(const git_transfer_progress *progress);
187
+ typedef void (^GTTransferProgressBlock)(const git_transfer_progress *progress, BOOL *stop );
188
188
189
189
static void checkoutProgressCallback (const char *path, size_t completedSteps, size_t totalSteps, void *payload) {
190
190
if (payload == NULL ) return ;
@@ -197,8 +197,10 @@ static int transferProgressCallback(const git_transfer_progress *progress, void
197
197
if (payload == NULL ) return 0 ;
198
198
struct GTClonePayload *pld = payload;
199
199
if (pld->transferProgressBlock == NULL ) return 0 ;
200
- pld->transferProgressBlock (progress);
201
- return 0 ;
200
+
201
+ BOOL stop = NO ;
202
+ pld->transferProgressBlock (progress, &stop);
203
+ return (stop ? GIT_EUSER : 0 );
202
204
}
203
205
204
206
struct GTClonePayload {
@@ -222,7 +224,7 @@ static int remoteCreate(git_remote **remote, git_repository *repo, const char *n
222
224
git_remote_callbacks remoteCallbacks;
223
225
};
224
226
225
- + (id )cloneFromURL : (NSURL *)originURL toWorkingDirectory : (NSURL *)workdirURL options : (NSDictionary *)options error : (NSError **)error transferProgressBlock : (void (^)(const git_transfer_progress *))transferProgressBlock checkoutProgressBlock : (void (^)(NSString *path, NSUInteger completedSteps, NSUInteger totalSteps))checkoutProgressBlock {
227
+ + (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 {
226
228
227
229
git_clone_options cloneOptions = GIT_CLONE_OPTIONS_INIT;
228
230
0 commit comments