hpi-swa / Squot

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

Error using self-updater #285

Closed LinqLover closed 3 years ago

LinqLover commented 4 years ago

MetacelloConflictingProjectError: Load Conflict between existing BaselineOfFileSystem [baseline] from github://j4yk/Squeak-FileSystem:master/src and BaselineOfFileSystem [baseline] from github://squeak-smalltalk/squeak-filesystem:master/src

How could this happen and what am I supposed to resolve this issue? :-)

Edit: Probably related to Metacello/metacello#263? The method in which the exception is raised refers to that issue.

j4yk commented 4 years ago

The problem is because of the move of the filesystem repository to the squeak-smalltalk organization.

Let me check whether I find the image that contains the resolving do it...

Basically you can tell Metacello to resolve conflicts by loading the new source.

j4yk commented 4 years ago

This I used to update Metacello which had a conflicting STON suddenly:

Metacello new
        baseline: 'Metacello';
        repository: 'github://Metacello/metacello:master/repository';
        onConflictUseIncoming;
        get;
        load: #('default' 'Metacello-Help').!

Does that help?

LinqLover commented 4 years ago

Sorry for the late reply. Hm ... unfortunately not. When loading this, I get an UndefinedObject Error from `MCFileTreeStCypressReader >> #addClassAndMethodsDefinitionsFromEntry:

25 September 2020 3:36:55.346426 pm

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

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir C:\Users\Christoph\OneDrive\Dokumente\Squeak
Trusted Dir C:\Users\Christoph\OneDrive\Dokumente\Squeak\Christoph
Untrusted Dir C:\Users\Christoph\OneDrive\Dokumente\My Squeak

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

MCFileTreeStCypressReader >> #addClassAndMethodDefinitionsFromEntry:
    Receiver: a MCFileTreeStCypressReader
    Arguments and temporary variables: 
        classEntry:     a DirectoryEntryDirectory MetacelloToolBox.class
        classDirectory:     DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Sque...etc...
        entries:    {a DirectoryEntryDirectory class . a DirectoryEntryDirectory instance}...etc...
        propertyEntry:  nil
        commentEntry:   nil
        classPropertiesDict:    {nil . nil . a Dictionary()}
        classComment:   a MCFileTreeStCypressReader
        methodPropertiesDict:   nil
    Receiver's instance variables: 
        stream:     DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\githu...etc...
        package:    a MCPackage(Metacello-ToolBox)
        info:   a MCVersionInfo(Metacello-ToolBox-cypress.1)
        definitions:    an OrderedCollection()
        dependencies:   nil
        stepChildren:   nil
        zip:    nil
        infoCache:  nil
        packageDirectory:   DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Sq...etc...
        packageProperties:  nil

[] in MCFileTreeStCypressReader >> #addClassAndMethodDefinitionsFromDirectory:
    Receiver: a MCFileTreeStCypressReader
    Arguments and temporary variables: 
<<error during printing>
    Receiver's instance variables: 
        stream:     DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\githu...etc...
        package:    a MCPackage(Metacello-ToolBox)
        info:   a MCVersionInfo(Metacello-ToolBox-cypress.1)
        definitions:    an OrderedCollection()
        dependencies:   nil
        stepChildren:   nil
        zip:    nil
        infoCache:  nil
        packageDirectory:   DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Sq...etc...
        packageProperties:  nil

Array (SequenceableCollection) >> #do:
    Receiver: {a DirectoryEntryDirectory MetacelloToolBox.class . a DirectoryEntryDirectory monticello.m...etc...
    Arguments and temporary variables: 
        aBlock:     [closure] in MCFileTreeStCypressReader >> #addClassAndMethodDefinitionsFromDirectory:...etc...
        index:  1
        indexLimiT:     2
    Receiver's instance variables: 
{a DirectoryEntryDirectory MetacelloToolBox.class . a DirectoryEntryDirectory monticello.m...etc...

MCFileTreeStCypressReader >> #addClassAndMethodDefinitionsFromDirectory:
    Receiver: a MCFileTreeStCypressReader
    Arguments and temporary variables: 
        aDirectory:     DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\g...etc...
    Receiver's instance variables: 
        stream:     DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\githu...etc...
        package:    a MCPackage(Metacello-ToolBox)
        info:   a MCVersionInfo(Metacello-ToolBox-cypress.1)
        definitions:    an OrderedCollection()
        dependencies:   nil
        stepChildren:   nil
        zip:    nil
        infoCache:  nil
        packageDirectory:   DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Sq...etc...
        packageProperties:  nil

MCFileTreeStCypressReader >> #loadDefinitions
    Receiver: a MCFileTreeStCypressReader
    Arguments and temporary variables: 
        entries:    #()
        directory:  DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\gi...etc...
    Receiver's instance variables: 
        stream:     DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\githu...etc...
        package:    a MCPackage(Metacello-ToolBox)
        info:   a MCVersionInfo(Metacello-ToolBox-cypress.1)
        definitions:    an OrderedCollection()
        dependencies:   nil
        stepChildren:   nil
        zip:    nil
        infoCache:  nil
        packageDirectory:   DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Sq...etc...
        packageProperties:  nil

MCFileTreeStCypressReader (MCVersionReader) >> #definitions
    Receiver: a MCFileTreeStCypressReader
    Arguments and temporary variables: 

    Receiver's instance variables: 
        stream:     DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\githu...etc...
        package:    a MCPackage(Metacello-ToolBox)
        info:   a MCVersionInfo(Metacello-ToolBox-cypress.1)
        definitions:    an OrderedCollection()
        dependencies:   nil
        stepChildren:   nil
        zip:    nil
        infoCache:  nil
        packageDirectory:   DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Sq...etc...
        packageProperties:  nil

MCFileTreeStCypressReader (MCVersionReader) >> #snapshot
    Receiver: a MCFileTreeStCypressReader
    Arguments and temporary variables: 

    Receiver's instance variables: 
        stream:     DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\githu...etc...
        package:    a MCPackage(Metacello-ToolBox)
        info:   a MCVersionInfo(Metacello-ToolBox-cypress.1)
        definitions:    an OrderedCollection()
        dependencies:   nil
        stepChildren:   nil
        zip:    nil
        infoCache:  nil
        packageDirectory:   DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Sq...etc...
        packageProperties:  nil

MCFileTreeStCypressReader >> #basicVersion
    Receiver: a MCFileTreeStCypressReader
    Arguments and temporary variables: 

    Receiver's instance variables: 
        stream:     DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\githu...etc...
        package:    a MCPackage(Metacello-ToolBox)
        info:   a MCVersionInfo(Metacello-ToolBox-cypress.1)
        definitions:    an OrderedCollection()
        dependencies:   nil
        stepChildren:   nil
        zip:    nil
        infoCache:  nil
        packageDirectory:   DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Sq...etc...
        packageProperties:  nil

MCFileTreeStCypressReader (MCVersionReader) >> #version
    Receiver: a MCFileTreeStCypressReader
    Arguments and temporary variables: 

    Receiver's instance variables: 
        stream:     DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\githu...etc...
        package:    a MCPackage(Metacello-ToolBox)
        info:   a MCVersionInfo(Metacello-ToolBox-cypress.1)
        definitions:    an OrderedCollection()
        dependencies:   nil
        stepChildren:   nil
        zip:    nil
        infoCache:  nil
        packageDirectory:   DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Sq...etc...
        packageProperties:  nil

[] in MCGitHubRepository (MCFileBasedRepository) >> #loadVersionFromFileNamed:
    Receiver: a MCGitHubRepository(github://Metacello/metacello:master/repository)
    Arguments and temporary variables: 
<<error during printing>
    Receiver's instance variables: 
        creationTemplate:   nil
        storeDiffs:     nil
        cache:  nil
        allFileNamesCache:  nil
        allVersionNamesCache:   nil
        directory:  DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\gi...etc...
        readonly:   true
        repositoryProperties:   a Dictionary('packageExtension'->'.package' )
        versionNameToFileNameMap:   a Dictionary('BaselineOfMetacello-tobe.102'->'Baselin...etc...
        cacheInvalidationFlag:  nil
        projectPath:    'Metacello/metacello'
        projectVersion:     'master'
        repoPath:   'repository'
        projectVersionPattern:  nil

[] in MCGitHubRepository (MCFileBasedRepository) >> #versionReaderForFileNamed:do:
    Receiver: a MCGitHubRepository(github://Metacello/metacello:master/repository)
    Arguments and temporary variables: 
        aString:    DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\gith...etc...
        aBlock:     'Metacello-ToolBox.package'
        s:  [closure] in MCGitHubRepository (MCFileBasedRepository) >> #loadVersionFromFileNamed:...etc...
        class:  MCFileTreeStCypressReader
    Receiver's instance variables: 
        creationTemplate:   nil
        storeDiffs:     nil
        cache:  nil
        allFileNamesCache:  nil
        allVersionNamesCache:   nil
        directory:  DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\gi...etc...
        readonly:   true
        repositoryProperties:   a Dictionary('packageExtension'->'.package' )
        versionNameToFileNameMap:   a Dictionary('BaselineOfMetacello-tobe.102'->'Baselin...etc...
        cacheInvalidationFlag:  nil
        projectPath:    'Metacello/metacello'
        projectVersion:     'master'
        repoPath:   'repository'
        projectVersionPattern:  nil

MCGitHubRepository (MCFileTreeRepository) >> #readStreamForFileNamed:do:
    Receiver: a MCGitHubRepository(github://Metacello/metacello:master/repository)
    Arguments and temporary variables: 
        aString:    'Metacello-ToolBox.package'
        aBlock:     [closure] in MCGitHubRepository (MCFileBasedRepository) >> #versionReaderForFileNamed:do:...etc...
    Receiver's instance variables: 
        creationTemplate:   nil
        storeDiffs:     nil
        cache:  nil
        allFileNamesCache:  nil
        allVersionNamesCache:   nil
        directory:  DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\gi...etc...
        readonly:   true
        repositoryProperties:   a Dictionary('packageExtension'->'.package' )
        versionNameToFileNameMap:   a Dictionary('BaselineOfMetacello-tobe.102'->'Baselin...etc...
        cacheInvalidationFlag:  nil
        projectPath:    'Metacello/metacello'
        projectVersion:     'master'
        repoPath:   'repository'
        projectVersionPattern:  nil

MCGitHubRepository (MCFileBasedRepository) >> #versionReaderForFileNamed:do:
    Receiver: a MCGitHubRepository(github://Metacello/metacello:master/repository)
    Arguments and temporary variables: 
        aString:    'Metacello-ToolBox.package'
        aBlock:     [closure] in MCGitHubRepository (MCFileBasedRepository) >> #loadVersionFromFileNamed:...etc...
    Receiver's instance variables: 
        creationTemplate:   nil
        storeDiffs:     nil
        cache:  nil
        allFileNamesCache:  nil
        allVersionNamesCache:   nil
        directory:  DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\gi...etc...
        readonly:   true
        repositoryProperties:   a Dictionary('packageExtension'->'.package' )
        versionNameToFileNameMap:   a Dictionary('BaselineOfMetacello-tobe.102'->'Baselin...etc...
        cacheInvalidationFlag:  nil
        projectPath:    'Metacello/metacello'
        projectVersion:     'master'
        repoPath:   'repository'
        projectVersionPattern:  nil

MCGitHubRepository (MCFileBasedRepository) >> #loadVersionFromFileNamed:
    Receiver: a MCGitHubRepository(github://Metacello/metacello:master/repository)
    Arguments and temporary variables: 
        aString:    'Metacello-ToolBox.package'
    Receiver's instance variables: 
        creationTemplate:   nil
        storeDiffs:     nil
        cache:  nil
        allFileNamesCache:  nil
        allVersionNamesCache:   nil
        directory:  DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\gi...etc...
        readonly:   true
        repositoryProperties:   a Dictionary('packageExtension'->'.package' )
        versionNameToFileNameMap:   a Dictionary('BaselineOfMetacello-tobe.102'->'Baselin...etc...
        cacheInvalidationFlag:  nil
        projectPath:    'Metacello/metacello'
        projectVersion:     'master'
        repoPath:   'repository'
        projectVersionPattern:  nil

[] in MCGitHubRepository (MCFileTreeRepository) >> #goferVersionFrom:
    Receiver: a MCGitHubRepository(github://Metacello/metacello:master/repository)
    Arguments and temporary variables: 
        aVersionReference:  DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\S...etc...
        packageDirectory:   a MetacelloCachingGoferResolvedReference name: 'Metacello-Too...etc...
    Receiver's instance variables: 
        creationTemplate:   nil
        storeDiffs:     nil
        cache:  nil
        allFileNamesCache:  nil
        allVersionNamesCache:   nil
        directory:  DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\gi...etc...
        readonly:   true
        repositoryProperties:   a Dictionary('packageExtension'->'.package' )
        versionNameToFileNameMap:   a Dictionary('BaselineOfMetacello-tobe.102'->'Baselin...etc...
        cacheInvalidationFlag:  nil
        projectPath:    'Metacello/metacello'
        projectVersion:     'master'
        repoPath:   'repository'
        projectVersionPattern:  nil

Array (SequenceableCollection) >> #collect:
    Receiver: {DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\github-cache\Metacello#...etc...
    Arguments and temporary variables: 
        aBlock:     [closure] in MCGitHubRepository (MCFileTreeRepository) >> #goferVersionFrom:...etc...
        newCollection:  #(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ni...etc...
        index:  40
        indexLimiT:     41
    Receiver's instance variables: 
{DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\github-cache\Metacello#...etc...

MCGitHubRepository (MCFileTreeRepository) >> #goferVersionFrom:
    Receiver: a MCGitHubRepository(github://Metacello/metacello:master/repository)
    Arguments and temporary variables: 
        aVersionReference:  a MetacelloCachingGoferResolvedReference name: 'Metacello-To...etc...
    Receiver's instance variables: 
        creationTemplate:   nil
        storeDiffs:     nil
        cache:  nil
        allFileNamesCache:  nil
        allVersionNamesCache:   nil
        directory:  DosFileDirectory on 'C:\Users\Christoph\OneDrive\Dokumente\Squeak\gi...etc...
        readonly:   true
        repositoryProperties:   a Dictionary('packageExtension'->'.package' )
        versionNameToFileNameMap:   a Dictionary('BaselineOfMetacello-tobe.102'->'Baselin...etc...
        cacheInvalidationFlag:  nil
        projectPath:    'Metacello/metacello'
        projectVersion:     'master'
        repoPath:   'repository'
        projectVersionPattern:  nil

MetacelloCachingGoferResolvedReference (GoferResolvedReference) >> #version
    Receiver: a MetacelloCachingGoferResolvedReference name: 'Metacello-ToolBox-cypress.1'
    Arguments and temporary variables: 

    Receiver's instance variables: 
        name:   'Metacello-ToolBox-cypress.1'
        package:    'Metacello-ToolBox'
        author:     'cypress'
        branch:     ''
        versionNumber:  1
        repository:     a MCGitHubRepository(github://Metacello/metacello:master/repository...etc...
        cachedVersion:  nil

--- The full stack ---
UndefinedObject (Object) >> #doesNotUnderstand: #withSqueakLineEndings
MCFileTreeStCypressReader >> #addClassAndMethodDefinitionsFromEntry:
[] in MCFileTreeStCypressReader >> #addClassAndMethodDefinitionsFromDirectory:
Array (SequenceableCollection) >> #do:
MCFileTreeStCypressReader >> #addClassAndMethodDefinitionsFromDirectory:
MCFileTreeStCypressReader >> #loadDefinitions
MCFileTreeStCypressReader (MCVersionReader) >> #definitions
MCFileTreeStCypressReader (MCVersionReader) >> #snapshot
MCFileTreeStCypressReader >> #basicVersion
MCFileTreeStCypressReader (MCVersionReader) >> #version
[] in MCGitHubRepository (MCFileBasedRepository) >> #loadVersionFromFileNamed:
[] in MCGitHubRepository (MCFileBasedRepository) >> #versionReaderForFileNamed:do:
MCGitHubRepository (MCFileTreeRepository) >> #readStreamForFileNamed:do:
MCGitHubRepository (MCFileBasedRepository) >> #versionReaderForFileNamed:do:
MCGitHubRepository (MCFileBasedRepository) >> #loadVersionFromFileNamed:
[] in MCGitHubRepository (MCFileTreeRepository) >> #goferVersionFrom:
Array (SequenceableCollection) >> #collect:
MCGitHubRepository (MCFileTreeRepository) >> #goferVersionFrom:
MetacelloCachingGoferResolvedReference (GoferResolvedReference) >> #version
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MetacelloCachingGoferResolvedReference >> #version
[] in [] in MetacelloFetchingMCSpecLoader >> #resolveDependencies:nearest:into:
OrderedCollection >> #do:
[] in MetacelloFetchingMCSpecLoader >> #resolveDependencies:nearest:into:
FullBlockClosure (BlockClosure) >> #on:do:
MetacelloFetchingMCSpecLoader >> #resolveDependencies:nearest:into:
[] in MetacelloFetchingMCSpecLoader >> #linearLoadPackageSpec:gofer:
[] in MetacelloSqueakPlatform >> #do:displaying:
[] 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:
Context >> #handleSignal:
Context >> #handleSignal:
Context >> #handleSignal:
Context >> #handleSignal:
Context >> #handleSignal:
Context >> #handleSignal:
Context >> #handleSignal:
Context >> #handleSignal:
ProgressInitiationException (Exception) >> #signal
ProgressInitiationException >> #display:at:from:to:during:
ProgressInitiationException class >> #display:at:from:to:during:
ByteString (String) >> #displayProgressAt:from:to:during:
MetacelloSqueakPlatform >> #do:displaying:
MetacelloFetchingMCSpecLoader >> #linearLoadPackageSpec:gofer:
MetacelloPackageSpec >> #loadUsing:gofer:
[] in MetacelloFetchingMCSpecLoader (MetacelloCommonMCSpecLoader) >> #linearLoadPackageSpecs:repositories:
OrderedCollection >> #do:
MetacelloFetchingMCSpecLoader (MetacelloCommonMCSpecLoader) >> #linearLoadPackageSpecs:repositories:
[] in MetacelloFetchingMCSpecLoader >> #linearLoadPackageSpecs:repositories:
FullBlockClosure (BlockClosure) >> #ensure:
MetacelloLoaderPolicy >> #pushLoadDirective:during:
MetacelloLoaderPolicy >> #pushLinearLoadDirectivesDuring:for:
MetacelloFetchingMCSpecLoader >> #linearLoadPackageSpecs:repositories:
MetacelloFetchingMCSpecLoader (MetacelloCommonMCSpecLoader) >> #load
MetacelloMCVersionSpecLoader >> #load
-- and more not shown --

What's the easiest way to reinstall Metacello from scratch? Can I simply unload it via Monticello or would this be a stupid idea? :-)

j4yk commented 4 years ago

Does this help?

EDIT: sorry I already posted something similar before. Didn't remember. :-D

j4yk commented 4 years ago

If you save your image before you unload it via Monticello, what can you break?

LinqLover commented 4 years ago

FYI, I just found out that the self-updater did not work as expected because I added my fork of Squot as the remote "origin". The self-updater has hardcoded this remote name so it tried to use Metacello instead. On it ...

LinqLover commented 4 years ago

New update, sorry for spamming: After cleaning up my working copy, I wanted to try https://github.com/hpi-swa/Squot/issues/285#issuecomment-692223340 again but Metacello is still broken at the moment due to http://forum.world.st/Metacello-broken-again-tp5121133p5122740.html.

I tried using the self-updater again, this time with the correct origin remote, I resolved all conflicts to use the remote version and confirmed all the warning messages from #258. After updating my image, my non-master branch kept being selected as the active branch, so I selected the master branch and said "switch to here and keep unsaved changes". Now my image has hang up with a filein cursor and a "MessageNotUnderstood: SquotObjectPatcher >> #nameOf:ifAbsent:" raised from SquotMutableObjectGraph >>#applyDiff:toStartObjectWith:, so I cannot switch the branch.

Just mentioning all these errors in case you immediately know the reason for one of them. Otherwise, I will simply not update Squot again before Metacello is repaired ... 😅

j4yk commented 4 years ago

Try to rename your "project" of Squot such that it does not have Squot in the name. That's what the self-updater looks for.

Switching of Squot itself is unfortunately tricky because loading the other branch might break the code that is on the stack at this moment. From which commit to which commit are you trying to go?

But you wrote "After updating my image", does that mean you already have updated Squot? And you just need to update that active branch pointer to tell the truth? Then right-click on the true branch and choose "Make this the current version".

j4yk commented 3 years ago

@LinqLover Should we still change anything here? The only thing that comes to my mind is removing the check whether one has a working copy of Squot and instead always load with Metacello.

LinqLover commented 3 years ago

The only thing that comes to my mind is removing the check whether one has a working copy of Squot and instead always load with Metacello.

IIUC, this would make it even harder to resolve merge conflicts with your working copy? I would rather propose to offer to automatically clone Squot if not already done - but this is only a vague idea ...

j4yk commented 3 years ago

I think if you have made modifications to Squot, you should not use the update anyway. Instead, fetch or pull from the Squot repository like with any other project.

If Squot is not already cloned, one also does not have a working copy of it that could have conflicts. And if it is not even loaded, there is no self-update button either. I do not think that an update should ever clone a repository for you.

LinqLover commented 3 years ago

If Squot is not already cloned, one also does not have a working copy of it that could have conflicts.

Disagreed. :-) Of course, not a working copy in the technical version, but I very often make some quick changes to arbitrary packages in my image (that were loaded using Metacello) and only later clone them via Squit if I need to contribute the changes back. This also applies to Squot itself. With this workflow, the self-updater currently would remove the changes in my image, wouldn't it?

I do not think that an update should ever clone a repository for you.

Not automatically, of course, but hypothetically, one could offer to the user to do so, optionally.

j4yk commented 3 years ago

With this workflow, the self-updater currently would remove the changes in my image, wouldn't it?

Yes that is correct.

Not automatically, of course, but hypothetically, one could offer to the user to do so, optionally.

But honestly I do not want to maintain code for such rare cases. ;-)

LinqLover commented 3 years ago

Agreed. :-)