All of lore.kernel.org
 help / color / mirror / Atom feed
From: Duy Nguyen <pclouds@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Re: [PATCH 00/25] worktree lock, move, remove and unlock
Date: Fri, 15 Apr 2016 07:40:30 +0700	[thread overview]
Message-ID: <CACsJy8DK863+rgseeYrQJ1db+xSeFfm8WsNvGBmJwD_pr1yMJQ@mail.gmail.com> (raw)
In-Reply-To: <xmqqfuuoi35o.fsf@gitster.mtv.corp.google.com>

On Thu, Apr 14, 2016 at 11:08 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
>
>> This is basically a resend from last time, which happened during rc
>> time.
>
> It would have made them a much more pleasant read if you re-read
> them during that time and added the missing "why" to many of the
> commit log message.

Hmm... I thought I didn't receive any comments last time.

>> It adds 4 more commands, basically cleaning up the "TODO" list
>> in git-worktree.txt.
>>
>> So far I've only actually used move and remove (and maybe unlock once
>> because worktree-add failed on me and I had to unlock it manually).
>> And I don't get to move worktrees a lot either so not really extensive
>> testing.
>>
>>   [01/25] usage.c: move format processing out of die_errno()
>>   [02/25] usage.c: add sys_error() that prints strerror() automatically
>
> This looks parallel to die_errno(); isn't error_errno() a better name?

To me, no. Duplicating the "err" looks weird. error_no() does not look
good either. Though there's a couple of warning(..., strerror()),
which could become warning_errno(). Then maybe error_errno() makes
more sense because all three follow the same naming convention.

>>   [03/25] copy.c: import copy_file() from busybox
>>   [04/25] copy.c: delete unused code in copy_file()
>>   [05/25] copy.c: convert bb_(p)error_msg to (sys_)error
>>   [06/25] copy.c: style fix
>>   [07/25] copy.c: convert copy_file() to copy_dir_recursively()
>
> Somewhere among these, there needs to be a single overview of why we
> want "cp" implementation of busybox, e.g. what part of "cp" we want?
> the whole thing?  or "because this is to be used from this and that
> codepaths to make copy of these things, we only need these parts and
> can remove other features like this and that?"

We need directory move functionality. In the worst case when
rename(<dir>, <dir>) wouldn't do the job, we have to fall back to
copying the whole directory over, preserving metadata as much as
possible, then delete the old directory. I don't want to write new
code for this because I think it shows in busybox code that there are
pitfalls in dealing with filesystems. And I don't want to fall back to
/bin/cp either. Windows won't have one (long term I hope we won't need
msys) and *nix is not famous for consistent command line behavior.
Plus, if we want to clean up a failed cp operation, it's easier to do
it in core by keeping track of what files have been copied.

>>   [08/25] completion: support git-worktree
>>   [09/25] git-worktree.txt: keep subcommand listing in alphabetical order
>
> I'd defer doing this immediately before 21 if I were doing this
> series.

Will do.

> Offhand, I think it makes it easier to look things up in an
> alphabetical list in the description section, but it probably is
> easier to get an overview if the synopsis part groups things along
> concepts and/or lists things along the order in typical workflows
> (e.g. "create, list, rename, remove" would be a list along
> lifecycle), not alphabetical.
>
> But such judgement is better done when we know what are the final
> elements that are to be listed, i.e. closer to where new things are
> introduced.  This is especially true, as the log messages of patches
> leading to 21 are all sketchy and do not give the readers a good
> birds-view picture.

Well. I think all the commands are there now at the end of this
series. So we have add, list, prune, move, remove, lock and unlock. I
guess we can group list/add/move/remove together and the rest as
support commands. I might add "git worktree migrate" for converting
between worktree v0 and v1. But it's not clear yet.

>>   [10/25] path.c: add git_common_path() and strbuf_git_common_path()
>
> Write "what for" when adding a new API function.  "Wanting to learn
> X is very common and there are many existing code or new code that
> repeats sequence A, B and C to compute it.  Give a helper function
> to do so to refactor the existing codepaths" or something like that?

Pretty much for convenience. Will add some more in commit message.

> Move some part of [12/25] that is not about "store 'id'" but is
> about this refactoring to this commit.
>
>>   [11/25] worktree.c: use is_dot_or_dotdot()
>>   [12/25] worktree.c: store "id" instead of "git_dir"
>
> It is better to have these (and other conceptually "small and
> obvious" ones) as preliminary clean-up to make the main body of the
> series that may need to go through iterations smaller.

Sure.
-- 
Duy

  reply	other threads:[~2016-04-15  0:41 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-13 13:15 [PATCH 00/25] worktree lock, move, remove and unlock Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 01/25] usage.c: move format processing out of die_errno() Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 02/25] usage.c: add sys_error() that prints strerror() automatically Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 03/25] copy.c: import copy_file() from busybox Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 04/25] copy.c: delete unused code in copy_file() Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 05/25] copy.c: convert bb_(p)error_msg to (sys_)error Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 06/25] copy.c: style fix Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 07/25] copy.c: convert copy_file() to copy_dir_recursively() Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 08/25] completion: support git-worktree Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 09/25] git-worktree.txt: keep subcommand listing in alphabetical order Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 10/25] path.c: add git_common_path() and strbuf_git_common_path() Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 11/25] worktree.c: use is_dot_or_dotdot() Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 12/25] worktree.c: store "id" instead of "git_dir" Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 13/25] worktree.c: add clear_worktree() Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 14/25] worktree.c: add find_worktree_by_path() Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 15/25] worktree.c: add is_main_worktree() Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 16/25] worktree.c: add validate_worktree() Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 17/25] worktree.c: add update_worktree_location() Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 18/25] worktree.c: add is_worktree_locked() Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 19/25] worktree: avoid 0{40}, too many zeroes, hard to read Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 20/25] worktree: simplify prefixing paths Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 21/25] worktree: add "lock" command Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 22/25] worktree: add "unlock" command Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 23/25] worktree: add "move" commmand Nguyễn Thái Ngọc Duy
2016-04-13 13:15 ` [PATCH 24/25] worktree move: accept destination as directory Nguyễn Thái Ngọc Duy
2016-05-11  4:43   ` Eric Sunshine
2016-05-11 13:34     ` Duy Nguyen
2016-05-11 17:32       ` Eric Sunshine
2016-05-11 18:32         ` Johannes Sixt
2016-05-11 21:34           ` Junio C Hamano
2016-05-12  5:58             ` Johannes Sixt
2016-04-13 13:15 ` [PATCH 25/25] worktree: add "remove" command Nguyễn Thái Ngọc Duy
2016-04-14 16:08 ` [PATCH 00/25] worktree lock, move, remove and unlock Junio C Hamano
2016-04-15  0:40   ` Duy Nguyen [this message]
2016-04-15  1:21     ` Junio C Hamano

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=CACsJy8DK863+rgseeYrQJ1db+xSeFfm8WsNvGBmJwD_pr1yMJQ@mail.gmail.com \
    --to=pclouds@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.