From: Shaoxuan Yuan <shaoxuan.yuan02@gmail.com>
To: Victoria Dye <vdye@github.com>
Cc: derrickstolee@github.com, gitster@pobox.com, git@vger.kernel.org
Subject: Re: [PATCH v1 2/7] mv: add documentation for check_dir_in_index()
Date: Thu, 21 Jul 2022 22:20:25 +0800 [thread overview]
Message-ID: <191bcdca-c7fd-665c-78ce-ef4c5843d13d@gmail.com> (raw)
In-Reply-To: <6188fab7-df5e-b3fb-92a2-47039254ac45@github.com>
On 7/20/2022 2:01 AM, Victoria Dye wrote:
> Shaoxuan Yuan wrote:
>> Using check_dir_in_index without checking if the directory is on-disk
>> could get a false positive for partially sparsified directory.
>>
>> Add a note in the documentation to warn potential user.
>>
>> Signed-off-by: Shaoxuan Yuan <shaoxuan.yuan02@gmail.com>
>> ---
>> builtin/mv.c | 5 +++++
>> 1 file changed, 5 insertions(+)
>>
>> diff --git a/builtin/mv.c b/builtin/mv.c
>> index 4729bb1a1a..c8b9069db8 100644
>> --- a/builtin/mv.c
>> +++ b/builtin/mv.c
>> @@ -132,6 +132,11 @@ static int index_range_of_same_dir(const char
*src, int length,
>> * Return 0 if such directory exist (i.e. with any of its contained
files not
>> * marked with CE_SKIP_WORKTREE, the directory would be present in
working tree).
>> * Return 1 otherwise.
>> + *
>> + * Note: *always* check the directory is not on-disk before this
function
>> + * (i.e. using lstat());
>> + * otherwise it may return a false positive for a partially sparsified
>> + * directory.
>
> To me, a comment like this indicates that either the function is not
doing
> what it should be doing, or its name doesn't properly describe the
> function's behavior.
>
> Per the function description:
>
> Check if an out-of-cone directory should be in the index. Imagine
> this case that all the files under a directory are marked with
> 'CE_SKIP_WORKTREE' bit and thus the directory is sparsified.
>
> But neither the name of the function ('check_dir_in_index') nor the
> function's behavior (hence the comment you're adding here) match that
> description.
>
> Since this function is intended to verify that a directory 1) exists
in the
> index, and 2) is *entirely* sparse, I have two suggestions:
>
> * Change the description to specify that the non-existence of the
directory
> on disk is an *assumption*, not an opportunity for a "false positive."
> It's a subtle distinction, but it clarifies that the function should be
> used only when the caller already knows the directory is empty. For
> example:
>
> /*
> * Given the path of a directory that does not exist on-disk,
check whether the
> * directory contains any entries in the index with the
SKIP_WORKTREE flag
> * enabled.
> *
> * Return 1 if such index entries exist.
> * Return 0 otherwise.
> */
>
> * 'check_dir_in_index' doesn't reflect the "is not on disk"
prerequisite, so
> the function name can be updated to clarify that (e.g.,
> 'empty_dir_has_sparse_contents')
>
I really breathed a sigh of relief after seeing these two points :-)
They word things out much better than the original ones.
--
Thanks,
Shaoxuan
next prev parent reply other threads:[~2022-07-21 14:20 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-19 13:28 [PATCH v1 0/7] mv: from in-cone to out-of-cone Shaoxuan Yuan
2022-07-19 13:28 ` [PATCH v1 1/7] t7002: add tests for moving " Shaoxuan Yuan
2022-07-19 14:52 ` Ævar Arnfjörð Bjarmason
2022-07-19 17:36 ` Derrick Stolee
2022-07-19 18:30 ` Junio C Hamano
2022-07-19 13:28 ` [PATCH v1 2/7] mv: add documentation for check_dir_in_index() Shaoxuan Yuan
2022-07-19 17:43 ` Derrick Stolee
2022-07-21 13:58 ` Shaoxuan Yuan
2022-07-19 18:01 ` Victoria Dye
2022-07-19 18:10 ` Victoria Dye
2022-07-21 14:20 ` Shaoxuan Yuan [this message]
2022-07-19 13:28 ` [PATCH v1 3/7] mv: free the *with_slash in check_dir_in_index() Shaoxuan Yuan
2022-07-19 17:46 ` Derrick Stolee
2022-07-19 13:28 ` [PATCH v1 4/7] mv: check if <destination> is a SKIP_WORKTREE_DIR Shaoxuan Yuan
2022-07-19 17:59 ` Derrick Stolee
2022-07-21 14:13 ` Shaoxuan Yuan
2022-07-22 12:48 ` Derrick Stolee
2022-07-22 18:40 ` Junio C Hamano
2022-07-19 13:28 ` [PATCH v1 5/7] mv: remove BOTH from enum update_mode Shaoxuan Yuan
2022-07-19 18:00 ` Derrick Stolee
2022-07-19 13:28 ` [PATCH v1 6/7] mv: from in-cone to out-of-cone Shaoxuan Yuan
2022-07-19 18:14 ` Derrick Stolee
2022-08-03 11:50 ` Shaoxuan Yuan
2022-08-03 14:30 ` Derrick Stolee
2022-08-04 8:40 ` Shaoxuan Yuan
2022-07-19 13:28 ` [PATCH v1 7/7] mv: check overwrite for in-to-out move Shaoxuan Yuan
2022-07-19 18:15 ` Derrick Stolee
2022-07-19 18:16 ` [PATCH v1 0/7] mv: from in-cone to out-of-cone Derrick Stolee
2022-08-05 3:05 ` [PATCH v2 0/9] " Shaoxuan Yuan
2022-08-05 3:05 ` [PATCH v2 1/9] t7002: add tests for moving " Shaoxuan Yuan
2022-08-09 0:51 ` Victoria Dye
2022-08-09 2:55 ` Shaoxuan Yuan
2022-08-09 11:24 ` Shaoxuan Yuan
2022-08-09 7:53 ` Shaoxuan Yuan
2022-08-05 3:05 ` [PATCH v2 2/9] mv: rename check_dir_in_index() to empty_dir_has_sparse_contents() Shaoxuan Yuan
2022-08-05 3:05 ` [PATCH v2 3/9] mv: free the *with_slash in check_dir_in_index() Shaoxuan Yuan
2022-08-08 23:41 ` Victoria Dye
2022-08-09 2:33 ` Shaoxuan Yuan
2022-08-05 3:05 ` [PATCH v2 4/9] mv: check if <destination> is a SKIP_WORKTREE_DIR Shaoxuan Yuan
2022-08-08 23:41 ` Victoria Dye
2022-08-09 0:23 ` Victoria Dye
2022-08-09 2:31 ` Shaoxuan Yuan
2022-08-05 3:05 ` [PATCH v2 5/9] mv: remove BOTH from enum update_mode Shaoxuan Yuan
2022-08-05 3:05 ` [PATCH v2 6/9] mv: from in-cone to out-of-cone Shaoxuan Yuan
2022-08-09 0:53 ` Victoria Dye
2022-08-09 3:16 ` Shaoxuan Yuan
2022-08-05 3:05 ` [PATCH v2 7/9] mv: cleanup empty WORKING_DIRECTORY Shaoxuan Yuan
2022-08-05 3:05 ` [PATCH v2 8/9] advice.h: add advise_on_moving_dirty_path() Shaoxuan Yuan
2022-08-05 3:05 ` [PATCH v2 9/9] mv: check overwrite for in-to-out move Shaoxuan Yuan
2022-08-08 23:53 ` Victoria Dye
2022-08-09 12:09 ` [PATCH v3 0/9] mv: from in-cone to out-of-cone Shaoxuan Yuan
2022-08-09 12:09 ` [PATCH v3 1/9] t7002: add tests for moving " Shaoxuan Yuan
2022-08-09 12:09 ` [PATCH v3 2/9] mv: rename check_dir_in_index() to empty_dir_has_sparse_contents() Shaoxuan Yuan
2022-08-09 12:09 ` [PATCH v3 3/9] mv: free the with_slash in check_dir_in_index() Shaoxuan Yuan
2022-08-09 12:09 ` [PATCH v3 4/9] mv: check if <destination> is a SKIP_WORKTREE_DIR Shaoxuan Yuan
2022-08-09 12:09 ` [PATCH v3 5/9] mv: remove BOTH from enum update_mode Shaoxuan Yuan
2022-08-09 12:09 ` [PATCH v3 6/9] mv: from in-cone to out-of-cone Shaoxuan Yuan
2022-08-09 12:09 ` [PATCH v3 7/9] mv: cleanup empty WORKING_DIRECTORY Shaoxuan Yuan
2022-08-09 12:09 ` [PATCH v3 8/9] advice.h: add advise_on_moving_dirty_path() Shaoxuan Yuan
2022-08-09 12:09 ` [PATCH v3 9/9] mv: check overwrite for in-to-out move Shaoxuan Yuan
2022-08-16 15:48 ` [PATCH v3 0/9] mv: from in-cone to out-of-cone Victoria Dye
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=191bcdca-c7fd-665c-78ce-ef4c5843d13d@gmail.com \
--to=shaoxuan.yuan02@gmail.com \
--cc=derrickstolee@github.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=vdye@github.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.