From: John Keeping <john@keeping.me.uk>
To: Ray Zhang <zhanglei002@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH v5] worktree: add: introduce --checkout option
Date: Tue, 29 Mar 2016 11:54:02 +0100 [thread overview]
Message-ID: <20160329105402.GB1578@serenity.lan> (raw)
In-Reply-To: <01020153c1dae323-b918e73f-f116-4760-9747-9aa8cafb2db5-000000@eu-west-1.amazonses.com>
On Tue, Mar 29, 2016 at 10:11:01AM +0000, Ray Zhang wrote:
> By adding this option which defaults to true, we can use the
> corresponding --no-checkout to make some customizations before
> the checkout, like sparse checkout, etc.
>
> Helped-by: Eric Sunshine <sunshine@sunshineco.com>
> Helped-by: Junio C Hamano <gitster@pobox.com>
> Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
> Signed-off-by: Ray Zhang <zhanglei002@gmail.com>
> ---
> Changes since last version of this patch[v4]:
> t/t2025-worktree-add.sh: use test -e to test file existence.
> builtin/worktree.c: refactor the code a little bit.
>
> [v4]: http://article.gmane.org/gmane.comp.version-control.git/290030
> [v3]: http://article.gmane.org/gmane.comp.version-control.git/289877
> [v2]: http://article.gmane.org/gmane.comp.version-control.git/289713
> [v1]: http://article.gmane.org/gmane.comp.version-control.git/289659
> ---
> Documentation/git-worktree.txt | 8 +++++++-
> builtin/worktree.c | 29 ++++++++++++++++++-----------
> t/t2025-worktree-add.sh | 12 ++++++++++++
> 3 files changed, 37 insertions(+), 12 deletions(-)
>
> diff --git a/Documentation/git-worktree.txt b/Documentation/git-worktree.txt
> index 62c76c1..c622345 100644
> --- a/Documentation/git-worktree.txt
> +++ b/Documentation/git-worktree.txt
> @@ -9,7 +9,7 @@ git-worktree - Manage multiple working trees
> SYNOPSIS
> --------
> [verse]
> -'git worktree add' [-f] [--detach] [-b <new-branch>] <path> [<branch>]
> +'git worktree add' [-f] [--detach] [--checkout] [-b <new-branch>] <path> [<branch>]
> 'git worktree prune' [-n] [-v] [--expire <expire>]
> 'git worktree list' [--porcelain]
>
> @@ -87,6 +87,12 @@ OPTIONS
> With `add`, detach HEAD in the new working tree. See "DETACHED HEAD"
> in linkgit:git-checkout[1].
>
> +--[no-]checkout::
This should be:
--checkout::
--no-checkout::
(see for example --progress in Documentation/merge-options.txt).
> + By default, `add` checks out `<branch>`, however, `--no-checkout` can
> + be used to suppress checkout in order to make customizations,
> + such as configuring sparse-checkout. See "Sparse checkout"
> + in linkgit:git-read-tree[1].
> +
> -n::
> --dry-run::
> With `prune`, do not remove anything; just report what it would
> diff --git a/builtin/worktree.c b/builtin/worktree.c
> index 38b5609..d8e3795 100644
> --- a/builtin/worktree.c
> +++ b/builtin/worktree.c
> @@ -21,6 +21,7 @@ static const char * const worktree_usage[] = {
> struct add_opts {
> int force;
> int detach;
> + int checkout;
> const char *new_branch;
> int force_new_branch;
> };
> @@ -284,18 +285,22 @@ static int add_worktree(const char *path, const char *refname,
> if (ret)
> goto done;
>
> - cp.argv = NULL;
> - argv_array_clear(&cp.args);
> - argv_array_pushl(&cp.args, "reset", "--hard", NULL);
> - cp.env = child_env.argv;
> - ret = run_command(&cp);
> - if (!ret) {
> - is_junk = 0;
> - free(junk_work_tree);
> - free(junk_git_dir);
> - junk_work_tree = NULL;
> - junk_git_dir = NULL;
> + if (opts->checkout) {
> + cp.argv = NULL;
> + argv_array_clear(&cp.args);
> + argv_array_pushl(&cp.args, "reset", "--hard", NULL);
> + cp.env = child_env.argv;
> + ret = run_command(&cp);
> + if (ret)
> + goto done;
> }
> +
> + is_junk = 0;
> + free(junk_work_tree);
> + free(junk_git_dir);
> + junk_work_tree = NULL;
> + junk_git_dir = NULL;
> +
> done:
> strbuf_reset(&sb);
> strbuf_addf(&sb, "%s/locked", sb_repo.buf);
> @@ -320,10 +325,12 @@ static int add(int ac, const char **av, const char *prefix)
> OPT_STRING('B', NULL, &new_branch_force, N_("branch"),
> N_("create or reset a branch")),
> OPT_BOOL(0, "detach", &opts.detach, N_("detach HEAD at named commit")),
> + OPT_BOOL(0, "checkout", &opts.checkout, N_("populate the new working tree")),
> OPT_END()
> };
>
> memset(&opts, 0, sizeof(opts));
> + opts.checkout = 1;
> ac = parse_options(ac, av, prefix, options, worktree_usage, 0);
> if (!!opts.detach + !!opts.new_branch + !!new_branch_force > 1)
> die(_("-b, -B, and --detach are mutually exclusive"));
> diff --git a/t/t2025-worktree-add.sh b/t/t2025-worktree-add.sh
> index cbfa41e..3acb992 100755
> --- a/t/t2025-worktree-add.sh
> +++ b/t/t2025-worktree-add.sh
> @@ -213,4 +213,16 @@ test_expect_success 'local clone from linked checkout' '
> ( cd here-clone && git fsck )
> '
>
> +test_expect_success '"add" worktree with --no-checkout' '
> + git worktree add --no-checkout -b swamp swamp &&
> + ! test -e swamp/init.t &&
> + git -C swamp reset --hard &&
> + test_cmp init.t swamp/init.t
> +'
> +
> +test_expect_success '"add" worktree with --checkout' '
> + git worktree add --checkout -b swmap2 swamp2 &&
> + test_cmp init.t swamp2/init.t
> +'
> +
> test_done
>
> --
> https://github.com/git/git/pull/217
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2016-03-29 10:54 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-23 15:08 [PATCH] add option -n (--no-checkout) to git-worktree add Ray Zhang
2016-03-23 15:49 ` Eric Sunshine
2016-03-23 15:51 ` Junio C Hamano
2016-03-23 17:43 ` Eric Sunshine
2016-03-24 6:07 ` [PATCH v2] worktree: add: introduce --checkout option Ray Zhang
2016-03-24 9:16 ` Duy Nguyen
2016-03-24 9:52 ` Zhang Lei
2016-03-25 1:22 ` Eric Sunshine
2016-03-25 1:29 ` Eric Sunshine
2016-03-25 1:49 ` Duy Nguyen
2016-03-25 11:31 ` Zhang Lei
2016-03-25 11:41 ` Duy Nguyen
2016-03-25 12:06 ` Zhang Lei
2016-03-25 12:15 ` Duy Nguyen
2016-03-25 13:02 ` Mike Rappazzo
2016-03-25 1:18 ` Eric Sunshine
2016-03-25 11:25 ` [PATCH v3] " Ray Zhang
2016-03-27 19:49 ` Eric Sunshine
2016-03-28 10:52 ` [PATCH v4] " Ray Zhang
2016-03-28 17:40 ` Junio C Hamano
2016-03-29 10:11 ` [PATCH v5] " Ray Zhang
2016-03-29 10:54 ` John Keeping [this message]
2016-03-29 18:04 ` Eric Sunshine
2016-03-29 20:15 ` John Keeping
2016-03-29 20:28 ` Junio C Hamano
2016-03-29 19:20 ` Eric Sunshine
2016-03-30 3:11 ` Zhang Lei
2016-03-30 17:59 ` Eric Sunshine
[not found] ` <CAPig+cSkE-xoaXnXHZHB4xz=ehCR973PaKbZJRyiTvHWn0AyoA@mail.gmail.com>
2016-03-29 18:43 ` [PATCH v4] " Eric Sunshine
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=20160329105402.GB1578@serenity.lan \
--to=john@keeping.me.uk \
--cc=git@vger.kernel.org \
--cc=zhanglei002@gmail.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.
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).