All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Shuqi Liang <cheskaqiqi@gmail.com>
Cc: git@vger.kernel.org, vdye@github.com, derrickstolee@github.com
Subject: Re: [PATCH v5] write-tree: optimize sparse integration
Date: Mon, 24 Apr 2023 09:00:51 -0700	[thread overview]
Message-ID: <xmqqleihgtho.fsf@gitster.g> (raw)
In-Reply-To: <20230423071243.1863977-1-cheskaqiqi@gmail.com> (Shuqi Liang's message of "Sun, 23 Apr 2023 03:12:43 -0400")

Shuqi Liang <cheskaqiqi@gmail.com> writes:

> 'prepare_repo_settings()' needs to be run inside a repository. Ensure
> that the code checks for the presence of a repository before calling
> this function.

Can you explain why this change is needed?

That is, if the caller made sure if this codepath is entered only
when inside a repository, such a "we need to refrain from doing
this" becomes unnecessary.  Describe under what condition the
control passes this section with !the_repository->gitdir, e.g. "When
the command is run in such and such way outside a repository, the
control reaches this position but prepare_repo_settings() cannot be
blindly called".

I suspect that it is a bug if the control reaches this point without
having a repository, as the call to write_index_as_tree() would be
already failing if we were not in a repository, but there is no such
a bug, and you did not introduce one with your previous changes to
this codepath that you need to fix here.  You can observe a few
things:

 - "write-tree" in the git.c::commands[] table has RUN_SETUP.

 - git.c::run_builtin() is repsonsible for calling cmd_write_tree();
   what happens before it calls the function?  For a command with
   RUN_SETUP set, unless the command line argument is "-h" (that is,
   "git write-tree -h" is run), setup_git_directory() is called.

 - setup_git_directory() dies unless run in a repository.

 - git.c::run_builtin() calls setup_git_directory_gently() when the
   command line argument is "-h" and it does not die even run
   outside a repository.  However, before the code you touched,
   there is a call to parse_options().

 - parse_options() called for the command line argument "-h" shows a
   short help and then exits.

So...?

Also when starting to talk about totally different things (like, you
were discussing the change to write_tree.c to avoid segfaulting when
run outside a repository, but now you are going to talk about the
title of one test piece), please make sure it is clear for readers.
A blank line here may be appropriate.

> 'write-tree on all' had an unclear meaning of 'on all'.
> Change the test name to simply 'write-tree'. Add a baseline
> 'test_all_match git write-tree' before making any changes to the index,
> providing a reference point for the 'write-tree' prior to any
> modifications. Add a comparison of the output of
> 'git status --porcelain=v2' to test the working tree after 'write-tree'
> exits. Ensure SKIP_WORKTREE files weren't materialized on disk by using
> "test_path_is_missing".

All of the above may be easier to read in a bulletted list form,
e.g.

 * 'on all' in the title of the test 'write-tree on all' was
   unclear; remove it.

 * test the baseline test_all_match git write-tree" before doing
   anything else.

 ...



> Signed-off-by: Shuqi Liang <cheskaqiqi@gmail.com>
> ---
>
> * Update commit message.

OK.

> * 'command_requires_full_index' to be set after 'parse_options'.

This does not match what we see in this patch.

> * Remove trailing whitespace.

OK.  But there is a new line with a trailing whitespace before the
line that says # check that SKIP_WORKTREE files are not materialized"
in the test.

Thanks.

  reply	other threads:[~2023-04-24 16:00 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-02  0:01 [RFC][PATCH v1] write-tree: integrate with sparse index Shuqi Liang
2023-04-03 20:58 ` Junio C Hamano
2023-04-03 22:16   ` Shuqi Liang
2023-04-03 22:54     ` Junio C Hamano
2023-04-04  0:35 ` [PATCH v2] " Shuqi Liang
2023-04-05 17:31   ` Victoria Dye
2023-04-05 19:48     ` Junio C Hamano
2023-04-19  7:21   ` [PATCH v3] " Shuqi Liang
2023-04-19 15:47     ` Junio C Hamano
2023-04-20  5:24       ` Shuqi Liang
2023-04-20 15:55         ` Junio C Hamano
2023-04-21  0:41     ` [PATCH v4] " Shuqi Liang
2023-04-21 21:42       ` Victoria Dye
2023-04-24 15:14         ` Junio C Hamano
2023-04-23  7:12       ` [PATCH v5] write-tree: optimize sparse integration Shuqi Liang
2023-04-24 16:00         ` Junio C Hamano [this message]
2023-05-08 20:05         ` [PATCH v6] " Shuqi Liang
2023-05-08 20:21           ` Shuqi Liang
2023-05-08 21:09             ` Junio C Hamano
2023-05-08 21:27               ` Shuqi Liang

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=xmqqleihgtho.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=cheskaqiqi@gmail.com \
    --cc=derrickstolee@github.com \
    --cc=git@vger.kernel.org \
    --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.