Skip to content

Commit c2b48ee

Browse files
author
Alexander Hedges
committed
Add ability to cancel the remote part of the clone operation
This makes the transferProgressBlock look more like its libgit equivalent the git_transfer_progress_cb.
1 parent 658b8e9 commit c2b48ee

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

ObjectiveGit/GTRepository.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,11 +206,12 @@ extern NSString * const GTRepositoryInitOptionsOriginURLString;
206206
/// `GTRepositoryCloneOptionsServerCertificateURL`
207207
/// error - A pointer to fill in case of trouble.
208208
/// transferProgressBlock - This block is called with network transfer updates.
209+
/// A negative return value cancels the operation.
209210
/// checkoutProgressBlock - This block is called with checkout updates
210211
/// (if `GTRepositoryCloneOptionsCheckout` is YES).
211212
///
212213
/// returns nil (and fills the error parameter) if an error occurred, or a GTRepository object if successful.
213-
+ (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;
214+
+ (id)cloneFromURL:(NSURL *)originURL toWorkingDirectory:(NSURL *)workdirURL options:(NSDictionary *)options error:(NSError **)error transferProgressBlock:(int (^)(const git_transfer_progress *))transferProgressBlock checkoutProgressBlock:(void (^)(NSString *path, NSUInteger completedSteps, NSUInteger totalSteps))checkoutProgressBlock;
214215

215216
/// Lookup objects in the repo by oid or sha1
216217
- (id)lookUpObjectByOID:(GTOID *)oid objectType:(GTObjectType)type error:(NSError **)error;

ObjectiveGit/GTRepository.m

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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 int(^GTTransferProgressBlock)(const git_transfer_progress *progress);
188188

189189
static void checkoutProgressCallback(const char *path, size_t completedSteps, size_t totalSteps, void *payload) {
190190
if (payload == NULL) return;
@@ -197,8 +197,7 @@ 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+
return pld->transferProgressBlock(progress);
202201
}
203202

204203
struct GTClonePayload {
@@ -222,7 +221,7 @@ static int remoteCreate(git_remote **remote, git_repository *repo, const char *n
222221
git_remote_callbacks remoteCallbacks;
223222
};
224223

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 {
224+
+ (id)cloneFromURL:(NSURL *)originURL toWorkingDirectory:(NSURL *)workdirURL options:(NSDictionary *)options error:(NSError **)error transferProgressBlock:(int (^)(const git_transfer_progress *))transferProgressBlock checkoutProgressBlock:(void (^)(NSString *path, NSUInteger completedSteps, NSUInteger totalSteps))checkoutProgressBlock {
226225

227226
git_clone_options cloneOptions = GIT_CLONE_OPTIONS_INIT;
228227

0 commit comments

Comments
 (0)