summaryrefslogtreecommitdiffstats
path: root/advice.c
diff options
context:
space:
mode:
authorShaoxuan Yuan <shaoxuan.yuan02@gmail.com>2022-08-09 14:09:09 +0200
committerJunio C Hamano <gitster@pobox.com>2022-08-10 22:57:50 +0200
commit5efd533ed8896592740afe22ac07271497d6db36 (patch)
treeee4222f898a2ea1670d1c92e3cceffab646f043e /advice.c
parentmv: cleanup empty WORKING_DIRECTORY (diff)
downloadgit-5efd533ed8896592740afe22ac07271497d6db36.tar.xz
git-5efd533ed8896592740afe22ac07271497d6db36.zip
advice.h: add advise_on_moving_dirty_path()
Add an advice. When the user use `git mv --sparse <dirty-path> <destination>`, Git will warn the user to use `git add --sparse <paths>` then use `git sparse-checkout reapply` to apply the sparsity rules. Add a few lines to previous "move dirty path" tests so we can test this new advice is working. Suggested-by: Derrick Stolee <derrickstolee@github.com> Signed-off-by: Shaoxuan Yuan <shaoxuan.yuan02@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'advice.c')
-rw-r--r--advice.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/advice.c b/advice.c
index 6fda9edbc2..fd18968943 100644
--- a/advice.c
+++ b/advice.c
@@ -261,3 +261,22 @@ void detach_advice(const char *new_name)
fprintf(stderr, fmt, new_name);
}
+
+void advise_on_moving_dirty_path(struct string_list *pathspec_list)
+{
+ struct string_list_item *item;
+
+ if (!pathspec_list->nr)
+ return;
+
+ fprintf(stderr, _("The following paths have been moved outside the\n"
+ "sparse-checkout definition but are not sparse due to local\n"
+ "modifications.\n"));
+ for_each_string_list_item(item, pathspec_list)
+ fprintf(stderr, "%s\n", item->string);
+
+ advise_if_enabled(ADVICE_UPDATE_SPARSE_PATH,
+ _("To correct the sparsity of these paths, do the following:\n"
+ "* Use \"git add --sparse <paths>\" to update the index\n"
+ "* Use \"git sparse-checkout reapply\" to apply the sparsity rules"));
+}