]> source.dussan.org Git - jgit.git/commit
[push, lfs] Tell the pre-push hook whether the push is a dry run 30/191930/3
authorThomas Wolf <thomas.wolf@paranor.ch>
Sun, 20 Feb 2022 23:20:52 +0000 (00:20 +0100)
committerMatthias Sohn <matthias.sohn@sap.com>
Wed, 23 Mar 2022 22:55:31 +0000 (18:55 -0400)
commita171360292cedde6f05a40069e36946a8045a6a1
tree8fb9bfb5ad3dfd13c5e9f5ba447c0aff073405ad
parent30a137dfe5cfa02c8b8001e451148a183c79c19b
[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>
org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/LfsPrePushHook.java
org.eclipse.jgit/src/org/eclipse/jgit/hooks/PrePushHook.java
org.eclipse.jgit/src/org/eclipse/jgit/transport/PushProcess.java