Hi,
my coworker today claimed git stash deleted his files, I made him
explain me what he did and I think it could actually be a bug even if
happening only in a corner case better explained with code to
reproduce:
git init
echo 'X' > foo
git add foo
git commit -m 'foo file committed'
what follow is the corner case I'm talking about: he deleted the file,
created a directory with THE SAME name and added lot of files in it,
in this example I'll only add one
rm foo
mkdir foo
echo 'B' > foo/bar
at this point the working directory looks like this:
$ tree
.
└── foo
└── bar
1 directory, 1 file
but apparently git status does not seem to see foo directory at all:
$ git status
On branch master
Changes not staged for commit:
deleted: foo
no changes added to commit (use "git add" and/or "git commit -a")
I expected something more like:
$ git status
On branch master
Changes not staged for commit:
deleted: foo
Untracked files:
foo/
no changes added to commit (use "git add" and/or "git commit -a")
Anyway he went on and decided to stash his work:
git stash
at this point stash deleted the "bar" file, in his case all the work
on the previous couple of hours, but he didn't know yet
$ git stash show stash@{0}
foo | 1 -
1 file changed, 1 deletion(-)
the foo directory was gone, replaced by the foo file
git stash pop
did not complained and deleted foo file again
I know my co-worker shouldn't had created a directory with the same
file he was deleting but I also think git shouldn't have allowed him
to stash at all, or should have been cleaver enough to actually stash
the directory with its files.
Regards,
Daniele Segato
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html