[JGIT PATCH 3/3] Fix RemoteRefUpdate to delete local tracking ref upon successful deletion
From: Marek Zawirski <hidden>
Date: 2016-06-15 22:45:14
Subsystem:
the rest · Maintainer:
Linus Torvalds
When remote ref update specification is a deletion, local tracking ref should also be deleted, not updated. Reported-by: Shawn O. Pearce <redacted> Signed-off-by: Marek Zawirski <redacted> --- .../spearce/jgit/transport/RemoteRefUpdate.java | 5 ++++- .../spearce/jgit/transport/TrackingRefUpdate.java | 4 ++++ 2 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/org.spearce.jgit/src/org/spearce/jgit/transport/RemoteRefUpdate.java b/org.spearce.jgit/src/org/spearce/jgit/transport/RemoteRefUpdate.java
index 623599f..c79f7dc 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/transport/RemoteRefUpdate.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/transport/RemoteRefUpdate.java@@ -336,6 +336,9 @@ protected void setMessage(final String message) { * when I/O error occurred during update */ protected void updateTrackingRef(final RevWalk walk) throws IOException { - trackingRefUpdate.update(walk); + if (isDelete()) + trackingRefUpdate.delete(walk); + else + trackingRefUpdate.update(walk); } }
diff --git a/org.spearce.jgit/src/org/spearce/jgit/transport/TrackingRefUpdate.java b/org.spearce.jgit/src/org/spearce/jgit/transport/TrackingRefUpdate.java
index a84b38a..ac74728 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/transport/TrackingRefUpdate.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/transport/TrackingRefUpdate.java@@ -127,4 +127,8 @@ public Result getResult() { void update(final RevWalk walk) throws IOException { update.update(walk); } + + void delete(final RevWalk walk) throws IOException { + update.delete(walk); + } }
--
1.5.6.3