From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Shaoxuan Yuan <shaoxuan.yuan02@gmail.com>
Cc: git@vger.kernel.org, vdye@github.com, derrickstolee@github.com,
gitster@pobox.com, Tao Klerks <tao@klerks.biz>
Subject: Re: [WIP v1 3/4] mv: add advise_to_reapply hint for moving file into cone
Date: Thu, 31 Mar 2022 12:30:25 +0200 [thread overview]
Message-ID: <220331.86ilruqup6.gmgdl@evledraar.gmail.com> (raw)
In-Reply-To: <20220331091755.385961-4-shaoxuan.yuan02@gmail.com>
On Thu, Mar 31 2022, Shaoxuan Yuan wrote:
> Originally, the SKIP_WORKTREE bit is not removed when moving an out-of-cone
> file into sparse cone, thus the moved file does not show up in the working tree.
> Hint the user to use "git sparse-checkout reapply" to reapply the sparsity rules
> to the working tree, by which the SKIP_WORKTREE bit is removed.
>
> Signed-off-by: Shaoxuan Yuan <shaoxuan.yuan02@gmail.com>
> ---
> I offered this solution becasue I'm not sure how to turn a cache_entry's
> ce_flags back to a non-sparse state. I tried directly set it to 0 like this:
>
> ce->ce_flags = 0;
>
> But the behavior after this seems undefined. The file still won't show up
> in the working tree.
>
> And I found that "git sparse-checkout reapply" seems to be a nice fit for the
> job. But I guess if there is a way (there must be but I don't know) to do it
> direcly in the code, that could also be nice.
>
> builtin/mv.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/builtin/mv.c b/builtin/mv.c
> index 9da9205e01..5f511fb8da 100644
> --- a/builtin/mv.c
> +++ b/builtin/mv.c
> @@ -138,6 +138,7 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
> {
> int i, flags, gitmodules_modified = 0;
> int verbose = 0, show_only = 0, force = 0, ignore_errors = 0, ignore_sparse = 0;
> + int advise_to_reapply = 0;
> struct option builtin_mv_options[] = {
> OPT__VERBOSE(&verbose, N_("be verbose")),
> OPT__DRY_RUN(&show_only, N_("dry run")),
> @@ -383,6 +384,11 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
> pos = cache_name_pos(src, strlen(src));
> assert(pos >= 0);
> rename_cache_entry_at(pos, dst);
> + if (!advise_to_reapply &&
> + !path_in_sparse_checkout(src, &the_index) &&
> + path_in_sparse_checkout(dst, &the_index)) {
> + advise_to_reapply = 1;
> + }
More odd indentation, and the braces aren't needed.
> }
>
> if (gitmodules_modified)
> @@ -392,6 +398,9 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
> COMMIT_LOCK | SKIP_IF_UNCHANGED))
> die(_("Unable to write new index file"));
>
> + if (advise_to_reapply)
> + printf(_("Please use \"git sparse-checkout reapply\" to reapply the sparsity.\n"));
> +
Please see 93026558512 (tracking branches: add advice to ambiguous
refspec error, 2022-03-28) (the OID may change after I send this, as
it's in "seen") for how to add new advise, i.e. we use advise(), add an
enum field, config var etc.
next prev parent reply other threads:[~2022-03-31 10:31 UTC|newest]
Thread overview: 95+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-31 9:17 [WIP v1 0/4] mv: fix out-of-cone file/directory move logic Shaoxuan Yuan
2022-03-31 9:17 ` [WIP v1 1/4] mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit Shaoxuan Yuan
2022-03-31 16:39 ` Victoria Dye
2022-04-01 14:30 ` Derrick Stolee
2022-03-31 9:17 ` [WIP v1 2/4] mv: add check_dir_in_index() and solve general dir check issue Shaoxuan Yuan
2022-03-31 10:25 ` Ævar Arnfjörð Bjarmason
2022-04-01 3:51 ` Shaoxuan Yuan
2022-03-31 21:28 ` Victoria Dye
2022-04-01 12:49 ` Shaoxuan Yuan
2022-04-01 14:49 ` Derrick Stolee
2022-04-04 7:25 ` Shaoxuan Yuan
2022-04-04 7:49 ` Shaoxuan Yuan
2022-04-04 12:43 ` Derrick Stolee
2022-03-31 9:17 ` [WIP v1 3/4] mv: add advise_to_reapply hint for moving file into cone Shaoxuan Yuan
2022-03-31 10:30 ` Ævar Arnfjörð Bjarmason [this message]
2022-04-01 4:00 ` Shaoxuan Yuan
2022-04-01 8:02 ` Ævar Arnfjörð Bjarmason
2022-04-03 2:01 ` Eric Sunshine
2022-03-31 21:56 ` Victoria Dye
2022-04-01 14:55 ` Derrick Stolee
2022-03-31 9:17 ` [WIP v1 4/4] t7002: add tests for moving out-of-cone file/directory Shaoxuan Yuan
2022-03-31 10:33 ` Ævar Arnfjörð Bjarmason
2022-03-31 22:11 ` Victoria Dye
2022-03-31 9:28 ` [WIP v1 0/4] mv: fix out-of-cone file/directory move logic Shaoxuan Yuan
2022-03-31 22:21 ` Victoria Dye
2022-04-01 12:18 ` Shaoxuan Yuan
2022-04-08 12:22 ` Shaoxuan Yuan
2022-05-27 10:07 ` [WIP v2 0/5] " Shaoxuan Yuan
2022-05-27 10:08 ` [WIP v2 1/5] t7002: add tests for moving out-of-cone file/directory Shaoxuan Yuan
2022-05-27 12:07 ` Ævar Arnfjörð Bjarmason
2022-05-27 14:48 ` Derrick Stolee
2022-05-27 15:51 ` Victoria Dye
2022-05-27 10:08 ` [WIP v2 2/5] mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit Shaoxuan Yuan
2022-05-27 15:13 ` Derrick Stolee
2022-05-27 22:38 ` Victoria Dye
2022-05-31 8:06 ` Shaoxuan Yuan
2022-05-27 10:08 ` [WIP v2 3/5] mv: check if <destination> exists in index to handle overwriting Shaoxuan Yuan
2022-05-27 22:04 ` Victoria Dye
2022-05-27 10:08 ` [WIP v2 4/5] mv: add check_dir_in_index() and solve general dir check issue Shaoxuan Yuan
2022-05-27 15:27 ` Derrick Stolee
2022-05-31 9:56 ` Shaoxuan Yuan
2022-05-31 15:49 ` Derrick Stolee
2022-05-27 10:08 ` [WIP v2 5/5] mv: use update_sparsity() after touching sparse contents Shaoxuan Yuan
2022-05-27 12:10 ` Ævar Arnfjörð Bjarmason
2022-05-27 19:36 ` Victoria Dye
2022-05-27 19:59 ` Junio C Hamano
2022-05-27 21:24 ` Victoria Dye
2022-06-16 13:51 ` Shaoxuan Yuan
2022-06-16 16:42 ` Victoria Dye
2022-06-17 2:15 ` Shaoxuan Yuan
2022-06-19 3:25 ` [WIP v3 0/7] mv: fix out-of-cone file/directory move logic Shaoxuan Yuan
2022-06-19 3:25 ` [WIP v3 1/7] t7002: add tests for moving out-of-cone file/directory Shaoxuan Yuan
2022-06-21 21:23 ` Victoria Dye
2022-06-19 3:25 ` [WIP v3 2/7] mv: decouple if/else-if checks using goto Shaoxuan Yuan
2022-06-19 3:25 ` [WIP v3 3/7] mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit Shaoxuan Yuan
2022-06-19 3:25 ` [WIP v3 4/7] mv: check if <destination> exists in index to handle overwriting Shaoxuan Yuan
2022-06-19 3:25 ` [WIP v3 5/7] mv: use flags mode for update_mode Shaoxuan Yuan
2022-06-21 22:32 ` Victoria Dye
2022-06-22 9:37 ` Shaoxuan Yuan
2022-06-19 3:25 ` [WIP v3 6/7] mv: add check_dir_in_index() and solve general dir check issue Shaoxuan Yuan
2022-06-21 22:55 ` Victoria Dye
2022-06-19 3:25 ` [WIP v3 7/7] mv: update sparsity after moving from out-of-cone to in-cone Shaoxuan Yuan
2022-06-21 23:11 ` Victoria Dye
2022-06-21 23:30 ` [WIP v3 0/7] mv: fix out-of-cone file/directory move logic Victoria Dye
2022-06-23 15:06 ` Derrick Stolee
2022-06-23 16:19 ` Junio C Hamano
2022-06-24 8:26 ` Shaoxuan Yuan
2022-06-23 11:41 ` [PATCH v4 " Shaoxuan Yuan
2022-06-23 11:41 ` [PATCH v4 1/7] t7002: add tests for moving out-of-cone file/directory Shaoxuan Yuan
2022-06-23 11:41 ` [PATCH v4 2/7] mv: update sparsity after moving from out-of-cone to in-cone Shaoxuan Yuan
2022-06-23 15:08 ` Derrick Stolee
2022-06-24 8:04 ` Shaoxuan Yuan
2022-06-27 13:55 ` Derrick Stolee
2022-06-23 11:41 ` [PATCH v4 3/7] mv: decouple if/else-if checks using goto Shaoxuan Yuan
2022-06-23 11:41 ` [PATCH v4 4/7] mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit Shaoxuan Yuan
2022-06-23 11:41 ` [PATCH v4 5/7] mv: check if <destination> exists in index to handle overwriting Shaoxuan Yuan
2022-06-23 11:41 ` [PATCH v4 6/7] mv: use flags mode for update_mode Shaoxuan Yuan
2022-06-23 15:10 ` Derrick Stolee
2022-06-23 11:41 ` [PATCH v4 7/7] mv: add check_dir_in_index() and solve general dir check issue Shaoxuan Yuan
2022-06-23 15:14 ` Derrick Stolee
2022-06-24 7:57 ` Shaoxuan Yuan
2022-06-27 13:59 ` Derrick Stolee
2022-06-23 15:16 ` [PATCH v4 0/7] mv: fix out-of-cone file/directory move logic Derrick Stolee
2022-06-23 18:05 ` Junio C Hamano
2022-06-30 2:37 ` [PATCH v5 0/8] " Shaoxuan Yuan
2022-06-30 2:37 ` [PATCH v5 1/8] t7002: add tests for moving out-of-cone file/directory Shaoxuan Yuan
2022-06-30 2:37 ` [PATCH v5 2/8] t1092: mv directory from out-of-cone to in-cone Shaoxuan Yuan
2022-06-30 2:37 ` [PATCH v5 3/8] mv: update sparsity after moving " Shaoxuan Yuan
2022-06-30 2:37 ` [PATCH v5 4/8] mv: decouple if/else-if checks using goto Shaoxuan Yuan
2022-06-30 2:37 ` [PATCH v5 5/8] mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit Shaoxuan Yuan
2022-06-30 2:37 ` [PATCH v5 6/8] mv: check if <destination> exists in index to handle overwriting Shaoxuan Yuan
2022-06-30 2:37 ` [PATCH v5 7/8] mv: use flags mode for update_mode Shaoxuan Yuan
2022-06-30 2:37 ` [PATCH v5 8/8] mv: add check_dir_in_index() and solve general dir check issue Shaoxuan Yuan
2022-07-01 19:43 ` [PATCH v5 0/8] mv: fix out-of-cone file/directory move logic Derrick Stolee
2022-07-01 21:50 ` 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=220331.86ilruqup6.gmgdl@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=derrickstolee@github.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=shaoxuan.yuan02@gmail.com \
--cc=tao@klerks.biz \
--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.