hpi-swa / Squot

Squeak Object Tracker - Version control for arbitrary objects, currently with Git storage
Other
58 stars 29 forks source link

Error: Conflicts not resolved while merging a branch into another one #367

Closed LinqLover closed 2 years ago

LinqLover commented 2 years ago

This is my entire merge dialog:

image

After pressing Accept in the dialog, the promise is broken with an "Error: Conflicts not resolved".

Evaluating the resolvedBlock defined in [] in SquotInteractiveMerge>>chooseChanges manually (debugging promises is so hard, sigh) yields this stack trace:

Bug Report
15 January 2022 5:56:40.471151 pm

VM: Win32 - Smalltalk
Image: Squeak6.0alpha [latest update: #21021]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir C:\Users\Christoph\OneDrive\Dokumente\Squeak\squot-failures
Trusted Dir C:\Users\Christoph\OneDrive\Dokumente\Studium\S21_SS\Sonic Thinking\project\squeak\Christoph
Untrusted Dir C:\Users\Christoph\OneDrive\Dokumente\My Squeak

SquotTrackedObjectMetadataMerge(Object)>>error:
    Receiver: a SquotTrackedObjectMetadataMerge (1 conflicts, 0 changes, 0 merges)
    Arguments and temporary variables: 
        aString:    'Conflicts not resolved'
    Receiver's instance variables: 
        base:   a SquotTrackedObjectMetadata(#ignoredInstanceVariables->an IdentityDictionary...etc...
        working:    a SquotTrackedObjectMetadata(#ignoredInstanceVariables->a Dictionary()...etc...
        incoming:   a SquotTrackedObjectMetadata(#ignoredInstanceVariables->an IdentityDictionary...etc...
        containerConflicts:     a Dictionary({a SquotDictionaryEntry key: #ignoredInstanceVariables...etc...
        containerModifications:     a Dictionary()
        elementMerges:  a Dictionary()

SquotTrackedObjectMetadataMerge(SquotAbstractMerge)>>resolvedPatch
    Receiver: a SquotTrackedObjectMetadataMerge (1 conflicts, 0 changes, 0 merges)
    Arguments and temporary variables: 

    Receiver's instance variables: 
        base:   a SquotTrackedObjectMetadata(#ignoredInstanceVariables->an IdentityDictionary...etc...
        working:    a SquotTrackedObjectMetadata(#ignoredInstanceVariables->a Dictionary()...etc...
        incoming:   a SquotTrackedObjectMetadata(#ignoredInstanceVariables->an IdentityDictionary...etc...
        containerConflicts:     a Dictionary({a SquotDictionaryEntry key: #ignoredInstanceVariables...etc...
        containerModifications:     a Dictionary()
        elementMerges:  a Dictionary()

SquotArtifactMerge>>privateResolvedPatch
    Receiver: a SquotArtifactMerge
    Arguments and temporary variables: 
        modification:   nil
    Receiver's instance variables: 
        base:   a SquotLazyArtifact('packages/RuntimeValueVisualization-Tools.package')
        working:    loaded 'packages/RuntimeValueVisualization-Tools.package' in a SquotImageStore...etc...
        incoming:   a SquotLazyArtifact('packages/RuntimeValueVisualization-Tools.package...etc...
        graphMerge:     a SquotObjectGraphMerge (0 conflicts, 0 changes, 1 merges)
        willBeLoaded:   true
        metadataMerge:  a SquotTrackedObjectMetadataMerge (1 conflicts, 0 changes, 0 mer...etc...

SquotArtifactMerge(SquotAbstractMerge)>>resolvedPatch
    Receiver: a SquotArtifactMerge
    Arguments and temporary variables: 

    Receiver's instance variables: 
        base:   a SquotLazyArtifact('packages/RuntimeValueVisualization-Tools.package')
        working:    loaded 'packages/RuntimeValueVisualization-Tools.package' in a SquotImageStore...etc...
        incoming:   a SquotLazyArtifact('packages/RuntimeValueVisualization-Tools.package...etc...
        graphMerge:     a SquotObjectGraphMerge (0 conflicts, 0 changes, 1 merges)
        willBeLoaded:   true
        metadataMerge:  a SquotTrackedObjectMetadataMerge (1 conflicts, 0 changes, 0 mer...etc...

[] in SquotMerge>>privateResolvedPatch
    Receiver: a SquotMerge (0 conflicts, 0 changes, 1 merges)
    Arguments and temporary variables: 
        builder:    a SquotPatchBuilder
        each:   a SquotArtifactMerge
    Receiver's instance variables: 
        base:   commit d846b90 "add installation guide to readme"
        working:    RuntimeValueVisualization
        incoming:   commit acade4b "Add hook for all visualizations that should be availa...etc...
        containerConflicts:     a Dictionary()
        containerModifications:     a Dictionary()
        elementMerges:  a Dictionary('packages/RuntimeValueVisualization-Tools.package'-...etc...
        loadOrderConflicts:     nil
        loadOrderMerge:     a SquotLoadOrderMerge (0 conflicts, 0 changes, 0 merges)
        customizedLoadOrder:    nil

[] in Dictionary>>valuesDo:
    Receiver: a Dictionary('packages/RuntimeValueVisualization-Tools.package'->a SquotArtifactMerge )
    Arguments and temporary variables: 
        aBlock:     [closure] in SquotMerge>>privateResolvedPatch
        association:    'packages/RuntimeValueVisualization-Tools.package'->a SquotArtifactMerge...etc...
    Receiver's instance variables: 
        tally:  1
        array:  {nil . nil . 'packages/RuntimeValueVisualization-Tools.package'->a SquotArtifactMerge...etc...

Dictionary>>associationsDo:
    Receiver: a Dictionary('packages/RuntimeValueVisualization-Tools.package'->a SquotArtifactMerge )
    Arguments and temporary variables: 
        aBlock:     [closure] in Dictionary>>valuesDo:
        element:    'packages/RuntimeValueVisualization-Tools.package'->a SquotArtifactMerge...etc...
        index:  3
        indexLimiT:     5
    Receiver's instance variables: 
        tally:  1
        array:  {nil . nil . 'packages/RuntimeValueVisualization-Tools.package'->a SquotArtifactMerge...etc...

Dictionary>>valuesDo:
    Receiver: a Dictionary('packages/RuntimeValueVisualization-Tools.package'->a SquotArtifactMerge )
    Arguments and temporary variables: 
        aBlock:     [closure] in SquotMerge>>privateResolvedPatch
    Receiver's instance variables: 
        tally:  1
        array:  {nil . nil . 'packages/RuntimeValueVisualization-Tools.package'->a SquotArtifactMerge...etc...

Dictionary>>do:
    Receiver: a Dictionary('packages/RuntimeValueVisualization-Tools.package'->a SquotArtifactMerge )
    Arguments and temporary variables: 
        aBlock:     [closure] in SquotMerge>>privateResolvedPatch
    Receiver's instance variables: 
        tally:  1
        array:  {nil . nil . 'packages/RuntimeValueVisualization-Tools.package'->a SquotArtifactMerge...etc...

SquotMerge>>privateResolvedPatch
    Receiver: a SquotMerge (0 conflicts, 0 changes, 1 merges)
    Arguments and temporary variables: 
        builder:    a SquotPatchBuilder
    Receiver's instance variables: 
        base:   commit d846b90 "add installation guide to readme"
        working:    RuntimeValueVisualization
        incoming:   commit acade4b "Add hook for all visualizations that should be availa...etc...
        containerConflicts:     a Dictionary()
        containerModifications:     a Dictionary()
        elementMerges:  a Dictionary('packages/RuntimeValueVisualization-Tools.package'-...etc...
        loadOrderConflicts:     nil
        loadOrderMerge:     a SquotLoadOrderMerge (0 conflicts, 0 changes, 0 merges)
        customizedLoadOrder:    nil

SquotMerge(SquotAbstractMerge)>>resolvedPatch
    Receiver: a SquotMerge (0 conflicts, 0 changes, 1 merges)
    Arguments and temporary variables: 

    Receiver's instance variables: 
        base:   commit d846b90 "add installation guide to readme"
        working:    RuntimeValueVisualization
        incoming:   commit acade4b "Add hook for all visualizations that should be availa...etc...
        containerConflicts:     a Dictionary()
        containerModifications:     a Dictionary()
        elementMerges:  a Dictionary('packages/RuntimeValueVisualization-Tools.package'-...etc...
        loadOrderConflicts:     nil
        loadOrderMerge:     a SquotLoadOrderMerge (0 conflicts, 0 changes, 0 merges)
        customizedLoadOrder:    nil

[] in SquotInteractiveMerge>>chooseChanges
    Receiver: a SquotInteractiveMerge
    Arguments and temporary variables: 
        tool:   nil
        ignored:    a SquotMergeTool
    Receiver's instance variables: 
        workingCopy:    RuntimeValueVisualization
        workingCopySnapshot:    a SquotSnapshot
        extensions:     a Dictionary(#resultPromise->a Promise #title->'Merge branch hook/allVisualizations...etc...
        unitOfWork:     a SquitUnitOfWork
        mergeVersion:   commit acade4b "Add hook for all visualizations that should be av...etc...
        baseVersion:    commit d846b90 "add installation guide to readme"
        merge:  a SquotMerge (0 conflicts, 0 changes, 1 merges)
        mergeBases:     a Set(commit d846b90 "add installation guide to readme")
        shouldAddParent:    true
        workingVersion:     commit d846b90 "add installation guide to readme"
        appliedPatch:   nil
        shouldAddGlobalObjectsAutomatically:    nil

Promise>>DoItIn:
    Receiver: a Promise(resolved: a SquotMergeTool)
    Arguments and temporary variables: 
        ThisContext:    [] in Promise>>then:ifRejected:
    Receiver's instance variables: 
        value:  a SquotMergeTool
        resolvers:  #()
        mutex:  a Mutex()
        state:  #fulfilled
        error:  nil
        rejecters:  #()

CompiledMethod>>valueWithReceiver:arguments:
    Receiver: (Promise>>#DoItIn: "a CompiledMethod(1688539)")
    Arguments and temporary variables: 
        aReceiver:  a Promise(resolved: a SquotMergeTool)
        anArray:    {[] in Promise>>then:ifRejected:}
    Receiver's instance variables: 
(Promise>>#DoItIn: "a CompiledMethod(1688539)")

[] in Process class>>forMethod:receiver:arguments:
    Receiver: Process
    Arguments and temporary variables: 
        aCompiledMethod:    (Promise>>#DoItIn: "a CompiledMethod(1688539)")
        anObject:   a Promise(resolved: a SquotMergeTool)
        someArguments:  {[] in Promise>>then:ifRejected:}
    Receiver's instance variables: 
        superclass:     Link
        methodDict:     a MethodDictionary(#activateReturn:value:->(Process>>#activateRetur...etc...
        format:     65546
        instanceVariables:  #('suspendedContext' 'priority' 'myList' 'threadId' 'effectiveProcess...etc...
        organization:   ('accessing' calleeOf: copyStack effectiveProcess name name: offList...etc...
        subclasses:     nil
        name:   #Process
        classPool:  a Dictionary()
        sharedPools:    nil
        environment:    Smalltalk
        category:   #'Kernel-Processes'

[] in FullBlockClosure(BlockClosure)>>newProcess
    Receiver: [closure] in Process class>>forMethod:receiver:arguments:
    Arguments and temporary variables: 

    Receiver's instance variables: 
        outerContext:   Process class>>forMethod:receiver:arguments:
        startpcOrMethod:    ([] in Process class>>#forMethod:receiver:arguments: "a CompiledBlock...etc...
        numArgs:    0
        receiver:   Process

--- The full stack ---
SquotTrackedObjectMetadataMerge(Object)>>error:
SquotTrackedObjectMetadataMerge(SquotAbstractMerge)>>resolvedPatch
SquotArtifactMerge>>privateResolvedPatch
SquotArtifactMerge(SquotAbstractMerge)>>resolvedPatch
[] in SquotMerge>>privateResolvedPatch
[] in Dictionary>>valuesDo:
Dictionary>>associationsDo:
Dictionary>>valuesDo:
Dictionary>>do:
SquotMerge>>privateResolvedPatch
SquotMerge(SquotAbstractMerge)>>resolvedPatch
[] in SquotInteractiveMerge>>chooseChanges
Promise>>DoItIn:
CompiledMethod>>valueWithReceiver:arguments:
[] in Process class>>forMethod:receiver:arguments:
[] in FullBlockClosure(BlockClosure)>>newProcess

Container conflicts:

a Dictionary({a SquotDictionaryEntry key: #ignoredInstanceVariables}->a SquotObjectReferenceConflict )

I wonder why this unresolved conflict did not appear in the merge dialog before.

In case you need it, I have snapshotted my image and can share it with you (conflict not resolved.image). :-)

LinqLover commented 2 years ago

This is how my commit dialog looks like before merging into the current branch:

image

LinqLover commented 2 years ago

Interestingly, re-checking out the latest commit does not make this metadata diff disappear from my working copy. Discarding uncommited changes does not do so, either.

LinqLover commented 2 years ago

Funny. I cannot even commit these metadata diffs (I just tried) because there is a startDiff which is nil:

image

Bug Report
15 January 2022 6:05:36.868151 pm

VM: Win32 - Smalltalk
Image: Squeak6.0alpha [latest update: #21021]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir C:\Users\Christoph\OneDrive\Dokumente\Squeak\squot-failures
Trusted Dir C:\Users\Christoph\OneDrive\Dokumente\Studium\S21_SS\Sonic Thinking\project\squeak\Christoph
Untrusted Dir C:\Users\Christoph\OneDrive\Dokumente\My Squeak

UndefinedObject(Object)>>doesNotUnderstand: #patch
    Receiver: nil
    Arguments and temporary variables: 
        aMessage:   patch
        exception:  MessageNotUnderstood: UndefinedObject>>patch
        resumeValue:    nil
    Receiver's instance variables: 
nil

SquotCypressCodeSerializer>>writeDiff:
    Receiver: a SquotCypressCodeSerializer
    Arguments and temporary variables: 
        aSquotArtifactDiff:     a SquotArtifactModification 'packages/RuntimeValueVisualization-Showcase.package...etc...
        directory:  git:/packages/RuntimeValueVisualization-Showcase.package
        mcPatch:    nil
        newDefinitions:     nil
        classDefinitions:   nil
        missingClasses:     nil
        removedMethods:     a Dictionary()
        removedClasses:     a Dictionary()
        removedOthers:  a Dictionary()
        allClasses:     nil
        extensions:     nil
        allMethods:     nil
    Receiver's instance variables: 
        rootDirectory:  git:/
        definitions:    an OrderedCollection()
        fileTreeWriter:     a MCFileTreeWriterWithSettableFileUtils
        cypressWriter:  a MCFileTreeStCypressWriterWithSettableFileUtils
        fileUtils:  a MCFileTreeFileSystemUtilsForSquot
        currentDirectory:   git:/packages/RuntimeValueVisualization-Showcase.package

SquotFileSystemStore>>patchOrdinary:
    Receiver: a SquotFileSystemStore
    Arguments and temporary variables: 
        anArtifactDiff:     a SquotArtifactModification 'packages/RuntimeValueVisualization-Showcase.package...etc...
        serializerClass:    SquotCypressCodeSerializer
        serializer:     a SquotCypressCodeSerializer
        storedArtifact:     a SquotLazyArtifact('packages/RuntimeValueVisualization-Showcase.package...etc...
        reference:  nil
    Receiver's instance variables: 
        deserializers:  nil
        directory:  git:/
        shouldStoreMetadata:    true
        tableOfContentsDuringTransaction:   a SquotTableOfContentsFile

SquotFileSystemStore>>applyDiff:toObjectAt:
    Receiver: a SquotFileSystemStore
    Arguments and temporary variables: 
        aDiff:  a SquotArtifactModification 'packages/RuntimeValueVisualization-Showcase.package...etc...
        path:   'packages/RuntimeValueVisualization-Showcase.package'
        reference:  git:/packages/RuntimeValueVisualization-Showcase.package
    Receiver's instance variables: 
        deserializers:  nil
        directory:  git:/
        shouldStoreMetadata:    true
        tableOfContentsDuringTransaction:   a SquotTableOfContentsFile

SquotArtifactModification(SquotArtifactDiff)>>applyToContainer:
    Receiver: a SquotArtifactModification 'packages/RuntimeValueVisualization-Showcase.package'
    Arguments and temporary variables: 
        anObjectContainer:  a SquotFileSystemStore
    Receiver's instance variables: 
        left:   a SquotLazyArtifact('packages/RuntimeValueVisualization-Showcase.package'...etc...
        right:  a SquotLazyArtifact('packages/RuntimeValueVisualization-Showcase.package...etc...
        isLoadedInWorkingCopy:  true
        diffContent:    a SquotObjectGraphDiff (0 changed objects)
        metadataDiff:   a SquotTrackedObjectMetadataDiff (1 changes)
        topNodes:   nil
        willBeLoaded:   true

SquotFileSystemStore>>applyDiff:
    Receiver: a SquotFileSystemStore
    Arguments and temporary variables: 
        anArtifactDiff:     a SquotArtifactModification 'packages/RuntimeValueVisualization-Showcase.package...etc...
    Receiver's instance variables: 
        deserializers:  nil
        directory:  git:/
        shouldStoreMetadata:    true
        tableOfContentsDuringTransaction:   a SquotTableOfContentsFile

[] in SquotPatch>>privateApplyTo:diffsDoing:
    Receiver: a SquotPatch (3 diffs)
    Arguments and temporary variables: 
        anObjectContainer:  a SquotFileSystemStore
        aBlock:     [closure] in SquotPatch>>applyTo:displayingProgress:
        order:  #('packages/RuntimeValueVisualization-Core.package' 'packages/RuntimeValueVisualization-Showcase.package...etc...
        relevant:   #('packages/RuntimeValueVisualization-Showcase.package' 'packages/RuntimeValueVisualization-Tools.package...etc...
        removed:    #()
        patchedArtifacts:   a Dictionary()
        newSnapshot:    nil
        each:   'packages/RuntimeValueVisualization-Showcase.package'
    Receiver's instance variables: 
        base:   a SquotSnapshot
        patched:    a SquotSnapshot
        diffs:  a Dictionary('packages/BaselineOfRuntimeValueVisualization.package'->a SquotArtifactModification...etc...
        loadOrderDiff:  a DiffPatch

[] in [] in Array(Collection)>>do:displayingProgress:every:
    Receiver: #('packages/RuntimeValueVisualization-Showcase.package' 'packages/RuntimeValueVisualization-Tools.package...etc...
    Arguments and temporary variables: 
        aBlock:     [closure] in SquotPatch>>privateApplyTo:diffsDoing:
        aStringOrBlock:     [closure] in [] in SquotFileSystemStore>>applyPatch:
        msecs:  20
        size:   3
        labelBlock:     [closure] in [] in SquotFileSystemStore>>applyPatch:
        count:  0
        oldLabel:   'Writing objects to files... packages/RuntimeValueVisualization-Showcase.package...etc...
        lastUpdate:     3819719038768
        bar:    [closure] in SystemProgressMorph>>position:label:min:max:
        each:   'packages/RuntimeValueVisualization-Showcase.package'
        newLabel:   'Writing objects to files... packages/RuntimeValueVisualization-Showcase.package...etc...
    Receiver's instance variables: 
#('packages/RuntimeValueVisualization-Showcase.package' 'packages/RuntimeValueVisualization-Tools.package...etc...

Array(SequenceableCollection)>>do:
    Receiver: #('packages/RuntimeValueVisualization-Showcase.package' 'packages/RuntimeValueVisualization-Tools.package...etc...
    Arguments and temporary variables: 
        aBlock:     [closure] in [] in Array(Collection)>>do:displayingProgress:every:
        index:  1
        indexLimiT:     3
    Receiver's instance variables: 
#('packages/RuntimeValueVisualization-Showcase.package' 'packages/RuntimeValueVisualization-Tools.package...etc...

[] in Array(Collection)>>do:displayingProgress:every:
    Receiver: #('packages/RuntimeValueVisualization-Showcase.package' 'packages/RuntimeValueVisualization-Tools.package...etc...
    Arguments and temporary variables: 
        aBlock:     [closure] in SquotPatch>>privateApplyTo:diffsDoing:
        aStringOrBlock:     [closure] in [] in SquotFileSystemStore>>applyPatch:
        msecs:  20
        size:   3
        labelBlock:     [closure] in [] in SquotFileSystemStore>>applyPatch:
        count:  0
        oldLabel:   'Writing objects to files... packages/RuntimeValueVisualization-Showcase.package...etc...
        lastUpdate:     3819719038768
        bar:    [closure] in SystemProgressMorph>>position:label:min:max:
    Receiver's instance variables: 
#('packages/RuntimeValueVisualization-Showcase.package' 'packages/RuntimeValueVisualization-Tools.package...etc...

[] in [] in MorphicUIManager>>displayProgress:at:from:to:during:
    Receiver: a MorphicUIManager
    Arguments and temporary variables: 
        titleString:    ''
        aPoint:     960@508
        minVal:     0
        maxVal:     3
        workBlock:  [closure] in Array(Collection)>>do:displayingProgress:every:
        progress:   [closure] in SystemProgressMorph>>position:label:min:max:
        result:     nil
    Receiver's instance variables: 
        builderClass:   MorphicToolBuilder

FullBlockClosure(BlockClosure)>>on:do:
    Receiver: [closure] in [] in MorphicUIManager>>displayProgress:at:from:to:during:
    Arguments and temporary variables: 
        exceptionOrExceptionSet:    ProgressNotification
        handlerAction:  [closure] in [] in MorphicUIManager>>displayProgress:at:from:to:during:...etc...
        handlerActive:  true
        handlerRearmed:     false
    Receiver's instance variables: 
        outerContext:   [] in MorphicUIManager>>displayProgress:at:from:to:during:
        startpcOrMethod:    ([] in MorphicUIManager>>#displayProgress:at:from:to:during: "...etc...
        numArgs:    0
        receiver:   a MorphicUIManager

[] in MorphicUIManager>>displayProgress:at:from:to:during:
    Receiver: a MorphicUIManager
    Arguments and temporary variables: 
        titleString:    ''
        aPoint:     960@508
        minVal:     0
        maxVal:     3
        workBlock:  [closure] in Array(Collection)>>do:displayingProgress:every:
        progress:   [closure] in SystemProgressMorph>>position:label:min:max:
        result:     nil
    Receiver's instance variables: 
        builderClass:   MorphicToolBuilder

FullBlockClosure(BlockClosure)>>ensure:
    Receiver: [closure] in MorphicUIManager>>displayProgress:at:from:to:during:
    Arguments and temporary variables: 
        aBlock:     [closure] in MorphicUIManager>>displayProgress:at:from:to:during:
        complete:   nil
        returnValue:    nil
    Receiver's instance variables: 
        outerContext:   MorphicUIManager>>displayProgress:at:from:to:during:
        startpcOrMethod:    ([] in MorphicUIManager>>#displayProgress:at:from:to:during: "...etc...
        numArgs:    0
        receiver:   a MorphicUIManager

MorphicUIManager>>displayProgress:at:from:to:during:
    Receiver: a MorphicUIManager
    Arguments and temporary variables: 
        titleString:    ''
        aPoint:     960@508
        minVal:     0
        maxVal:     3
        workBlock:  [closure] in Array(Collection)>>do:displayingProgress:every:
        progress:   [closure] in SystemProgressMorph>>position:label:min:max:
        result:     nil
    Receiver's instance variables: 
        builderClass:   MorphicToolBuilder

ProgressInitiationException>>defaultResumeValue
    Receiver: ProgressInitiationException: 
    Arguments and temporary variables: 

    Receiver's instance variables: 
        messageText:    nil
        tag:    nil
        signalContext:  ProgressInitiationException(Exception)>>signal
        handlerContext:     nil
        outerContext:   nil
        workBlock:  [closure] in Array(Collection)>>do:displayingProgress:every:
        maxVal:     3
        minVal:     0
        aPoint:     960@508
        progressTitle:  ''

ProgressInitiationException(Exception)>>resume
    Receiver: ProgressInitiationException: 
    Arguments and temporary variables: 

    Receiver's instance variables: 
        messageText:    nil
        tag:    nil
        signalContext:  ProgressInitiationException(Exception)>>signal
        handlerContext:     nil
        outerContext:   nil
        workBlock:  [closure] in Array(Collection)>>do:displayingProgress:every:
        maxVal:     3
        minVal:     0
        aPoint:     960@508
        progressTitle:  ''

ProgressInitiationException>>defaultAction
    Receiver: ProgressInitiationException: 
    Arguments and temporary variables: 

    Receiver's instance variables: 
        messageText:    nil
        tag:    nil
        signalContext:  ProgressInitiationException(Exception)>>signal
        handlerContext:     nil
        outerContext:   nil
        workBlock:  [closure] in Array(Collection)>>do:displayingProgress:every:
        maxVal:     3
        minVal:     0
        aPoint:     960@508
        progressTitle:  ''

UndefinedObject>>handleSignal:
    Receiver: nil
    Arguments and temporary variables: 
        exception:  ProgressInitiationException: 
    Receiver's instance variables: 
nil

--- The full stack ---
UndefinedObject(Object)>>doesNotUnderstand: #patch
SquotCypressCodeSerializer>>writeDiff:
SquotFileSystemStore>>patchOrdinary:
SquotFileSystemStore>>applyDiff:toObjectAt:
SquotArtifactModification(SquotArtifactDiff)>>applyToContainer:
SquotFileSystemStore>>applyDiff:
[] in SquotPatch>>privateApplyTo:diffsDoing:
[] in [] in Array(Collection)>>do:displayingProgress:every:
Array(SequenceableCollection)>>do:
[] in Array(Collection)>>do:displayingProgress:every:
[] in [] in MorphicUIManager>>displayProgress:at:from:to:during:
FullBlockClosure(BlockClosure)>>on:do:
[] in MorphicUIManager>>displayProgress:at:from:to:during:
FullBlockClosure(BlockClosure)>>ensure:
MorphicUIManager>>displayProgress:at:from:to:during:
ProgressInitiationException>>defaultResumeValue
ProgressInitiationException(Exception)>>resume
ProgressInitiationException>>defaultAction
UndefinedObject>>handleSignal:
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ProgressInitiationException(Exception)>>signal
ProgressInitiationException>>display:at:from:to:during:
ProgressInitiationException class>>display:at:from:to:during:
ByteString(String)>>displayProgressAt:from:to:during:
ByteString(String)>>displayProgressFrom:to:during:
Array(Collection)>>do:displayingProgress:every:
Array(Collection)>>do:displayingProgress:
SquotGUI class>>displayProgress:for:do:
SquotProgress>>display:for:do:
SquotProgress class>>display:for:do:
[] in SquotPatch>>applyTo:displayingProgress:
SquotPatch>>privateApplyTo:diffsDoing:
SquotPatch>>applyTo:displayingProgress:
[] in SquotFileSystemStore>>applyPatch:
FullBlockClosure(BlockClosure)>>ensure:
SquotFileSystemStore>>openTableOfContentsDuring:
SquotFileSystemStore>>applyPatch:
[] in SquitVersionBuilder>>buildVersion
[] in MorphicUIManager(UIManager)>>informUser:during:
[] in [] in MorphicUIManager>>displayProgress:at:from:to:during:
FullBlockClosure(BlockClosure)>>on:do:
[] in MorphicUIManager>>displayProgress:at:from:to:during:
FullBlockClosure(BlockClosure)>>ensure:
MorphicUIManager>>displayProgress:at:from:to:during:
ProgressInitiationException>>defaultResumeValue
ProgressInitiationException(Exception)>>resume
ProgressInitiationException>>defaultAction
UndefinedObject>>handleSignal:
ProgressInitiationException(Exception)>>signal
ProgressInitiationException>>display:at:from:to:during:
ProgressInitiationException class>>display:at:from:to:during:
SystemProgressMorph class>>informUserAt:during:
MorphicUIManager>>informUserDuring:
MorphicUIManager(UIManager)>>informUser:during:
SquotGUI class>>displayStatus:during:
SquotProgress>>displayStatus:during:
SquotProgress class>>displayStatus:during:
SquitVersionBuilder>>buildVersion
SquitRepository>>createNewVersionFromPatch:with:
SquitHistorian>>createNewVersionFromPatch:with:
[] in SquotInteractiveSave(SquotSaveOperation)>>createVersion
[] in GitCurrentUnitOfWork class(DynamicVariable class)>>value:during:
-- and more not shown --

(Again, the actual error was a broken promise only, I debugged the single steps to create this bug report)

LinqLover commented 2 years ago

Somehow managed to complete the merge with a lot of "return entered value" here and "remove key" there, but I don't have an actual idea what was going on there. The image is still available if you feel like reproducing the issue. :-)

j4yk commented 2 years ago

Going from the bottom up: I committed something to prevent the MNU when there is no patch (if one were to commit only metadata changes).

For the ignoredInstanceVariables, that should only appear if something other than a package is reflected while working on this artifact. So I do not know why it appeared in your package artifact. While it does not hurt to have it among the metadata, if you want to get rid of this, you can "Explore SquotWorkingCopy" in the projects menu, and go to store -> additionalInfo -> your package and remove the key from the SquotTrackedObjectMetadata (which is a Dictionary) with an inspector:

image

j4yk commented 2 years ago

Well, the ignoredInstanceVariables do hurt because the diff trees are not implemented for merges of metadata...

image