On Sat, Feb 15, 2014 at 9:28 PM, Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> wrote: > Refreshing index requires work tree. So we have to options: always set s/to/two/ > up work tree (and refuse to reset if failing to do so), or make > refreshing index optional. > > As refreshing index is not the main task, it makes more sense to make > it optional. > > Reported-by: Patrick Palka <patrick@xxxxxxxxxxxx> > Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> > --- > builtin/reset.c | 7 ++++--- > t/t7102-reset.sh | 11 +++++++++++ > 2 files changed, 15 insertions(+), 3 deletions(-) > > diff --git a/builtin/reset.c b/builtin/reset.c > index 6004803..a991344 100644 > --- a/builtin/reset.c > +++ b/builtin/reset.c > @@ -320,7 +320,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix) > if (reset_type == NONE) > reset_type = MIXED; /* by default */ > > - if (reset_type != SOFT && reset_type != MIXED) > + if (reset_type != SOFT && (reset_type != MIXED || get_git_work_tree())) > setup_work_tree(); > > if (reset_type == MIXED && is_bare_repository()) > @@ -340,8 +340,9 @@ int cmd_reset(int argc, const char **argv, const char *prefix) > int flags = quiet ? REFRESH_QUIET : REFRESH_IN_PORCELAIN; > if (read_from_tree(&pathspec, sha1)) > return 1; > - refresh_index(&the_index, flags, NULL, NULL, > - _("Unstaged changes after reset:")); > + if (get_git_work_tree()) > + refresh_index(&the_index, flags, NULL, NULL, > + _("Unstaged changes after reset:")); > } else { > int err = reset_index(sha1, reset_type, quiet); > if (reset_type == KEEP && !err) > diff --git a/t/t7102-reset.sh b/t/t7102-reset.sh > index 8d4b50d..ee117e2 100755 > --- a/t/t7102-reset.sh > +++ b/t/t7102-reset.sh > @@ -535,4 +535,15 @@ test_expect_success 'reset with paths accepts tree' ' > git diff HEAD --exit-code > ' > > +test_expect_success 'reset --mixed sets up work tree' ' > + git init mixed_worktree && > + ( > + cd mixed_worktree && > + test_commit dummy > + ) && > + : >expect && > + git --git-dir=mixed_worktree/.git --work-tree=mixed_worktree reset >actual && > + test_cmp expect actual > +' > + > test_done > -- > 1.8.5.2.240.g8478abd > > -- > To unsubscribe from this list: send the line "unsubscribe git" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html