git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* Bug report: git reset --hard does not fix submodule worktree
@ 2017-11-04  0:46 Billy O'Neal (VC LIBS)
  2017-11-06 20:50 ` Stefan Beller
  0 siblings, 1 reply; 2+ messages in thread
From: Billy O'Neal (VC LIBS) @ 2017-11-04  0:46 UTC (permalink / raw)
  To: git@vger.kernel.org; +Cc: Stephan T. Lavavej, Cody Miller

Hello, Git folks. I managed to accidentally break the our test lab by attempting to git mv a directory with a submodule inside. It seems like if a reset does an undo on a mv, the workfold entry should be fixed to put the submodule in its old location. Consider the following sequence of commands:

Setup a git repo with a submodule:
mkdir metaproject
mkdir upstream
cd metaproject
git init
cd ..\upstream
git init
echo hello > test.txt
git add -A
git commit -m "an example commit"
cd ..\metapoject
mkdir start
git submodule add ../upstream start/upstream
git add -A
git commit -m "Add submodule in start/upstream."

Move the directory containing the submodule:
git mv start target
git add -A
git commit -m "Moved submodule parent directory."

Check that the worktree got correctly fixed by git mv; this output is as expected:
type .git\modules\start\upstream\config
[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
        worktree = ../../../../target/upstream
[remote "origin"]
        url = C:/Users/bion/Desktop/upstream
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master

Now try to go back to the previous commit using git reset --hard:
git log --oneline
 1f560be (HEAD -> master) Moved submodule parent directory.
 a5977ce Add submodule in start/upstream.
git reset --hard a5977ce
 warning: unable to rmdir target/upstream: Directory not empty
 HEAD is now at a5977ce Add submodule in start/upstream.

Check that the worktree got fixed correctly; it did not:
type .git\modules\start\upstream\config
[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
        worktree = ../../../../target/upstream
[remote "origin"]
        url = C:/Users/bion/Desktop/upstream
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master

Is git reset intended to put the submodule in the right place? If not, is there a command we can run before/after reset to restore consistency?

Thanks folks!

Billy O'Neal


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-11-06 20:50 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-04  0:46 Bug report: git reset --hard does not fix submodule worktree Billy O'Neal (VC LIBS)
2017-11-06 20:50 ` Stefan Beller

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).