hpi-swa / Squot

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

Pull on empty repository fails with MessageNotUnderstood UndefinedObject>>mergeBasesWith: #273

Closed j4yk closed 3 years ago

j4yk commented 4 years ago

The version of the branch is still nil because the branch does not really exist yet. This special case is not handled by the current merge methods.

15 June 2020 12:43:00.137452 am

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

SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir C:\Users\Jakob\HiDrive Trusted Dir C:\Users\Jakob\HiDrive\Jakob Untrusted Dir C:\Users\Jakob\Documents\My Squeak

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

SquotWorkingCopy>>checkMergeBasesOf:with:ifNoCommonAncestor:ifAncestor:ifDescendant: Receiver: foobar Arguments and temporary variables: myVersion: nil otherVersion: nil noCommonAncestorBlock: [closure] in SquotWorkingCopy>>mergeVersionInteractively:ifCanceled:...etc... ancestorBlock: [closure] in SquotWorkingCopy>>mergeVersionInteractively:ifCanceled:...etc... descendantBlock: [closure] in SquotWorkingCopy>>mergeVersionInteractively:ifCanceled:...etc... mergeBases: nil aVersionIsAncestor: nil aVersionIsDescendant: nil Receiver's instance variables: name: 'foobar' store: a SquotImageStore repository: a SquitRepository loadedHistorian: a SquitHistorian('refs/heads/master') previousVersionId: nil previousSnapshot: nil previouslySavedArtifacts: nil shouldStoreMetadata: nil additionalParents: nil loadedVersion: nil newVersionMessage: nil

SquotWorkingCopy>>checkMergeBasesOfHeadVersionWith:ifNoCommonAncestor:ifAncestor:ifDescendant: Receiver: foobar Arguments and temporary variables: aVersion: nil noCommonAncestorBlock: [closure] in SquotWorkingCopy>>mergeVersionInteractively:ifCanceled:...etc... ancestorBlock: [closure] in SquotWorkingCopy>>mergeVersionInteractively:ifCanceled:...etc... descendantBlock: [closure] in SquotWorkingCopy>>mergeVersionInteractively:ifCanceled:...etc... Receiver's instance variables: name: 'foobar' store: a SquotImageStore repository: a SquitRepository loadedHistorian: a SquitHistorian('refs/heads/master') previousVersionId: nil previousSnapshot: nil previouslySavedArtifacts: nil shouldStoreMetadata: nil additionalParents: nil loadedVersion: nil newVersionMessage: nil

SquotWorkingCopy>>mergeVersionInteractively:ifCanceled: Receiver: foobar Arguments and temporary variables: aVersion: nil cancelBlock: [closure] in SquitBrowser>>mergeVersionIntoActiveBranch:ifCanceled:...etc... mergeBases: nil merge: nil fastForwardPossible: #(false) Receiver's instance variables: name: 'foobar' store: a SquotImageStore repository: a SquitRepository loadedHistorian: a SquitHistorian('refs/heads/master') previousVersionId: nil previousSnapshot: nil previouslySavedArtifacts: nil shouldStoreMetadata: nil additionalParents: nil loadedVersion: nil newVersionMessage: nil

SquitBrowser>>mergeVersionIntoActiveBranch:ifCanceled: Receiver: a SquitBrowser Arguments and temporary variables: mergeHeadCommit: nil cancelBlock: [closure] in [] in [] in SquitBrowser>>actionPull selectedProject: foobar Receiver's instance variables: dependents: a DependentsArray(a PluggableSystemWindow<Git Browser: foobar (mast...etc... projectIndex: 16 commitSelection: nil objectIndex: 3 objectCache: #() commitForCache: commit 4764224 "CR line endings in postscript" timeOfLastListUpdate: 3758640477666 searchTerm: '' offeredToAddFirstProject: true repositoryExists: true cachedCommitList: #() commitListBuildProcess: a Process in [] in FullBlockClosure(BlockClosure)>>newProcess...etc... selectedHistorian: a SquitHistorian('refs/heads/master') indexOfActiveHistorianInBranchList: 2 branchList: #('-- Branches --' 'master') commitToDiffAgainst: nil

[] in [] in SquitBrowser>>actionPull Receiver: a SquitBrowser Arguments and temporary variables: < Receiver's instance variables: dependents: a DependentsArray(a PluggableSystemWindow<Git Browser: foobar (mast...etc... projectIndex: 16 commitSelection: nil objectIndex: 3 objectCache: #() commitForCache: commit 4764224 "CR line endings in postscript" timeOfLastListUpdate: 3758640477666 searchTerm: '' offeredToAddFirstProject: true repositoryExists: true cachedCommitList: #() commitListBuildProcess: a Process in [] in FullBlockClosure(BlockClosure)>>newProcess...etc... selectedHistorian: a SquitHistorian('refs/heads/master') indexOfActiveHistorianInBranchList: 2 branchList: #('-- Branches --' 'master') commitToDiffAgainst: nil

FullBlockClosure(BlockClosure)>>on:do: Receiver: [closure] in [] in SquitBrowser>>actionPull Arguments and temporary variables: exceptionOrExceptionSet: SquotInitialLogMessageRequested handlerAction: [closure] in [] in SquitBrowser>>actionPull handlerActive: true Receiver's instance variables: outerContext: [] in SquitBrowser>>actionPull startpcOrMethod: ([] in SquitBrowser>>#actionPull "a CompiledBlock(1910741)") numArgs: 0 receiver: a SquitBrowser

[] in SquitBrowser>>actionPull Receiver: a SquitBrowser Arguments and temporary variables: < Receiver's instance variables: dependents: a DependentsArray(a PluggableSystemWindow<Git Browser: foobar (mast...etc... projectIndex: 16 commitSelection: nil objectIndex: 3 objectCache: #() commitForCache: commit 4764224 "CR line endings in postscript" timeOfLastListUpdate: 3758640477666 searchTerm: '' offeredToAddFirstProject: true repositoryExists: true cachedCommitList: #() commitListBuildProcess: a Process in [] in FullBlockClosure(BlockClosure)>>newProcess...etc... selectedHistorian: a SquitHistorian('refs/heads/master') indexOfActiveHistorianInBranchList: 2 branchList: #('-- Branches --' 'master') commitToDiffAgainst: nil

[] in GitCurrentUnitOfWork class(DynamicVariable class)>>value:during: Receiver: GitCurrentUnitOfWork Arguments and temporary variables: < Receiver's instance variables: superclass: DynamicVariable methodDict: a MethodDictionary() format: 0 instanceVariables: nil organization: ('as yet unclassified')

    subclasses:     nil
    name:   #GitCurrentUnitOfWork
    classPool:  nil
    sharedPools:    nil
    environment:    Smalltalk
    category:   #'FileSystem-Git-Plumbing-Core'
    hash:   99344143

FullBlockClosure(BlockClosure)>>ensure: Receiver: [closure] in GitCurrentUnitOfWork class(DynamicVariable class)>>value:during: Arguments and temporary variables: aBlock: [closure] in GitCurrentUnitOfWork class(DynamicVariable class)>>value:during:...etc... complete: nil returnValue: nil Receiver's instance variables: outerContext: GitCurrentUnitOfWork class(DynamicVariable class)>>value:during: startpcOrMethod: ([] in DynamicVariable class>>#value:during: "a CompiledBlock(...etc... numArgs: 0 receiver: GitCurrentUnitOfWork

GitCurrentUnitOfWork class(DynamicVariable class)>>value:during: Receiver: GitCurrentUnitOfWork Arguments and temporary variables: anObject: a Dictionary(a GitRepository C:\Users\Jakob\HiDrive\Squeak\BadRepoUrl...etc... aBlock: [closure] in SquitBrowser>>actionPull p: a Process in MorphicDebugger class>>openOn:context:label:contents:fullView: oldValue: nil outerScopeWasDynamic: #(false) Receiver's instance variables: superclass: DynamicVariable methodDict: a MethodDictionary() format: 0 instanceVariables: nil organization: ('as yet unclassified')

    subclasses:     nil
    name:   #GitCurrentUnitOfWork
    classPool:  nil
    sharedPools:    nil
    environment:    Smalltalk
    category:   #'FileSystem-Git-Plumbing-Core'
    hash:   99344143

GitCurrentUnitOfWork class>>value:for:during: Receiver: GitCurrentUnitOfWork Arguments and temporary variables: aGitUnitOfWork: a GitUnitOfWork on a GitRepository C:\Users\Jakob\HiDrive\Squea...etc... anObject: a GitRepository C:\Users\Jakob\HiDrive\Squeak\BadRepoUrlTests aBlock: [closure] in SquitBrowser>>actionPull Receiver's instance variables: superclass: DynamicVariable methodDict: a MethodDictionary() format: 0 instanceVariables: nil organization: ('as yet unclassified')

    subclasses:     nil
    name:   #GitCurrentUnitOfWork
    classPool:  nil
    sharedPools:    nil
    environment:    Smalltalk
    category:   #'FileSystem-Git-Plumbing-Core'
    hash:   99344143

GitUnitOfWork>>activateDuring: Receiver: a GitUnitOfWork on a GitRepository C:\Users\Jakob\HiDrive\Squeak\BadRepoUrlTests Arguments and temporary variables: aBlock: [closure] in SquitBrowser>>actionPull Receiver's instance variables: repository: a GitRepository C:\Users\Jakob\HiDrive\Squeak\BadRepoUrlTests objectStores: an OrderedCollection(a GitLooseObjectStore) refStores: an OrderedCollection(a GitLooseRefStore) refLogs: a Dictionary() config: an INIFile refCache: a GitRefCache

SquitUnitOfWork>>activateDuring: Receiver: a SquitUnitOfWork Arguments and temporary variables: aBlock: [closure] in SquitBrowser>>actionPull Receiver's instance variables: repository: a SquitRepository numberOfClients: 1 gitUnitOfWork: a GitUnitOfWork on a GitRepository C:\Users\Jakob\HiDrive\Squeak...etc...

[] in SquitBrowser>>withUnitOfWork: Receiver: a SquitBrowser Arguments and temporary variables: aBlock: [closure] in SquitBrowser>>actionPull unitOfWork: {a SquitUnitOfWork} Receiver's instance variables: dependents: a DependentsArray(a PluggableSystemWindow<Git Browser: foobar (mast...etc... projectIndex: 16 commitSelection: nil objectIndex: 3 objectCache: #() commitForCache: commit 4764224 "CR line endings in postscript" timeOfLastListUpdate: 3758640477666 searchTerm: '' offeredToAddFirstProject: true repositoryExists: true cachedCommitList: #() commitListBuildProcess: a Process in [] in FullBlockClosure(BlockClosure)>>newProcess...etc... selectedHistorian: a SquitHistorian('refs/heads/master') indexOfActiveHistorianInBranchList: 2 branchList: #('-- Branches --' 'master') commitToDiffAgainst: nil

FullBlockClosure(BlockClosure)>>ensure: Receiver: [closure] in SquitBrowser>>withUnitOfWork: Arguments and temporary variables: aBlock: [closure] in SquitBrowser>>withUnitOfWork: complete: nil returnValue: nil Receiver's instance variables: outerContext: SquitBrowser>>withUnitOfWork: startpcOrMethod: ([] in SquitBrowser>>#withUnitOfWork: "a CompiledBlock(143788)...etc... numArgs: 0 receiver: a SquitBrowser

SquitBrowser>>withUnitOfWork: Receiver: a SquitBrowser Arguments and temporary variables: aBlock: [closure] in SquitBrowser>>actionPull unitOfWork: {a SquitUnitOfWork} Receiver's instance variables: dependents: a DependentsArray(a PluggableSystemWindow<Git Browser: foobar (mast...etc... projectIndex: 16 commitSelection: nil objectIndex: 3 objectCache: #() commitForCache: commit 4764224 "CR line endings in postscript" timeOfLastListUpdate: 3758640477666 searchTerm: '' offeredToAddFirstProject: true repositoryExists: true cachedCommitList: #() commitListBuildProcess: a Process in [] in FullBlockClosure(BlockClosure)>>newProcess...etc... selectedHistorian: a SquitHistorian('refs/heads/master') indexOfActiveHistorianInBranchList: 2 branchList: #('-- Branches --' 'master') commitToDiffAgainst: nil

SquitBrowser>>actionPull Receiver: a SquitBrowser Arguments and temporary variables: < Receiver's instance variables: dependents: a DependentsArray(a PluggableSystemWindow<Git Browser: foobar (mast...etc... projectIndex: 16 commitSelection: nil objectIndex: 3 objectCache: #() commitForCache: commit 4764224 "CR line endings in postscript" timeOfLastListUpdate: 3758640477666 searchTerm: '' offeredToAddFirstProject: true repositoryExists: true cachedCommitList: #() commitListBuildProcess: a Process in [] in FullBlockClosure(BlockClosure)>>newProcess...etc... selectedHistorian: a SquitHistorian('refs/heads/master') indexOfActiveHistorianInBranchList: 2 branchList: #('-- Branches --' 'master') commitToDiffAgainst: nil

PluggableButtonMorphPlus(PluggableButtonMorph)>>performAction Receiver: a PluggableButtonMorphPlus(2435579) Arguments and temporary variables:

Receiver's instance variables: 
    bounds:     695@407 corner: 766@428
    owner:  a PluggablePanelMorph(564421)
    submorphs:  #()
    fullBounds:     695@407 corner: 766@428
    color:  (Color r: 0.027 g: 0.212 b: 0.259)
    extension:  a MorphExtension (1092089) [balloonText]  [other:  (minWidth -> 10) ...etc...
    model:  a SquitBrowser
    label:  'Pull'
    font:   a StrikeFont(Darkmap DejaVu Sans7 10)
    getStateSelector:   nil
    actionSelector:     #actionPull
    getLabelSelector:   nil
    getMenuSelector:    nil
    shortcutCharacter:  nil
    askBeforeChanging:  false
    triggerOnMouseDown:     false
    offColor:   (Color r: 0.027 g: 0.212 b: 0.259)
    onColor:    (Color r: 0.017 g: 0.13 b: 0.159)
    feedbackColor:  (Color r: 0.001 g: 0.004 b: 0.005)
    showSelectionFeedback:  nil
    allButtons:     {a PluggableButtonMorphPlus(4190468) . a PluggableButtonMorphPlus(2...etc...
    arguments:  nil
    argumentsProvider:  nil
    argumentsSelector:  nil
    style:  nil
    hoverColor:     (Color r: 0.017 g: 0.13 b: 0.159)
    borderColor:    (Color r: 0.345 g: 0.431 b: 0.458)
    textColor:  (Color r: 0.934 g: 0.91 b: 0.836)
    labelOffset:    0@0
    wantsGradient:  nil
    enabled:    true
    action:     nil
    getColorSelector:   nil
    getEnabledSelector:     #hasBranchSelection
    updateMap:  nil
    disabledColor:  Color transparent
    disabledTextColor:  (Color r: 0.345 g: 0.431 b: 0.458)

--- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #mergeBasesWith: SquotWorkingCopy>>checkMergeBasesOf:with:ifNoCommonAncestor:ifAncestor:ifDescendant: SquotWorkingCopy>>checkMergeBasesOfHeadVersionWith:ifNoCommonAncestor:ifAncestor:ifDescendant: SquotWorkingCopy>>mergeVersionInteractively:ifCanceled: SquitBrowser>>mergeVersionIntoActiveBranch:ifCanceled: [] in [] in SquitBrowser>>actionPull FullBlockClosure(BlockClosure)>>on:do: [] in SquitBrowser>>actionPull [] in GitCurrentUnitOfWork class(DynamicVariable class)>>value:during: FullBlockClosure(BlockClosure)>>ensure: GitCurrentUnitOfWork class(DynamicVariable class)>>value:during: GitCurrentUnitOfWork class>>value:for:during: GitUnitOfWork>>activateDuring: SquitUnitOfWork>>activateDuring: [] in SquitBrowser>>withUnitOfWork: FullBlockClosure(BlockClosure)>>ensure: SquitBrowser>>withUnitOfWork: SquitBrowser>>actionPull PluggableButtonMorphPlus(PluggableButtonMorph)>>performAction


PluggableButtonMorphPlus>>performAction [] in PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp: Array(SequenceableCollection)>>do: PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp: PluggableButtonMorphPlus(Morph)>>handleMouseUp: MouseButtonEvent>>sentTo: PluggableButtonMorphPlus(Morph)>>handleEvent: PluggableButtonMorphPlus(Morph)>>handleFocusEvent: MorphicEventDispatcher>>doHandlingForFocusEvent:with: MorphicEventDispatcher>>dispatchFocusEvent:with: PluggableButtonMorphPlus(Morph)>>processFocusEvent:using: PluggableButtonMorphPlus(Morph)>>processFocusEvent: [] in [] in [] in HandMorph>>sendFocusEvent:to:clear: FullBlockClosure(BlockClosure)>>ensure: MouseButtonEvent(MorphicEvent)>>becomeActiveDuring: [] in [] in HandMorph>>sendFocusEvent:to:clear: FullBlockClosure(BlockClosure)>>ensure: HandMorph>>becomeActiveDuring: [] in HandMorph>>sendFocusEvent:to:clear: FullBlockClosure(BlockClosure)>>ensure: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [] in AnimWorldState(WorldState)>>doOneCycleNowFor: Array(SequenceableCollection)>>do: AnimWorldState(WorldState)>>handsDo: AnimWorldState(WorldState)>>doOneCycleNowFor: AnimWorldState(WorldState)>>doOneCycleFor: PasteUpMorph>>doOneCycle [] in AnimMorphicProject>>spawnNewProcess [] in FullBlockClosure(BlockClosure)>>newProcess

LinqLover commented 4 years ago

FYIO: I just encountered the problem again in a fresh Trunk image right after installing Squot from the docking bar.

j4yk commented 4 years ago

Yep, it's currently an expected bug. I assume you did indeed pull or clone an empty repository when you ran into the error...

LinqLover commented 4 years ago

No, the error occurred right after installing Squot from the docking bar, at the same time when I was asked whether I'd like to create my first repository. It's not an urgent problem for me, just wanted to inform you because you added the "check if solved" label :)

j4yk commented 4 years ago

Well, that is odd. What business does it have finding merge bases there? Can you post the stack trace please?

LinqLover commented 4 years ago

SqueakDebug.log

j4yk commented 4 years ago

That is a different code site. Will you please open a new ticket for that?

LinqLover commented 4 years ago

Oh, sorry, I misread the title of this issue. Please see #288!

j4yk commented 3 years ago

Pulling from an empty repository will currently first prompt for the remote branch name (because the virtual master branch does not have an upstream branch set) and on the second pull will report "Upstream branch 'refs/heads/master' does not exist.". So there is no error anymore.