From: David Turner <dturner@twopensource.com>
To: git@vger.kernel.org, mhagger@alum.mit.edu
Cc: David Turner <dturner@twopensource.com>
Subject: [PATCH 14/16] refs: allow ref backend to be set for clone
Date: Wed, 2 Dec 2015 19:35:19 -0500 [thread overview]
Message-ID: <1449102921-7707-15-git-send-email-dturner@twopensource.com> (raw)
In-Reply-To: <1449102921-7707-1-git-send-email-dturner@twopensource.com>
Add a new option, --refs-backend-type, to allow the ref backend type to
be set on new clones.
Submodules must use the same ref backend as the parent repository, so
we also pass the --refs-backend-type option option when cloning
submodules.
Signed-off-by: David Turner <dturner@twopensource.com>
---
Documentation/git-clone.txt | 4 ++++
builtin/clone.c | 27 +++++++++++++++++++++++++--
builtin/submodule--helper.c | 5 ++++-
cache.h | 1 +
4 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
index 6bf000d..431575b 100644
--- a/Documentation/git-clone.txt
+++ b/Documentation/git-clone.txt
@@ -14,6 +14,7 @@ SYNOPSIS
[-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
[--dissociate] [--separate-git-dir <git dir>]
[--depth <depth>] [--[no-]single-branch]
+ [--refs-backend-type=<name>]
[--recursive | --recurse-submodules] [--] <repository>
[<directory>]
@@ -221,6 +222,9 @@ objects from the source repository into a pack in the cloned repository.
The result is Git repository can be separated from working
tree.
+--refs-backend-type=<name>::
+ Type of refs backend. Default is to use the original files based
+ backend.
<repository>::
The (possibly remote) repository to clone from. See the
diff --git a/builtin/clone.c b/builtin/clone.c
index caae43e..a53f341 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -92,11 +92,13 @@ static struct option builtin_clone_options[] = {
N_("separate git dir from working tree")),
OPT_STRING_LIST('c', "config", &option_config, N_("key=value"),
N_("set config inside the new repository")),
+ OPT_STRING(0, "refs-backend-type", &refs_backend_type,
+ N_("name"), N_("name of backend type to use")),
OPT_END()
};
static const char *argv_submodule[] = {
- "submodule", "update", "--init", "--recursive", NULL
+ "submodule", "update", "--init", "--recursive", NULL, NULL
};
static const char *get_repo_path_1(struct strbuf *path, int *is_bundle)
@@ -724,8 +726,24 @@ static int checkout(void)
err |= run_hook_le(NULL, "post-checkout", sha1_to_hex(null_sha1),
sha1_to_hex(sha1), "1", NULL);
- if (!err && option_recursive)
+ if (!err && option_recursive) {
+ const char **backend_arg = argv_submodule;
+ char *new_backend_arg = NULL;
+ if (refs_backend_type) {
+ while (*backend_arg)
+ ++backend_arg;
+
+ new_backend_arg = xmalloc(21 + strlen(refs_backend_type));
+ sprintf(new_backend_arg, "--refs-backend-type=%s",
+ refs_backend_type);
+ *backend_arg = new_backend_arg;
+ }
err = run_command_v_opt(argv_submodule, RUN_GIT_CMD);
+ if (refs_backend_type) {
+ free(new_backend_arg);
+ *backend_arg = NULL;
+ }
+ }
return err;
}
@@ -744,6 +762,11 @@ static void write_config(struct string_list *config)
write_one_config, NULL) < 0)
die("unable to write parameters to config file");
}
+
+ if (refs_backend_type &&
+ write_one_config("core.refsBackendType",
+ refs_backend_type, NULL) < 0)
+ die("unable to write backend parameter to config file");
}
static void write_refspec_config(const char *src_ref_prefix,
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index f4c3eff..5c9ca4e 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -140,7 +140,10 @@ static int clone_submodule(const char *path, const char *gitdir, const char *url
argv_array_pushl(&cp.args, "--reference", reference, NULL);
if (gitdir && *gitdir)
argv_array_pushl(&cp.args, "--separate-git-dir", gitdir, NULL);
-
+ if (refs_backend_type && *refs_backend_type) {
+ argv_array_push(&cp.args, "--refs-backend-type");
+ argv_array_push(&cp.args, refs_backend_type);
+ }
argv_array_push(&cp.args, url);
argv_array_push(&cp.args, path);
diff --git a/cache.h b/cache.h
index d1534db..8f2ca55 100644
--- a/cache.h
+++ b/cache.h
@@ -695,6 +695,7 @@ enum object_creation_mode {
extern enum object_creation_mode object_creation_mode;
extern char *notes_ref_name;
+extern const char *refs_backend_type;
extern const char *refs_backend_type;
--
2.4.2.749.g0ed01d8-twtrsrc
next prev parent reply other threads:[~2015-12-03 0:36 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-03 0:35 [PATCH 00/16] LMDB refs backend atop pre-vtable David Turner
2015-12-03 0:35 ` [PATCH 01/16] refs: add a backend method structure with transaction functions David Turner
2015-12-05 0:07 ` Junio C Hamano
2015-12-03 0:35 ` [PATCH 02/16] refs: add methods for misc ref operations David Turner
2015-12-11 23:33 ` Junio C Hamano
2015-12-11 23:49 ` David Turner
2015-12-11 23:39 ` Junio C Hamano
2015-12-11 23:49 ` David Turner
2015-12-12 0:23 ` Junio C Hamano
2015-12-12 0:48 ` David Turner
2015-12-18 4:06 ` Howard Chu
2015-12-03 0:35 ` [PATCH 03/16] refs: add methods for the ref iterators David Turner
2016-01-03 0:06 ` David Aguilar
2016-01-04 19:01 ` Junio C Hamano
2016-01-05 13:43 ` Michael Haggerty
2016-01-05 18:56 ` Junio C Hamano
2016-01-04 19:12 ` Ronnie Sahlberg
2016-01-04 20:26 ` Junio C Hamano
2016-01-05 1:17 ` Jeff King
2016-01-05 3:29 ` Junio C Hamano
2015-12-03 0:35 ` [PATCH 04/16] refs: add do_for_each_per_worktree_ref David Turner
2015-12-11 23:52 ` Junio C Hamano
2015-12-12 0:01 ` David Turner
2015-12-03 0:35 ` [PATCH 05/16] refs: add methods for reflog David Turner
2015-12-03 0:35 ` [PATCH 06/16] refs: add method for initial ref transaction commit David Turner
2015-12-03 0:35 ` [PATCH 07/16] refs: add method for delete_refs David Turner
2015-12-03 0:35 ` [PATCH 08/16] refs: add methods to init refs backend and db David Turner
2015-12-23 5:33 ` Michael Haggerty
2015-12-23 6:54 ` David Turner
2015-12-03 0:35 ` [PATCH 09/16] refs: add method to rename refs David Turner
2015-12-03 0:35 ` [PATCH 10/16] refs: make lock generic David Turner
2015-12-03 0:35 ` [PATCH 11/16] refs: move duplicate check to common code David Turner
2015-12-23 6:27 ` Michael Haggerty
2016-01-05 16:42 ` David Turner
2015-12-03 0:35 ` [PATCH 12/16] refs: always handle non-normal refs in files backend David Turner
2015-12-23 8:02 ` Michael Haggerty
2016-01-06 0:13 ` David Turner
2016-01-06 23:41 ` [PATCH/RFC v2 1/3] refs: allow log-only updates David Turner
2016-01-06 23:41 ` [PATCH/RFC v2 2/3] refs: resolve symbolic refs first David Turner
2016-01-06 23:41 ` [PATCH/RFC v2 3/3] refs: always handle non-normal refs in files backend David Turner
2016-01-08 12:52 ` David Turner
2016-01-06 23:42 ` [PATCH 12/16] " David Turner
2015-12-03 0:35 ` [PATCH 13/16] init: allow alternate backends to be set for new repos David Turner
2015-12-05 0:07 ` Junio C Hamano
2015-12-05 6:30 ` Duy Nguyen
2015-12-05 7:44 ` Jeff King
2015-12-08 0:38 ` David Turner
2015-12-23 9:52 ` Michael Haggerty
2015-12-23 20:01 ` Jeff King
2015-12-10 18:02 ` Jeff King
2015-12-10 19:36 ` David Turner
2015-12-23 11:30 ` [PATCH] clone: use child_process for recursive checkouts Michael Haggerty
2016-01-06 23:41 ` David Turner
2015-12-23 13:34 ` [PATCH 13/16] init: allow alternate backends to be set for new repos Michael Haggerty
2016-01-05 17:26 ` David Turner
2016-01-05 18:03 ` Junio C Hamano
2016-01-05 18:24 ` David Turner
2016-01-06 12:02 ` Michael Haggerty
2016-01-06 12:52 ` Duy Nguyen
2016-01-07 3:31 ` Shawn Pearce
2015-12-03 0:35 ` David Turner [this message]
2015-12-23 13:51 ` [PATCH 14/16] refs: allow ref backend to be set for clone Michael Haggerty
2015-12-23 20:23 ` Eric Sunshine
2015-12-03 0:35 ` [PATCH 15/16] refs: add LMDB refs backend David Turner
2015-12-05 0:08 ` Junio C Hamano
2015-12-05 0:25 ` David Turner
2015-12-17 1:00 ` Jonathan Nieder
2015-12-17 2:31 ` David Turner
2015-12-17 20:49 ` Jonathan Nieder
2015-12-23 14:32 ` Michael Haggerty
2016-01-08 16:05 ` David Turner
2015-12-03 0:35 ` [PATCH 16/16] refs: tests for lmdb backend David Turner
2015-12-22 23:56 ` [PATCH 00/16] LMDB refs backend atop pre-vtable David Turner
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=1449102921-7707-15-git-send-email-dturner@twopensource.com \
--to=dturner@twopensource.com \
--cc=git@vger.kernel.org \
--cc=mhagger@alum.mit.edu \
/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).