From: git@jeffhostetler.com
To: git@vger.kernel.org
Cc: jeffhost@microsoft.com, peff@peff.net, gitster@pobox.com,
markbt@efaref.net, benpeart@microsoft.com,
jonathantanmy@google.com, Jeff Hostetler <git@jeffhostetler.com>
Subject: [PATCH 09/10] clone: add partial-by-size and partial-special arguments
Date: Wed, 8 Mar 2017 18:50:38 +0000 [thread overview]
Message-ID: <1488999039-37631-10-git-send-email-git@jeffhostetler.com> (raw)
In-Reply-To: <1488999039-37631-1-git-send-email-git@jeffhostetler.com>
From: Jeff Hostetler <git@jeffhostetler.com>
Teach clone to accept --partial-by-size=n and --partial-special
arguments to request that the server omit certain blobs from
the generated packfile.
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
---
builtin/clone.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/builtin/clone.c b/builtin/clone.c
index 3f63edb..e5a5904 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -56,6 +56,8 @@ static struct string_list option_required_reference = STRING_LIST_INIT_NODUP;
static struct string_list option_optional_reference = STRING_LIST_INIT_NODUP;
static int option_dissociate;
static int max_jobs = -1;
+static const char *partial_by_size;
+static int partial_special;
static struct option builtin_clone_options[] = {
OPT__VERBOSITY(&option_verbosity),
@@ -112,6 +114,11 @@ static struct option builtin_clone_options[] = {
TRANSPORT_FAMILY_IPV4),
OPT_SET_INT('6', "ipv6", &family, N_("use IPv6 addresses only"),
TRANSPORT_FAMILY_IPV6),
+ OPT_STRING(0, "partial-by-size", &partial_by_size,
+ N_("size"),
+ N_("only include blobs smaller than this")),
+ OPT_BOOL(0, "partial-special", &partial_special,
+ N_("only include blobs for git special files")),
OPT_END()
};
@@ -625,6 +632,9 @@ static void update_remote_refs(const struct ref *refs,
if (check_connectivity) {
struct check_connected_options opt = CHECK_CONNECTED_INIT;
+ if (partial_by_size || partial_special)
+ opt.allow_partial = 1;
+
opt.transport = transport;
opt.progress = transport->progress;
@@ -1021,6 +1031,10 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
warning(_("--shallow-since is ignored in local clones; use file:// instead."));
if (option_not.nr)
warning(_("--shallow-exclude is ignored in local clones; use file:// instead."));
+ if (partial_by_size)
+ warning(_("--partial-by-size is ignored in local clones; use file:// instead."));
+ if (partial_special)
+ warning(_("--partial-special is ignored in local clones; use file:// instead."));
if (!access(mkpath("%s/shallow", path), F_OK)) {
if (option_local > 0)
warning(_("source repository is shallow, ignoring --local"));
@@ -1052,6 +1066,18 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
transport_set_option(transport, TRANS_OPT_UPLOADPACK,
option_upload_pack);
+ if (partial_by_size) {
+ transport_set_option(transport, TRANS_OPT_PARTIAL_BY_SIZE,
+ partial_by_size);
+ if (transport->smart_options)
+ transport->smart_options->partial_by_size = partial_by_size;
+ }
+ if (partial_special) {
+ transport_set_option(transport, TRANS_OPT_PARTIAL_SPECIAL, "yes");
+ if (transport->smart_options)
+ transport->smart_options->partial_special = 1;
+ }
+
if (transport->smart_options && !deepen)
transport->smart_options->check_self_contained_and_connected = 1;
--
2.7.4
next prev parent reply other threads:[~2017-03-08 20:47 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-08 18:50 [PATCH 00/10] RFC Partial Clone and Fetch git
2017-03-08 18:50 ` [PATCH 01/10] pack-objects: eat CR in addition to LF after fgets git
2017-03-08 18:50 ` [PATCH 02/10] pack-objects: add --partial-by-size=n --partial-special git
2017-03-08 18:50 ` [PATCH 03/10] pack-objects: test for --partial-by-size --partial-special git
2017-03-08 18:50 ` [PATCH 04/10] upload-pack: add partial (sparse) fetch git
2017-03-08 18:50 ` [PATCH 05/10] fetch-pack: add partial-by-size and partial-special git
2017-03-08 18:50 ` [PATCH 06/10] rev-list: add --allow-partial option to relax connectivity checks git
2017-03-08 18:50 ` [PATCH 07/10] index-pack: add --allow-partial option to relax blob existence checks git
2017-03-08 18:50 ` [PATCH 08/10] fetch: add partial-by-size and partial-special arguments git
2017-03-08 18:50 ` git [this message]
2017-03-08 18:50 ` [PATCH 10/10] ls-partial: created command to list missing blobs git
2017-03-09 20:18 ` [PATCH 00/10] RFC Partial Clone and Fetch Jonathan Tan
2017-03-16 21:43 ` Jeff Hostetler
2017-03-17 14:13 ` Jeff Hostetler
2017-03-22 15:16 ` ankostis
2017-03-22 16:21 ` Johannes Schindelin
2017-03-22 17:51 ` Jeff Hostetler
2017-05-03 16:38 ` Jeff Hostetler
2017-05-03 18:27 ` Jonathan Nieder
2017-05-04 16:51 ` Jeff Hostetler
2017-05-04 18:41 ` Jonathan Nieder
2017-05-08 0:15 ` Junio C Hamano
2017-05-03 20:40 ` Jonathan Tan
2017-05-03 21:08 ` Jonathan Nieder
-- strict thread matches above, loose matches on Subject: below --
2017-03-08 17:37 Jeff Hostetler
2017-03-08 17:38 ` [PATCH 09/10] clone: add partial-by-size and partial-special arguments Jeff Hostetler
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1488999039-37631-10-git-send-email-git@jeffhostetler.com \
--to=git@jeffhostetler.com \
--cc=benpeart@microsoft.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jeffhost@microsoft.com \
--cc=jonathantanmy@google.com \
--cc=markbt@efaref.net \
--cc=peff@peff.net \
/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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).