On 26 January 2014 17:19, Andrey Semashev
On Sun, Jan 26, 2014 at 8:23 PM, Andrey Semashev
wrote: Hi,
I checked out Boost on my Windows machine quite some time ago and today I tried to update it. I did:
git submodule foreach git checkout develop git submodule foreach git pull
The last command failed on Boost.Predef (log attached). I did not change it and I don't understand why there is conflict. I tried 'git reset --hard' and pull again, but it fails again the same way.
How can I fix it?
Assuming that you haven't made any local commits, you can delete your local branch (git branch -D develop) or check it out and reset to the remote branch (git reset --hard origin/develop).
And I have similar problems with Boost.Build. When I do 'git submodule foreach git checkout develop' it checks out something outdated, with v2 directory at the top level, saying that it has diverged from origin/develop. Doing 'git pull', as it suggests, only brings a bunch of conflicts and merges, and a half-merged tree in tools/build.
'develop' is your local branch, which contains an older version. You can fix it as I wrote above. But it's best not to bother checking out branches for modules you aren't working on, just let the super project manage them.
I can do 'git submodule update' and it does bring tools/build into some decent state, without v2 on top, but checking out develop breaks it again the same way. How am I supposed to work with develop?
The recommended work flow is to use the master branch of the super project and any modules you aren't working on. If you really want to use develop, you can check out the develop branch of the super project, and use 'git submodule update --init', but I think it's easier to stick with master.
PS: I'm really running out of polite words now towards git. This pile of... bytes have given me nothing but trouble so far. I'm spending 1.5 hours now trying just to update the damn local copy, and every update command runs for ages, because apparently it authenticates for every submodule every time. Who in good will would use this... tool? <sigh> I was probably born on another planet.
Is that using 'git submodule foreach ...'? The command for each module is run in a new process so it can't reuse existing connections. I also imagine it's extra slow on windows as processes are quite expensive. 'git pull' can be a bit smarter about fetching submodules, and I think 'git submodule update --init' works locally.