pharo-project / pharo

Pharo is a dynamic reflective pure object-oriented language supporting live programming inspired by Smalltalk.
http://pharo.org
Other
1.21k stars 355 forks source link

[Iceberg] Duplicated project with same name but not same character case #15033

Open labordep opened 1 year ago

labordep commented 1 year ago

Bug description Some projects can be duplicated in the Repositories view, for example Bloc :

image

This should appen when a project load Bloc with this script:

spec
   baseline: 'Bloc'
   with: [ spec repository: 'github://pharo-graphics/Bloc:dev-1.0/src' ].

And another project loaded Bloc with this script:

spec
   baseline: 'Bloc'
   with: [ spec repository: 'github://pharo-graphics/bloc:dev-1.0/src' ].

My config:

labordep commented 1 year ago

I have this problem in my project CI. https://github.com/labordep/M-Seven/actions/runs/6718115658/job/18257213471

MetacelloConflictingProjectError: Load Conflict between existing BaselineOfBloc [baseline] from github://pharo-graphics/Bloc:dev-1.0/src and BaselineOfBloc [baseline] from github://pharo-graphics/bloc:dev-1.0/src
MetacelloAllowConflictingProjectUpgrade>>defaultAction
UndefinedObject>>handleSignal:
Context>>handleSignal:
Context>>handleSignal:
Context>>handleSignal:
Context>>handleSignal:
Context>>handleSignal:
Context>>handleSignal:
Context>>handleSignal:
Context>>handleSignal:
Context>>handleSignal:
Context>>handleSignal:
MetacelloAllowConflictingProjectUpgrade(Exception)>>pass
[ ^ exception pass ] in MetacelloScriptEngine>>handleConflict: in Block: [ ^ exception pass ]
Dictionary>>at:ifAbsent:
MetacelloScriptEngine>>handleConflict:
MetacelloAllowConflictingProjectUpgrade>>handleResolutionFor:
[ :ex | 
      "option handlers need to be outermost set of handlers ... last line of defense before users are involved"
      ex handleResolutionFor: self ] in [ 
  [ 
  actionBlock
    on:
      MetacelloLookupProjectSpec , MetacelloLookupProjectSpecForLoad
        , MetacelloProjectSpecLoadedNotification
        , MetacelloScriptEnsureProjectLoadedForDevelopment
        , MetacelloLookupBaselineSpecForEnsureLoad
    do: [ :ex | 
      "lookup and registration handlers need to be innermost set of handlers ...they may throw option notifications"
      ex handleResolutionFor: self ] ]
    on:
      MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
        , MetacelloAllowConflictingProjectUpgrade
    do: [ :ex | 
      "option handlers need to be outermost set of handlers ... last line of defense before users are involved"
      ex handleResolutionFor: self ] ] in [ 
  [ 
  [ 
  actionBlock
    on:
      MetacelloLookupProjectSpec , MetacelloLookupProjectSpecForLoad
        , MetacelloProjectSpecLoadedNotification
        , MetacelloScriptEnsureProjectLoadedForDevelopment
        , MetacelloLookupBaselineSpecForEnsureLoad
    do: [ :ex | 
      "lookup and registration handlers need to be innermost set of handlers ...they may throw option notifications"
      ex handleResolutionFor: self ] ]
    on:
      MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
        , MetacelloAllowConflictingProjectUpgrade
    do: [ :ex | 
      "option handlers need to be outermost set of handlers ... last line of defense before users are involved"
      ex handleResolutionFor: self ] ]
    on: MetacelloAllowLockedProjectChange
    do: [ :ex | 
      "MetacelloAllowLockedProjectChange need to be outermost handler ... since it is signaled from second line of handlers"
      ex handleResolutionFor: self ] ] in MetacelloScriptEngine>>handleNotificationsForAction: in Block: [ :ex | ...
FullBlockClosure(BlockClosure)>>cull:
Context>>evaluateSignal:
Context>>handleSignal:
MetacelloAllowConflictingProjectUpgrade(Exception)>>signal
MetacelloScriptEngine>>resolvePresentProject:new:
[ :existing :new | self resolvePresentProject: existing new: new ] in MetacelloScriptEngine>>lookupProjectSpecFor: in Block: [ :existing :new | self resolvePresentProject:[..]
[ :existing | ^ presentBlock value: existing value: newRegistration ] in MetacelloProjectRegistration class>>registrationForProjectSpec:ifAbsent:ifPresent: in Block: [ :existing | ^ presentBlock value: existing v[..]
[ :existing | ^ presentBlock value: existing ] in MetacelloProjectRegistry>>registrationFor:ifPresent:ifAbsent: in Block: [ :existing | ^ presentBlock value: existing ]
FullBlockClosure(BlockClosure)>>cull:
Dictionary>>at:ifPresent:
MetacelloProjectRegistry>>registrationFor:ifPresent:ifAbsent:
MetacelloProjectRegistration class>>registrationForProjectSpec:ifAbsent:ifPresent:
3. using HTTPS instead SSH (Just use an url in the form https://etc.git)./ I will try to clone the HTTPS variant.

Error with status code 1:
667 run_script /home/runner/.smalltalkCI/helpers.sh

Error: Process completed with exit code 1.
labordep commented 1 year ago

image