summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.lfs/src
diff options
context:
space:
mode:
authorThomas Wolf <thomas.wolf@paranor.ch>2022-02-21 00:20:52 +0100
committerMatthias Sohn <matthias.sohn@sap.com>2022-03-23 18:55:31 -0400
commita171360292cedde6f05a40069e36946a8045a6a1 (patch)
tree8fb9bfb5ad3dfd13c5e9f5ba447c0aff073405ad /org.eclipse.jgit.lfs/src
parent30a137dfe5cfa02c8b8001e451148a183c79c19b (diff)
downloadjgit-a171360292cedde6f05a40069e36946a8045a6a1.tar.gz
jgit-a171360292cedde6f05a40069e36946a8045a6a1.zip
[push, lfs] Tell the pre-push hook whether the push is a dry run
This is a feature that does not exist in C git: an external pre-push hook doesn't know whether the push is run as a dry run. But for internal hooks written in Java it is entirely possible to give a hook this information. In JGit with its internal LFS implementation, this enables us to not perform LFS uploads in a dry run. This is kind of important because EGit frequently does a dry-run before doing the actual push to give the user a way to review what would be pushed before it actually happens. Doing an LFS upload of potentially huge files during a dry-run is wasteful, makes the dry run not actually a dry run, and leads to uploading the same file twice if followed by a real push. Use the information in the LfsPrePushHook to only do the initial call to the LFS server, but then skipping the actual upload if the push is a dry run. That way, a failure to contact the LFS server leads to an error in the dry run, as it should. Bug: 546567 Change-Id: I155430f27c4979d91096ba72fd95c3775dd3f28b Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
Diffstat (limited to 'org.eclipse.jgit.lfs/src')
-rw-r--r--org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/LfsPrePushHook.java8
1 files changed, 5 insertions, 3 deletions
diff --git a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/LfsPrePushHook.java b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/LfsPrePushHook.java
index ebf46e080e..9b3d60812a 100644
--- a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/LfsPrePushHook.java
+++ b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/LfsPrePushHook.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2017, Markus Duft <markus.duft@ssi-schaefer.com> and others
+ * Copyright (C) 2017, 2022 Markus Duft <markus.duft@ssi-schaefer.com> and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
@@ -101,8 +101,10 @@ public class LfsPrePushHook extends PrePushHook {
}
HttpConnection api = LfsConnectionFactory.getLfsConnection(
getRepository(), METHOD_POST, OPERATION_UPLOAD);
- Map<String, LfsPointer> oid2ptr = requestBatchUpload(api, toPush);
- uploadContents(api, oid2ptr);
+ if (!isDryRun()) {
+ Map<String, LfsPointer> oid2ptr = requestBatchUpload(api, toPush);
+ uploadContents(api, oid2ptr);
+ }
return EMPTY;
}