Problem with submodule merge
- From
Nicolas Morey-Chaisemartin <devel-git@morey-chaisemartin.com>
- Date
- Sep 16, 2011, 12:48 UTC
- Message-ID
- <4E734582.6030704@morey-chaisemartin.com>
Hi,
We have meet an issue few times at work with submodule merge. I'm running git 1.7.7-rc1 build from master on FC15 x86_64 but I've seen the issue on other ditro with older (stable) versions
I still haven't figured out exactly when it happends but here are the symptoms:
1) I commited some updates for a submodule in our integration repo. 2) I pulled a remote branch of the integration repo which had an update on the same submodule (but different SHAs) 3) When the merge driver try to find a following commit for the submodule, I get some (sometimes many) error messages about refs that point to invalid objects:
[nmorey@sat:SigmaCToolchain (user/nmorey/dev/0.3.0 *%>)]$ git merge origin/prerelease/0.3-0 error: refs/heads/user/nmorey/master does not point to a valid object! error: refs/remotes/origin/dev/cpp does not point to a valid object! error: refs/remotes/origin/dev/scuk does not point to a valid object! error: refs/remotes/origin/dev/sys_agents does not point to a valid object! error: refs/remotes/origin/user/bbodin/cea does not point to a valid object! error: refs/remotes/origin/user/borgogoz/master does not point to a valid object! warning: Failed to merge submodule db (merge following commits not found) Auto-merging db CONFLICT (submodule): Merge conflict in db Automatic merge failed; fix conflicts and then commit the result.
I checked and the object really exists in the submodule but is in a pack.
>From checking the strace, git looks for a the object in db/.git/objects/... whch does not exists
And from what I could figure it, the issue seems to be coming from find_pack_entry which does not return 1 so git goes looking for loose object and cannot find any (as expected). This is not a big issue as it just outputs errors about refs and does not block the user but it gets quite scary when there are a few hundreds of them !
I kept a tarball of the repo so I can provide more info/logs/trace if needed.
Nicolas