Web lists-archives.com

Re: bug during checkout of remote branch and uncommited changes ?




Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> writes:

> At least here, the scenario I gave allow to fully reproduce the problem.
>
> Would you like any other information?

Not really.  Here is what I locally ran and its output

-- >8 -- cut here -- >8 --

#!/bin/sh

mkdir -p /var/tmp/x/lvo && cd /var/tmp/x/lvo || exit

rm -fr src dst

(
	mkdir src &&
	cd src &&
	git init &&
	>file &&
	git add file &&
	git commit -m 'initial' &&
	git checkout -b abranch &&
	echo abranch >file &&
	git commit -a -m 'abranch'
) || exit

mkdir dst &&
cd dst &&
git init &&
git pull ../src master &&
echo mine >file &&
git status -suno &&
git remote add aremote ../src &&
git fetch aremote abranch || exit

git checkout abranch

git reset --hard

git checkout abranch

-- 8< -- cut here -- 8< --

$ sh script
Initialized empty Git repository in /var/tmp/x/lvo/src/.git/
[master (root-commit) 8535bd5] initial
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 file
Switched to a new branch 'abranch'
[abranch 32814d9] abranch
 1 file changed, 1 insertion(+)
Initialized empty Git repository in /var/tmp/x/lvo/dst/.git/
>From ../src
 * branch            master     -> FETCH_HEAD
 M file
>From ../src
 * branch            abranch    -> FETCH_HEAD
 * [new branch]      abranch    -> aremote/abranch
error: Your local changes to the following files would be overwritten by checkout:
	file
Please commit your changes or stash them before you switch branches.
Aborting
HEAD is now at 8535bd5 initial
Switched to a new branch 'abranch'
Branch abranch set up to track remote branch abranch from aremote.

----------------------------------------

As far as I can see, everything is working as intended.  The first
"git checkout abranch" stops due to the dirty local state before it
even tries to DWIM to create abranch, and then after resetting to
get rid of all the local modifications, the second "git checkout
abranch" manages to create the branch just fine.

Even with different variations (like making dst a clone of src to
force the "checkout" to see an ambiguity), I do not seem to get your
"the first one fails with an error message about Ambiguity, the
second does not", which indeed is a curious symptom.

Without knowing if this is an ancient Git, or what remote other than
aremote this repository has, what remote-tracking branches from
these remotes this repository has, if they share the same name
abranch that points at the same or different objects, etc., I simply
do not know what is causing you the symptom, and time I allocated to
look into this for now just ran out.