On Wed, Dec 10, 2014 at 11:49:49PM +, brian m. carlson wrote:
From: brian m. carlson brian.carl...@cpanel.net
Thin packs are enabled when pushing by default, but with a large number
of refs and a fast network, git may spend more time trying to find a
good delta than it would spend simply sending data over the network.
Add a per-remote option, pushThin, that controls the default for pushes
on that remote.
I just realized this patch doesn't apply outside of the particular repo
I was using. Consider this more of an RFC, since I'd like to avoid
going this route if possible, in favor of a more robust approach.
Signed-off-by: brian m. carlson brian.carl...@cpanel.net
---
SOURCES/git/Documentation/config.txt | 6 ++
SOURCES/git/builtin/push.c | 6 --
SOURCES/git/remote.c | 3 +++
SOURCES/git/remote.h | 1 +
SOURCES/git/transport.c | 2 ++
5 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/SOURCES/git/Documentation/config.txt
b/SOURCES/git/Documentation/config.txt
index 9220725..7fededd 100644
--- a/SOURCES/git/Documentation/config.txt
+++ b/SOURCES/git/Documentation/config.txt
@@ -2178,6 +2178,12 @@ remote.name.push::
The default set of refspec for linkgit:git-push[1]. See
linkgit:git-push[1].
+remote.name.pushThin::
+ If true (the default), pass the \--thin option to
+ linkgit:git-pack-objects[1] during push. This results in a smaller
+ pack being sent and can improve push time over slow networks. Over
+ fast networks, setting this value to false may improve performance.
+
remote.name.mirror::
If true, pushing to this remote will automatically behave
as if the `--mirror` option was given on the command line.
diff --git a/SOURCES/git/builtin/push.c b/SOURCES/git/builtin/push.c
index a076b19..ae39677 100644
--- a/SOURCES/git/builtin/push.c
+++ b/SOURCES/git/builtin/push.c
@@ -15,7 +15,7 @@ static const char * const push_usage[] = {
NULL,
};
-static int thin = 1;
+static int thin = -1;
static int deleterefs;
static const char *receivepack;
static int verbosity;
@@ -347,7 +347,9 @@ static int push_with_options(struct transport *transport,
int flags)
if (receivepack)
transport_set_option(transport,
TRANS_OPT_RECEIVEPACK, receivepack);
- transport_set_option(transport, TRANS_OPT_THIN, thin ? yes : NULL);
+
+ if (thin != -1)
+ transport_set_option(transport, TRANS_OPT_THIN, thin ? yes :
NULL);
if (!is_empty_cas(cas)) {
if (!transport-smart_options)
diff --git a/SOURCES/git/remote.c b/SOURCES/git/remote.c
index f624217..54777cb 100644
--- a/SOURCES/git/remote.c
+++ b/SOURCES/git/remote.c
@@ -175,6 +175,7 @@ static struct remote *make_remote(const char *name, int
len)
ret = xcalloc(1, sizeof(struct remote));
ret-prune = -1; /* unspecified */
+ ret-push_thin = 1; /* default on */
ALLOC_GROW(remotes, remotes_nr + 1, remotes_alloc);
remotes[remotes_nr++] = ret;
ret-name = xstrndup(name, len);
@@ -445,6 +446,8 @@ static int handle_config(const char *key, const char
*value, void *cb)
if (git_config_string(v, key, value))
return -1;
add_push_refspec(remote, v);
+ } else if (!strcmp(subkey, .pushthin)) {
+ remote-push_thin = git_config_bool(key, value);
} else if (!strcmp(subkey, .fetch)) {
const char *v;
if (git_config_string(v, key, value))
diff --git a/SOURCES/git/remote.h b/SOURCES/git/remote.h
index 8b62efd..badf266 100644
--- a/SOURCES/git/remote.h
+++ b/SOURCES/git/remote.h
@@ -46,6 +46,7 @@ struct remote {
int skip_default_update;
int mirror;
int prune;
+ int push_thin;
const char *receivepack;
const char *uploadpack;
diff --git a/SOURCES/git/transport.c b/SOURCES/git/transport.c
index 70d38e4..2f495fa 100644
--- a/SOURCES/git/transport.c
+++ b/SOURCES/git/transport.c
@@ -987,6 +987,8 @@ struct transport *transport_get(struct remote *remote,
const char *url)
ret-smart_options-receivepack = remote-receivepack;
}
+ transport_set_option(ret, TRANS_OPT_THIN, remote-push_thin ? yes :
NULL);
+
return ret;
}
--
2.2.0
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
brian m. carlson / brian with sandals: Houston, Texas, US
+1 832 623 2791 | http://www.crustytoothpaste.net/~bmc | My opinion only
OpenPGP: RSA v4 4096b: 88AC E9B2 9196 305B A994 7552 F1BA 225C 0223 B187
signature.asc
Description: Digital signature