Re: [PATCH 1/2] reset: handle submodule with trailing slash
From: John Keeping <hidden>
Date: 2016-06-15 22:58:43
On Tue, Sep 10, 2013 at 09:37:45PM +0200, Jens Lehmann wrote:
Am 10.09.2013 21:13, schrieb John Keeping:quoted
When using tab-completion, a directory path will often end with a trailing slash which currently confuses "git rm" when dealing withI think you meant to say "git reset" in the line above. Apart from that I'm all for it.
Yeah, you're right - I obviously got confused between the two patches :-(. I'll wait for more feedback before submitting a re-roll.
quoted
submodules. Now that we have parse_pathspec we can easily handle this by simply adding the PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP flag. Signed-off-by: John Keeping <redacted> --- builtin/reset.c | 5 +++++ t/t7400-submodule-basic.sh | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-)diff --git a/builtin/reset.c b/builtin/reset.c index 5e4c551..9efac0f 100644 --- a/builtin/reset.c +++ b/builtin/reset.c@@ -220,8 +220,13 @@ static void parse_args(struct pathspec *pathspec, } } *rev_ret = rev; + + if (read_cache() < 0) + die(_("index file corrupt")); + parse_pathspec(pathspec, 0, PATHSPEC_PREFER_FULL | + PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP | (patch_mode ? PATHSPEC_PREFIX_ORIGIN : 0), prefix, argv); }diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh index 4192fe0..c268d3c 100755 --- a/t/t7400-submodule-basic.sh +++ b/t/t7400-submodule-basic.sh@@ -481,7 +481,7 @@ test_expect_success 'do not add files from a submodule' ' ' -test_expect_success 'gracefully add submodule with a trailing slash' ' +test_expect_success 'gracefully add/reset submodule with a trailing slash' ' git reset --hard && git commit -m "commit subproject" init &&@@ -495,7 +495,9 @@ test_expect_success 'gracefully add submodule with a trailing slash' ' git add init/ && test_must_fail git diff --exit-code --cached init && test $commit = $(git ls-files --stage | - sed -n "s/^160000 \([^ ]*\).*/\1/p") + sed -n "s/^160000 \([^ ]*\).*/\1/p") && + git reset init/ && + git diff --exit-code --cached init '