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

Eliot Miranda eliot.miranda at gmail.com
Fri Dec 22 17:03:41 UTC 2017


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 at 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-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 (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
>> 
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20171222/f24617c7/attachment-0001.html>


More information about the Vm-dev mailing list