* Re: [PATCH 1/2] sparse checkout: show error messages when worktree shaping fails [not found] <1316602259-22576-1-git-send-email-pclouds@gmail.com> @ 2011-09-21 19:15 ` Joshua Jensen 2011-09-21 20:50 ` Junio C Hamano 1 sibling, 0 replies; 5+ messages in thread From: Joshua Jensen @ 2011-09-21 19:15 UTC (permalink / raw) To: Nguyễn Thái Ngọc Duy; +Cc: git, Junio C Hamano, git ----- Original Message ----- From: Nguyễn Thái Ngọc Duy Date: 9/21/2011 4:50 AM > if (ce->ce_flags& CE_ADDED&& > verify_absent(ce, ERROR_WOULD_LOSE_UNTRACKED_OVERWRITTEN, o)) > - return -1; > + goto return_failed; > > - if (apply_sparse_checkout(ce, o)) { > - ret = -1; > - goto done; > - } > + if (apply_sparse_checkout(ce, o)) > + goto return_failed; > if (!ce_skip_worktree(ce)) > empty_worktree = 0; Unfortunately, this patch only collects and displays the first untracked file for me. It does not display all of the files that would be overwritten (desired behavior, IMHO). This script illustrates: #!/bin/sh rm -Rf utest || exit 1 mkdir utest || exit 1 cd utest || exit 1 git init git config core.sparseCheckout true echo *>.git/info/sparse-checkout echo tracked>a git add a git commit -m a a git branch side echo tracked>b echo tracked>c git add b c git commit -m bc cat b git checkout side cat b echo untracked>b echo untracked>c cat b git checkout master cat b -Josh ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] sparse checkout: show error messages when worktree shaping fails [not found] <1316602259-22576-1-git-send-email-pclouds@gmail.com> 2011-09-21 19:15 ` [PATCH 1/2] sparse checkout: show error messages when worktree shaping fails Joshua Jensen @ 2011-09-21 20:50 ` Junio C Hamano 2011-09-22 11:24 ` [PATCH v2 " Nguyễn Thái Ngọc Duy 2011-09-22 11:24 ` [PATCH v2 2/2] Add explanation why we do not allow to sparse checkout to empty working tree Nguyễn Thái Ngọc Duy 1 sibling, 2 replies; 5+ messages in thread From: Junio C Hamano @ 2011-09-21 20:50 UTC (permalink / raw) To: Nguyễn Thái Ngọc Duy Cc: git, Michael, J, Gruber, git, Joshua Jensen Please add a test when you reroll this, hopefully with help from Joshua. Thanks. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 1/2] sparse checkout: show error messages when worktree shaping fails 2011-09-21 20:50 ` Junio C Hamano @ 2011-09-22 11:24 ` Nguyễn Thái Ngọc Duy 2011-09-22 19:57 ` Joshua Jensen 2011-09-22 11:24 ` [PATCH v2 2/2] Add explanation why we do not allow to sparse checkout to empty working tree Nguyễn Thái Ngọc Duy 1 sibling, 1 reply; 5+ messages in thread From: Nguyễn Thái Ngọc Duy @ 2011-09-22 11:24 UTC (permalink / raw) To: git, Junio C Hamano Cc: Michael J Gruber, Joshua Jensen, Nguyễn Thái Ngọc Duy verify_* functions can queue errors up and to be printed later at label return_failed. In case of errors, do not go to label "done" directly because all queued messages would be dropped on the floor. Found-by: Joshua Jensen <jjensen@workspacewhiz.com> Tracked-down-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> --- Now print all errors. t/t1011-read-tree-sparse-checkout.sh | 15 +++++++++++++++ unpack-trees.c | 13 ++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/t/t1011-read-tree-sparse-checkout.sh b/t/t1011-read-tree-sparse-checkout.sh index 018c354..efcd8ab 100755 --- a/t/t1011-read-tree-sparse-checkout.sh +++ b/t/t1011-read-tree-sparse-checkout.sh @@ -234,4 +234,19 @@ test_expect_success 'read-tree --reset removes outside worktree' ' test_cmp empty result ' +test_expect_success 'print errors when failed to update worktree' ' + echo sub >.git/info/sparse-checkout && + git checkout -f init && + mkdir sub && + touch sub/added sub/addedtoo && + test_must_fail git checkout top 2>actual && + cat >expected <<\EOF && +error: The following untracked working tree files would be overwritten by checkout: + sub/added + sub/addedtoo +Please move or remove them before you can switch branches. +EOF + test_cmp expected actual +' + test_done diff --git a/unpack-trees.c b/unpack-trees.c index cc616c3..fcf40a0 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -1089,6 +1089,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options */ mark_new_skip_worktree(o->el, &o->result, CE_ADDED, CE_SKIP_WORKTREE | CE_NEW_SKIP_WORKTREE); + ret = 0; for (i = 0; i < o->result.cache_nr; i++) { struct cache_entry *ce = o->result.cache[i]; @@ -1101,17 +1102,23 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options * correct CE_NEW_SKIP_WORKTREE */ if (ce->ce_flags & CE_ADDED && - verify_absent(ce, ERROR_WOULD_LOSE_UNTRACKED_OVERWRITTEN, o)) - return -1; + verify_absent(ce, ERROR_WOULD_LOSE_UNTRACKED_OVERWRITTEN, o)) { + if (!o->show_all_errors) + goto return_failed; + ret = -1; + } if (apply_sparse_checkout(ce, o)) { + if (!o->show_all_errors) + goto return_failed; ret = -1; - goto done; } if (!ce_skip_worktree(ce)) empty_worktree = 0; } + if (ret < 0) + goto return_failed; if (o->result.cache_nr && empty_worktree) { /* dubious---why should this fail??? */ ret = unpack_failed(o, "Sparse checkout leaves no entry on working directory"); -- 1.7.3.1.256.g2539c.dirty ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 1/2] sparse checkout: show error messages when worktree shaping fails 2011-09-22 11:24 ` [PATCH v2 " Nguyễn Thái Ngọc Duy @ 2011-09-22 19:57 ` Joshua Jensen 0 siblings, 0 replies; 5+ messages in thread From: Joshua Jensen @ 2011-09-22 19:57 UTC (permalink / raw) To: Nguyễn Thái Ngọc Duy Cc: git, Junio C Hamano, Michael J Gruber ----- Original Message ----- From: Nguyễn Thái Ngọc Duy Date: 9/22/2011 5:24 AM > diff --git a/unpack-trees.c b/unpack-trees.c > index cc616c3..fcf40a0 100644 > --- a/unpack-trees.c > +++ b/unpack-trees.c > @@ -1089,6 +1089,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options > */ > mark_new_skip_worktree(o->el,&o->result, CE_ADDED, CE_SKIP_WORKTREE | CE_NEW_SKIP_WORKTREE); > > + ret = 0; > for (i = 0; i< o->result.cache_nr; i++) { > struct cache_entry *ce = o->result.cache[i]; > > @@ -1101,17 +1102,23 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options > * correct CE_NEW_SKIP_WORKTREE > */ > if (ce->ce_flags& CE_ADDED&& > - verify_absent(ce, ERROR_WOULD_LOSE_UNTRACKED_OVERWRITTEN, o)) > - return -1; > + verify_absent(ce, ERROR_WOULD_LOSE_UNTRACKED_OVERWRITTEN, o)) { > + if (!o->show_all_errors) > + goto return_failed; > + ret = -1; > + } > > if (apply_sparse_checkout(ce, o)) { > + if (!o->show_all_errors) > + goto return_failed; > ret = -1; > - goto done; > } > if (!ce_skip_worktree(ce)) > empty_worktree = 0; > > } > + if (ret< 0) > + goto return_failed; > if (o->result.cache_nr&& empty_worktree) { > /* dubious---why should this fail??? */ > ret = unpack_failed(o, "Sparse checkout leaves no entry on working directory"); I can confirm that this version of the patch works for me with multiple untracked files in a sparse checkout. -Josh ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 2/2] Add explanation why we do not allow to sparse checkout to empty working tree 2011-09-21 20:50 ` Junio C Hamano 2011-09-22 11:24 ` [PATCH v2 " Nguyễn Thái Ngọc Duy @ 2011-09-22 11:24 ` Nguyễn Thái Ngọc Duy 1 sibling, 0 replies; 5+ messages in thread From: Nguyễn Thái Ngọc Duy @ 2011-09-22 11:24 UTC (permalink / raw) To: git, Junio C Hamano Cc: Michael J Gruber, Joshua Jensen, Nguyễn Thái Ngọc Duy Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> --- unpack-trees.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/unpack-trees.c b/unpack-trees.c index fcf40a0..bacb473 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -1119,8 +1119,13 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options } if (ret < 0) goto return_failed; + /* + * Sparse checkout is meant to narrow down checkout area + * but it does not make sense to narrow down to empty working + * tree. This is usually a mistake in sparse checkout rules. + * Do not allow users to do that. + */ if (o->result.cache_nr && empty_worktree) { - /* dubious---why should this fail??? */ ret = unpack_failed(o, "Sparse checkout leaves no entry on working directory"); goto done; } -- 1.7.3.1.256.g2539c.dirty ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-09-22 19:56 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1316602259-22576-1-git-send-email-pclouds@gmail.com>
2011-09-21 19:15 ` [PATCH 1/2] sparse checkout: show error messages when worktree shaping fails Joshua Jensen
2011-09-21 20:50 ` Junio C Hamano
2011-09-22 11:24 ` [PATCH v2 " Nguyễn Thái Ngọc Duy
2011-09-22 19:57 ` Joshua Jensen
2011-09-22 11:24 ` [PATCH v2 2/2] Add explanation why we do not allow to sparse checkout to empty working tree Nguyễn Thái Ngọc Duy
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.