Re: [PATCH] worktree: new place for "git prune --worktrees"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Nguyễn Thái Ngọc Duy  <pclouds@xxxxxxxxx> writes:

> Commit 23af91d (prune: strategies for linked checkouts - 2014-11-30)
> adds "--worktrees" to "git prune" without realizing that "git prune" is
> for object database only. This patch moves the same functionality to a
> new command "git worktree".
>
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx>
> ---
>  In future I probably move the big block of text in git-checkout.txt to
>  git-worktree.txt and add "git worktree list". But let's start with
>  something small and simple before "git prune --worktrees" is shipped
>  out.

Thanks.  I notice that after applying this, builtin/prune.c does not
revert to the original before 23af91d.  It stops including "dir.h"
and it adds an extra blank line.  We've been including a header that
is not necessary even in v2.4.0, it seems.  We used to walk
$GIT_DIR/objects ourselves to find loose object files and "dir.h"
was needed for is_dot_or_dotdot(); for_each_loose_file_in_objdir()
is what we use these days to hide the implementation details these
days; 27e1e22 forgot to remove the inclusion when it did this.

The C code part is mostly just \C-x \C-v and I found nothing
questionable.

> diff --git a/command-list.txt b/command-list.txt
> index b17c011..2a94137 100644
> --- a/command-list.txt
> +++ b/command-list.txt
> @@ -148,4 +148,5 @@ git-verify-pack                         plumbinginterrogators
>  git-verify-tag                          ancillaryinterrogators
>  gitweb                                  ancillaryinterrogators
>  git-whatchanged                         ancillaryinterrogators
> +git-worktree                            mainporcelain

I doubt that a helper that is primarily spawned from "gc" as its
implementation detail is more mainporcelain than "git config" is:

   git-config                              ancillarymanipulators

I also wonder if "git worktree" command should have a mode that
works in a way similar to how new-workdir (in contrib/workdir) does,
instead of an option "checkout --to" that looks just out of place as
"worktree prune" was out of place in "prune".  The feature is doing
a lot more than what "checkout" normally does (somewhere in between
"checkout" and "clone", I would say), and it may be cleaner to use
an independent command "git worktree" to manage a separate worktree.

And when that happens, the command should definitely be classified
as a mainporcelain.

> diff --git a/git.c b/git.c
> index 44374b1..fa77bc9 100644
> --- a/git.c
> +++ b/git.c
> @@ -483,6 +483,7 @@ static struct cmd_struct commands[] = {
>  	{ "verify-tag", cmd_verify_tag, RUN_SETUP },
>  	{ "version", cmd_version },
>  	{ "whatchanged", cmd_whatchanged, RUN_SETUP },
> +	{ "worktree", cmd_worktree, RUN_SETUP },

We do not NEED_WORK_TREE because we can create a new worktree
off of a bare repository?
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]