Thanks Ben, this is indeed descriptive of the mess I got into. I'll read at length, but the takeaway is that git pull is to be avoided. Looks like also some kind of stash check could go into the scripts/gitci script prior to doing the actual commit.
_,,,^..^,,,_ (phone)
On Dec 22, 2017, at 8:57 AM, Ben Coman btc@openinworld.com wrote:
Just to clarify, the command you ran was the raw commit command... $ git commit -m "message" and not some greater script that surrounds a commit with other logic including stashing ?
And also, did those "need merge" errors immediately appear running that command, or did they show later after running another command like `git pull`?
In the meantime, just guessing this is related... https://stackoverflow.com/questions/5483213/fatal-git-write-tree-error-build... "It is unfortunate that git stash does not work with merge conflicts. "
as is this... https://www.spinics.net/lists/git/msg195457.html
In essence, if there are merge conflicts - i.e. `git merge` did not complete and is in a halfway state waiting for the conflicts to be resolved, the don't stash. Stashing a halfway state seems a bad thing to do.
To reverse out of such a half-way state, a `git merge --abort` should make everything well. However its not always easy to make that connection since `git merge --abort` is not symmetrical with `git pull`.
btw, I'd suggest you avoid `git pull` since it is over-helpful and conflates underlying git concepts which undermines your understanding to leave you floundering when things go wrong. Instead split `git pull` into its components. Assuming you are active on the "Cog" branch, you would instead do... $ git fetch origin $ git merge origin/Cog
Then if errors show up during `git merge` its easier to remember that `git merge --abort` reverts things. Also a nice thing about fetching and merging separately is that it gives you the chance to examine what you’ve fetched before deciding what to do next. For example, optionally between fetchign and merging you can do...
$ git diff Cog origin/Cog
Here are some further viewpoints on avoiding `git pull`... https://felipec.wordpress.com/2014/05/27/is-git-pull-broken/ https://adamcod.es/2014/12/10/git-pull-correct-workflow.html
cheers -ben
On 22 December 2017 at 14:48, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi git mavens,
I'm screwed. Had a perfectly fine repository that declared itself at the tip of Cog, I committed and then suddenly
[Cog 59455f2] CogVM source as per VMMaker.oscog-eem.2302 80 files changed, 4207 insertions(+), 2489 deletions(-) nsspur64src/vm/cogit.h: needs merge nsspur64src/vm/cogitX64SysV.c: needs merge nsspur64src/vm/cogitX64WIN64.c: needs merge nsspur64src/vm/cointerp.c: needs merge nsspur64src/vm/cointerp.h: needs merge nsspur64src/vm/gcc3x-cointerp.c: needs merge nsspursrc/vm/cogit.h: needs merge nsspursrc/vm/cointerp.c: needs merge nsspursrc/vm/cointerp.h: needs merge nsspursrc/vm/gcc3x-cointerp.c: needs merge nsspurstack64src/vm/gcc3x-interp.c: needs merge nsspurstack64src/vm/interp.c: needs merge nsspurstacksrc/vm/gcc3x-interp.c: needs merge nsspurstacksrc/vm/interp.c: needs merge spur64src/vm/cogit.h: needs merge spur64src/vm/cogitX64SysV.c: needs merge spur64src/vm/cogitX64WIN64.c: needs merge spur64src/vm/cointerp.c: needs merge spur64src/vm/cointerp.h: needs merge spur64src/vm/gcc3x-cointerp.c: needs merge spurlowcode64src/vm/cogit.h: needs merge spurlowcode64src/vm/cogitX64SysV.c: needs merge spurlowcode64src/vm/cogitX64WIN64.c: needs merge spurlowcode64src/vm/cointerp.c: needs merge spurlowcode64src/vm/cointerp.h: needs merge spurlowcode64src/vm/gcc3x-cointerp.c: needs merge spurlowcodesrc/vm/cogit.h: needs merge spurlowcodesrc/vm/cointerp.c: needs merge spurlowcodesrc/vm/cointerp.h: needs merge spurlowcodesrc/vm/gcc3x-cointerp.c: needs merge spurlowcodestack64src/vm/gcc3x-interp.c: needs merge spurlowcodestack64src/vm/interp.c: needs merge spurlowcodestacksrc/vm/gcc3x-interp.c: needs merge spurlowcodestacksrc/vm/interp.c: needs merge spursista64src/vm/cogit.h: needs merge spursista64src/vm/cogitX64SysV.c: needs merge spursista64src/vm/cogitX64WIN64.c: needs merge spursista64src/vm/cointerp.c: needs merge spursista64src/vm/cointerp.h: needs merge spursista64src/vm/gcc3x-cointerp.c: needs merge spursistasrc/vm/cogit.h: needs merge spursistasrc/vm/cointerp.c: needs merge spursistasrc/vm/cointerp.h: needs merge spursistasrc/vm/gcc3x-cointerp.c: needs merge spursrc/vm/cogit.h: needs merge spursrc/vm/cointerp.c: needs merge spursrc/vm/cointerp.h: needs merge spursrc/vm/gcc3x-cointerp.c: needs merge spurstack64src/vm/gcc3x-interp.c: needs merge spurstack64src/vm/interp.c: needs merge spurstacksrc/vm/gcc3x-interp.c: needs merge spurstacksrc/vm/interp.c: needs merge src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c: needs merge src/plugins/SqueakFFIPrims/IA32FFIPlugin.c: needs merge src/plugins/SqueakFFIPrims/X64SysVFFIPlugin.c: needs merge src/plugins/SqueakFFIPrims/X64Win64FFIPlugin.c: needs merge src/vm/cogit.h: needs merge src/vm/cointerp.c: needs merge src/vm/cointerp.h: needs merge src/vm/cointerpmt.c: needs merge src/vm/cointerpmt.h: needs merge src/vm/gcc3x-cointerp.c: needs merge src/vm/gcc3x-cointerpmt.c: needs merge stacksrc/vm/gcc3x-interp.c: needs merge stacksrc/vm/interp.c: needs merge nsspur64src/vm/cogit.h: needs merge nsspur64src/vm/cogitX64SysV.c: needs merge nsspur64src/vm/cogitX64WIN64.c: needs merge nsspur64src/vm/cointerp.c: needs merge nsspur64src/vm/cointerp.h: needs merge nsspur64src/vm/gcc3x-cointerp.c: needs merge nsspursrc/vm/cogit.h: needs merge nsspursrc/vm/cointerp.c: needs merge nsspursrc/vm/cointerp.h: needs merge nsspursrc/vm/gcc3x-cointerp.c: needs merge nsspurstack64src/vm/gcc3x-interp.c: needs merge nsspurstack64src/vm/interp.c: needs merge nsspurstacksrc/vm/gcc3x-interp.c: needs merge nsspurstacksrc/vm/interp.c: needs merge spur64src/vm/cogit.h: needs merge spur64src/vm/cogitX64SysV.c: needs merge spur64src/vm/cogitX64WIN64.c: needs merge spur64src/vm/cointerp.c: needs merge spur64src/vm/cointerp.h: needs merge spur64src/vm/gcc3x-cointerp.c: needs merge spurlowcode64src/vm/cogit.h: needs merge spurlowcode64src/vm/cogitX64SysV.c: needs merge spurlowcode64src/vm/cogitX64WIN64.c: needs merge spurlowcode64src/vm/cointerp.c: needs merge spurlowcode64src/vm/cointerp.h: needs merge spurlowcode64src/vm/gcc3x-cointerp.c: needs merge spurlowcodesrc/vm/cogit.h: needs merge spurlowcodesrc/vm/cointerp.c: needs merge spurlowcodesrc/vm/cointerp.h: needs merge spurlowcodesrc/vm/gcc3x-cointerp.c: needs merge spurlowcodestack64src/vm/gcc3x-interp.c: needs merge spurlowcodestack64src/vm/interp.c: needs merge spurlowcodestacksrc/vm/gcc3x-interp.c: needs merge spurlowcodestacksrc/vm/interp.c: needs merge spursista64src/vm/cogit.h: needs merge spursista64src/vm/cogitX64SysV.c: needs merge spursista64src/vm/cogitX64WIN64.c: needs merge spursista64src/vm/cointerp.c: needs merge spursista64src/vm/cointerp.h: needs merge spursista64src/vm/gcc3x-cointerp.c: needs merge spursistasrc/vm/cogit.h: needs merge spursistasrc/vm/cointerp.c: needs merge spursistasrc/vm/cointerp.h: needs merge spursistasrc/vm/gcc3x-cointerp.c: needs merge spursrc/vm/cogit.h: needs merge spursrc/vm/cointerp.c: needs merge spursrc/vm/cointerp.h: needs merge spursrc/vm/gcc3x-cointerp.c: needs merge spurstack64src/vm/gcc3x-interp.c: needs merge spurstack64src/vm/interp.c: needs merge spurstacksrc/vm/gcc3x-interp.c: needs merge spurstacksrc/vm/interp.c: needs merge src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c: needs merge src/plugins/SqueakFFIPrims/IA32FFIPlugin.c: needs merge src/plugins/SqueakFFIPrims/X64SysVFFIPlugin.c: needs merge src/plugins/SqueakFFIPrims/X64Win64FFIPlugin.c: needs merge src/vm/cogit.h: needs merge src/vm/cointerp.c: needs merge src/vm/cointerp.h: needs merge src/vm/cointerpmt.c: needs merge src/vm/cointerpmt.h: needs merge src/vm/gcc3x-cointerp.c: needs merge src/vm/gcc3x-cointerpmt.c: needs merge stacksrc/vm/gcc3x-interp.c: needs merge stacksrc/vm/interp.c: needs merge nsspur64src/vm/cogit.h: unmerged (ed6bf51d9ab7c6f5927f69e5661f22ad5cdf93d8) nsspur64src/vm/cogit.h: unmerged (6b84b3adf311e7e9655802800cf3c66cca5ae590) nsspur64src/vm/cogit.h: unmerged (8aeef63d69b098a39eea676e8707de91ff7d4097) nsspur64src/vm/cogitX64SysV.c: unmerged (197c00a9998d01982af526043c15480549118225) nsspur64src/vm/cogitX64SysV.c: unmerged (41adeb695b6a1d13c802967b1b2a08fcb48a7934) nsspur64src/vm/cogitX64SysV.c: unmerged (b61a13f47897197e7b58aa9c147ba87eb5cdc8f1) nsspur64src/vm/cogitX64WIN64.c: unmerged (ff6c102e326c6f85a5129ab03ee09b1f24b33304) nsspur64src/vm/cogitX64WIN64.c: unmerged (2cb03481942943a106feef898e2a99dd7e316a28) nsspur64src/vm/cogitX64WIN64.c: unmerged (ec4b0edb7cd243b040a5982f0a374c3fb3862f77) nsspur64src/vm/cointerp.c: unmerged (56db95c989c194930e8d7eeeebebb372ec63258d) ... fatal: git-write-tree: error building trees Cannot save the current index state /Users/eliot/oscogvm /Users/eliot/oscogvm nsspur64src/vm/cogit.h: needs merge nsspur64src/vm/cogitX64SysV.c: needs merge nsspur64src/vm/cogitX64WIN64.c: needs merge nsspur64src/vm/cointerp.c: needs merge nsspur64src/vm/cointerp.h: needs merge nsspur64src/vm/gcc3x-cointerp.c: needs merge nsspursrc/vm/cogit.h: needs merge nsspursrc/vm/cointerp.c: needs merge nsspursrc/vm/cointerp.h: needs merge nsspursrc/vm/gcc3x-cointerp.c: needs merge nsspurstack64src/vm/gcc3x-interp.c: needs merge nsspurstack64src/vm/interp.c: needs merge nsspurstacksrc/vm/gcc3x-interp.c: needs merge nsspurstacksrc/vm/interp.c: needs merge spur64src/vm/cogit.h: needs merge spur64src/vm/cogitX64SysV.c: needs merge spur64src/vm/cogitX64WIN64.c: needs merge spur64src/vm/cointerp.c: needs merge spur64src/vm/cointerp.h: needs merge spur64src/vm/gcc3x-cointerp.c: needs merge spurlowcode64src/vm/cogit.h: needs merge spurlowcode64src/vm/cogitX64SysV.c: needs merge spurlowcode64src/vm/cogitX64WIN64.c: needs merge spurlowcode64src/vm/cointerp.c: needs merge spurlowcode64src/vm/cointerp.h: needs merge spurlowcode64src/vm/gcc3x-cointerp.c: needs merge spurlowcodesrc/vm/cogit.h: needs merge spurlowcodesrc/vm/cointerp.c: needs merge spurlowcodesrc/vm/cointerp.h: needs merge spurlowcodesrc/vm/gcc3x-cointerp.c: needs merge spurlowcodestack64src/vm/gcc3x-interp.c: needs merge spurlowcodestack64src/vm/interp.c: needs merge spurlowcodestacksrc/vm/gcc3x-interp.c: needs merge spurlowcodestacksrc/vm/interp.c: needs merge spursista64src/vm/cogit.h: needs merge spursista64src/vm/cogitX64SysV.c: needs merge spursista64src/vm/cogitX64WIN64.c: needs merge spursista64src/vm/cointerp.c: needs merge spursista64src/vm/cointerp.h: needs merge spursista64src/vm/gcc3x-cointerp.c: needs merge spursistasrc/vm/cogit.h: needs merge spursistasrc/vm/cointerp.c: needs merge spursistasrc/vm/cointerp.h: needs merge spursistasrc/vm/gcc3x-cointerp.c: needs merge spursrc/vm/cogit.h: needs merge spursrc/vm/cointerp.c: needs merge spursrc/vm/cointerp.h: needs merge spursrc/vm/gcc3x-cointerp.c: needs merge spurstack64src/vm/gcc3x-interp.c: needs merge spurstack64src/vm/interp.c: needs merge spurstacksrc/vm/gcc3x-interp.c: needs merge spurstacksrc/vm/interp.c: needs merge src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c: needs merge src/plugins/SqueakFFIPrims/IA32FFIPlugin.c: needs merge src/plugins/SqueakFFIPrims/X64SysVFFIPlugin.c: needs merge src/plugins/SqueakFFIPrims/X64Win64FFIPlugin.c: needs merge src/vm/cogit.h: needs merge src/vm/cointerp.c: needs merge src/vm/cointerp.h: needs merge src/vm/cointerpmt.c: needs merge src/vm/cointerpmt.h: needs merge src/vm/gcc3x-cointerp.c: needs merge src/vm/gcc3x-cointerpmt.c: needs merge stacksrc/vm/gcc3x-interp.c: needs merge stacksrc/vm/interp.c: needs merge unable to refresh index _,,,^..^,,,_ best, Eliot