From ac3abe10ed54d512fbbaeb7cef19972eedd8e4a8 Mon Sep 17 00:00:00 2001 From: Marek Zawirski Date: Thu, 28 Aug 2008 04:32:49 +0200 Subject: [PATCH] Fix RemoteRefUpdate to delete local tracking ref upon successful deletion When remote ref update specification is a deletion, local tracking ref should also be deleted, not updated. Reported-by: Shawn O. Pearce Signed-off-by: Marek Zawirski Signed-off-by: Shawn O. Pearce --- org.spearce.jgit/src/org/spearce/jgit/transport/RemoteRefUpdate.java | 5 ++++- .../src/org/spearce/jgit/transport/TrackingRefUpdate.java | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) 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 623599f6..c79f7dc0 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 @@ public class RemoteRefUpdate { * 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 a84b38a1..ac747287 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 class TrackingRefUpdate { void update(final RevWalk walk) throws IOException { update.update(walk); } + + void delete(final RevWalk walk) throws IOException { + update.delete(walk); + } } -- 2.11.4.GIT