From: "Shawn O. Pearce" <spearce@spearce.org>
To: Robin Rosenberg <robin.rosenberg@dewire.com>
Cc: git@vger.kernel.org
Subject: [JGIT PATCH 4/6] Add the remote.name.mirror flag to RemoteConfig
Date: Thu, 12 Feb 2009 15:54:38 -0800 [thread overview]
Message-ID: <1234482880-1316-5-git-send-email-spearce@spearce.org> (raw)
In-Reply-To: <1234482880-1316-4-git-send-email-spearce@spearce.org>
This flag is currently only honored by "git push" to delete remote
refs if they are also gone on the source side. It also causes the
default push spec to be "+refs/*:refs/*" if the user hasn't given
us any other push specs.
This change only implements the config file parsing for the mirror
flag, as there's still a chunk of code needed on the transport to
actually honor it.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
---
.../org/spearce/jgit/transport/RemoteConfig.java | 40 +++++++++++++++++++-
1 files changed, 39 insertions(+), 1 deletions(-)
diff --git a/org.spearce.jgit/src/org/spearce/jgit/transport/RemoteConfig.java b/org.spearce.jgit/src/org/spearce/jgit/transport/RemoteConfig.java
index 5bbf664..519a8a5 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/transport/RemoteConfig.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/transport/RemoteConfig.java
@@ -68,6 +68,10 @@
private static final String KEY_TAGOPT = "tagopt";
+ private static final String KEY_MIRROR = "mirror";
+
+ private static final boolean DEFAULT_MIRROR = false;
+
/** Default value for {@link #getUploadPack()} if not specified. */
public static final String DEFAULT_UPLOAD_PACK = "git-upload-pack";
@@ -114,6 +118,8 @@
private TagOpt tagopt;
+ private boolean mirror;
+
/**
* Parse a remote block from an existing configuration file.
* <p>
@@ -163,6 +169,7 @@ public RemoteConfig(final RepositoryConfig rc, final String remoteName)
val = rc.getString(SECTION, name, KEY_TAGOPT);
tagopt = TagOpt.fromOption(val);
+ mirror = rc.getBoolean(SECTION, name, KEY_MIRROR, DEFAULT_MIRROR);
}
/**
@@ -192,16 +199,29 @@ public void update(final RepositoryConfig rc) {
set(rc, KEY_UPLOADPACK, getUploadPack(), DEFAULT_UPLOAD_PACK);
set(rc, KEY_RECEIVEPACK, getReceivePack(), DEFAULT_RECEIVE_PACK);
set(rc, KEY_TAGOPT, getTagOpt().option(), TagOpt.AUTO_FOLLOW.option());
+ set(rc, KEY_MIRROR, mirror, DEFAULT_MIRROR);
}
private void set(final RepositoryConfig rc, final String key,
final String currentValue, final String defaultValue) {
if (defaultValue.equals(currentValue))
- rc.unsetString(SECTION, getName(), key);
+ unset(rc, key);
else
rc.setString(SECTION, getName(), key, currentValue);
}
+ private void set(final RepositoryConfig rc, final String key,
+ final boolean currentValue, final boolean defaultValue) {
+ if (defaultValue == currentValue)
+ unset(rc, key);
+ else
+ rc.setBoolean(SECTION, getName(), key, currentValue);
+ }
+
+ private void unset(final RepositoryConfig rc, final String key) {
+ rc.unsetString(SECTION, getName(), key);
+ }
+
/**
* Get the local name this remote configuration is recognized as.
*
@@ -382,4 +402,22 @@ public TagOpt getTagOpt() {
public void setTagOpt(final TagOpt option) {
tagopt = option != null ? option : TagOpt.AUTO_FOLLOW;
}
+
+ /**
+ * @return true if pushing to the remote automatically deletes remote refs
+ * which don't exist on the source side.
+ */
+ public boolean isMirror() {
+ return mirror;
+ }
+
+ /**
+ * Set the mirror flag to automatically delete remote refs.
+ *
+ * @param m
+ * true to automatically delete remote refs during push.
+ */
+ public void setMirror(final boolean m) {
+ mirror = m;
+ }
}
--
1.6.2.rc0.226.gf08f
next prev parent reply other threads:[~2009-02-12 23:56 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-12 23:54 [JGIT PATCH 0/6] Add prune of stale tracking branches to fetch Shawn O. Pearce
2009-02-12 23:54 ` [JGIT PATCH 1/6] Fix RefUpdate.delete to update the result status Shawn O. Pearce
2009-02-12 23:54 ` [JGIT PATCH 2/6] Add setBoolean, setInt to RepositoryConfig Shawn O. Pearce
2009-02-12 23:54 ` [JGIT PATCH 3/6] Add RefSpec.expandFromDestination for reverse mappings Shawn O. Pearce
2009-02-12 23:54 ` Shawn O. Pearce [this message]
2009-02-12 23:54 ` [JGIT PATCH 5/6] Don't pass TagOpt to FetchProcess, get it from the Transport Shawn O. Pearce
2009-02-12 23:54 ` [JGIT PATCH 6/6] Teach fetch to prune stale tracking branches Shawn O. Pearce
2009-02-13 0:37 ` [JGIT PATCH 0/6] Add prune of stale tracking branches to fetch Junio C Hamano
2009-02-13 0:42 ` Shawn O. Pearce
2009-02-13 0:48 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1234482880-1316-5-git-send-email-spearce@spearce.org \
--to=spearce@spearce.org \
--cc=git@vger.kernel.org \
--cc=robin.rosenberg@dewire.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).