From 420cb50cc2eeaaa85cc06f605c7a61fa4798a04e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Konrad=20K=C3=BCgler?= Date: Tue, 11 Feb 2014 23:01:04 +0100 Subject: [PATCH] Use fetch.prune and remote..prune to set prune mode when fetching MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit When no explicit value is set via FetchCommand.setRemoveDeletedRefs() checks if pruning is enabled in the configuration. The following commit introduced the prune config to C Git: https://github.com/git/git/commit/737c5a9cde708d6995c765b7c2e95033edd0a896 Change-Id: Ida79d335218e1c9f5c6e2ce03386ac8a1c0b212e Signed-off-by: Konrad Kügler Signed-off-by: Matthias Sohn --- .../org/eclipse/jgit/api/FetchCommand.java | 20 +++++++++++++++---- .../org/eclipse/jgit/lib/ConfigConstants.java | 14 +++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/FetchCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/FetchCommand.java index 69c4923723..29d475a221 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/FetchCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/FetchCommand.java @@ -54,10 +54,12 @@ import org.eclipse.jgit.errors.NoRemoteRepositoryException; import org.eclipse.jgit.errors.NotSupportedException; import org.eclipse.jgit.errors.TransportException; import org.eclipse.jgit.internal.JGitText; +import org.eclipse.jgit.lib.ConfigConstants; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.NullProgressMonitor; import org.eclipse.jgit.lib.ProgressMonitor; import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.lib.StoredConfig; import org.eclipse.jgit.transport.FetchResult; import org.eclipse.jgit.transport.RefSpec; import org.eclipse.jgit.transport.TagOpt; @@ -81,7 +83,7 @@ public class FetchCommand extends TransportCommand { private boolean checkFetchedObjects; - private boolean removeDeletedRefs; + private Boolean removeDeletedRefs; private boolean dryRun; @@ -118,7 +120,7 @@ public class FetchCommand extends TransportCommand { Transport transport = Transport.open(repo, remote); try { transport.setCheckFetchedObjects(checkFetchedObjects); - transport.setRemoveDeletedRefs(removeDeletedRefs); + transport.setRemoveDeletedRefs(isRemoveDeletedRefs()); transport.setDryRun(dryRun); if (tagOption != null) transport.setTagOpt(tagOption); @@ -199,7 +201,17 @@ public class FetchCommand extends TransportCommand { * @return whether or not to remove refs which no longer exist in the source */ public boolean isRemoveDeletedRefs() { - return removeDeletedRefs; + if (removeDeletedRefs != null) + return removeDeletedRefs.booleanValue(); + else { // fall back to configuration + boolean result = false; + StoredConfig config = repo.getConfig(); + result = config.getBoolean(ConfigConstants.CONFIG_FETCH_SECTION, + null, ConfigConstants.CONFIG_KEY_PRUNE, result); + result = config.getBoolean(ConfigConstants.CONFIG_REMOTE_SECTION, + remote, ConfigConstants.CONFIG_KEY_PRUNE, result); + return result; + } } /** @@ -210,7 +222,7 @@ public class FetchCommand extends TransportCommand { */ public FetchCommand setRemoveDeletedRefs(boolean removeDeletedRefs) { checkCallable(); - this.removeDeletedRefs = removeDeletedRefs; + this.removeDeletedRefs = Boolean.valueOf(removeDeletedRefs); return this; } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java index bca79f2710..1a0945926f 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java @@ -90,6 +90,13 @@ public class ConfigConstants { /** The "pack" section */ public static final String CONFIG_PACK_SECTION = "pack"; + /** + * The "fetch" section + * + * @since 3.3 + */ + public static final String CONFIG_FETCH_SECTION = "fetch"; + /** The "algorithm" key */ public static final String CONFIG_KEY_ALGORITHM = "algorithm"; @@ -247,4 +254,11 @@ public class ConfigConstants { * @since 3.0 */ public static final String CONFIG_KEY_RENAMES = "renames"; + + /** + * The "prune" key + * + * @since 3.3 + */ + public static final String CONFIG_KEY_PRUNE = "prune"; } -- 2.39.5