[Vm-dev] What do I do when this happens?

Ben Coman btc at openinworld.com
Fri Dec 22 16:57:23 UTC 2017


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-building-trees
"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 at 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 (ed6bf51d9ab7c6f5927f69e5661f22
> ad5cdf93d8)
> nsspur64src/vm/cogit.h: unmerged (6b84b3adf311e7e9655802800cf3c6
> 6cca5ae590)
> nsspur64src/vm/cogit.h: unmerged (8aeef63d69b098a39eea676e8707de
> 91ff7d4097)
> nsspur64src/vm/cogitX64SysV.c: unmerged (197c00a9998d01982af526043c1548
> 0549118225)
> nsspur64src/vm/cogitX64SysV.c: unmerged (41adeb695b6a1d13c802967b1b2a08
> fcb48a7934)
> nsspur64src/vm/cogitX64SysV.c: unmerged (b61a13f47897197e7b58aa9c147ba8
> 7eb5cdc8f1)
> nsspur64src/vm/cogitX64WIN64.c: unmerged (ff6c102e326c6f85a5129ab03ee09b
> 1f24b33304)
> nsspur64src/vm/cogitX64WIN64.c: unmerged (2cb03481942943a106feef898e2a99
> dd7e316a28)
> nsspur64src/vm/cogitX64WIN64.c: unmerged (ec4b0edb7cd243b040a5982f0a374c
> 3fb3862f77)
> nsspur64src/vm/cointerp.c: unmerged (56db95c989c194930e8d7eeeebebb3
> 72ec63258d)
> ...
> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20171223/23c5633d/attachment-0001.html>


More information about the Vm-dev mailing list