Re: [PATCH] git stash: Avoid data loss when saving a stash
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 28, 2013, 19:37 UTC
- Message-ID
- <7vbo6qni1d.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <20130628150532.GD12252@machine.or.cz>
Petr Baudis <pasky@ucw.cz> writes:
Show 10 quoted lines
> diff --git a/git-stash.sh b/git-stash.sh
> index 1e541a2..3cb9b05 100755
> --- a/git-stash.sh
> +++ b/git-stash.sh
> @@ -258,6 +262,12 @@ save_stash () {
> say "$(gettext "No local changes to save")"
> exit 0
> fi
> + if test -z "$untracked$force" -a -n "$(git ls-files --killed | head -n 1)"; then
> + say "$(gettext "The following untracked files would NOT be saved but need to be removed by stash save:")"I think "ls-files --killed" was not adjusted for the new world order when submodules were introduced. With this change, you see t7402 break, even though "git status" would say
# Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working # directory) # # modified: file # modified: submodule (new commits)
The path "submodule" in HEAD and the index is already submodule, so "stash save" that reverts to the original state will _not_ have to kill it, but the new check triggers it.
Exactly the same breakage this patch introduces triggers in t7610, too.
I think another patch to teach "ls-files --killed" what to do with submodules is needed as a preliminary step before this patch.