@@ -184,7 +184,7 @@ - (id)initWithURL:(NSURL *)localFileURL error:(NSError **)error {
184184}
185185
186186
187- typedef void (^GTTransferProgressBlock)(const git_transfer_progress *progress);
187+ typedef void (^GTTransferProgressBlock)(const git_transfer_progress *progress, BOOL *stop );
188188
189189static void checkoutProgressCallback (const char *path, size_t completedSteps, size_t totalSteps, void *payload) {
190190 if (payload == NULL ) return ;
@@ -197,8 +197,10 @@ static int transferProgressCallback(const git_transfer_progress *progress, void
197197 if (payload == NULL ) return 0 ;
198198 struct GTClonePayload *pld = payload;
199199 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 );
202204}
203205
204206struct GTClonePayload {
@@ -222,7 +224,7 @@ static int remoteCreate(git_remote **remote, git_repository *repo, const char *n
222224 git_remote_callbacks remoteCallbacks;
223225};
224226
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 {
226228
227229 git_clone_options cloneOptions = GIT_CLONE_OPTIONS_INIT;
228230
0 commit comments