2013-04-02 6 views
6

In Pharo, ich will ein Metacello des ConfigurationOfNand2Tetris definieren, die nur ein Paket hat:Wie definiere ich eine ConfigurationOf mit einer #Entwicklungsversion, die von einer Baseline abhängt?

ConfigurationOfNand2Tetris>>baseline01: spec 
    <version: '0.1-baseline'> 

    spec 
    for: #common 
    do: [ 
     spec 
     blessing: #baseline; 
     repository: 'http://www.smalltalkhub.com/mc/DamienCassou/Nand2Tetris/main'; 
     package: 'Nand2Tetris' ] 

ConfigurationOfNand2Tetris>>development: spec 
    <symbolicVersion: #development> 

    spec for: #common version: '0.1-baseline'. 

Wenn ich MetacelloToolBox validateConfiguration: ConfigurationOfNand2Tetris ausführen bekomme ich immer 2 Warnungen:

  • Warnung: Symbolische Version #development auf eine bezieht sich Version '0.1-Baseline ', deren Segen #baseline nicht #development {notDevelopmentVersion} [#validateVersionSpecForSymbolicVersion: symbolicVersion:]
  • Warnung: Nur Baseline definiert (keine Version definiert). {OnlyBaselineVersion} [#validatePragmas]

Antwort

6

Wenn Sie nur auf eine Grundlinie angewiesen sind, ist die Metapher dafür in Metacello zu Verwenden Sie die #bleedingEdge Segen. Sie können aber auch explizit andere symbolische Versionen verweigern:

ConfigurationOfNand2Tetris>>baseline01: spec 
    <version: '0.1-baseline'> 

    spec 
    for: #common 
    do: [ 
     spec 
     blessing: #baseline; 
     repository: 'http://www.smalltalkhub.com/mc/DamienCassou/Nand2Tetris/main'; 
     package: 'Nand2Tetris' ] 

ConfigurationOfNand2Tetris>>bleedingEdge: spec 
    <symbolicVersion: #bleedingEdge> 
    spec for: #common version: '0.1-baseline'. 

ConfigurationOfNand2Tetris>>development: spec 
    <symbolicVersion: #'development'> 
    spec for: #'common' version: #'notDefined'. 

ConfigurationOfNand2Tetris>>stable: spec 
    <symbolicVersion: #'stable'> 
    spec for: #'common' version: #'notDefined'. 

Die Idee dabei ist, dass #stable und #development Versionen verlinken auf explizit Versionen enumbered, während #bleedingEdge immer auf die neuesten Versionen.

Dies sollte die erste Warnung vermeiden. Ich denke, solange Sie keine Version veröffentlicht haben, können Sie die zweite Warnung ignorieren.

3

Normalerweise werden Sie Ihre Baseline definieren und dann auch eine #versionN: Methode:

ConfigurationOfNand2Tetris>>version01: spec 
    <version: '0.1' imports: #('0.1-baseline')> 

    spec 
    for: #common do: [ 
     spec 
     blessing: #baseline; 
     package: 'Nand2Tetris' with: 'Nand2Tetris-yourname.22']. 
+0

danke. Das Problem ist, dass ich viele mcz erstelle und ich möchte die Versionsnummer nicht immer aktualisieren. –

+0

Das ist in Ordnung: Markieren Sie es als '# Entwicklung'. Aktualisieren Sie '# version01:' regelmäßig oder ignorieren Sie die Warnungen, bis Sie bereit sind, eine neue Version zu veröffentlichen. –

2

Ich denke, Sie zu implementieren vergessen: Sie

ConfigurationOfNand2Tetris>>version01: spec 

<version: '0.1' imports: #('0.1-baseline')> 

spec for: #'common' do: [ 
    spec blessing: #'development'. 
    spec description: 'some description'. 
    spec author: 'yourName'. 
    spec timestamp: '1/15/2013 16:13'. 
    spec 
     package: 'Nand2Tetris' with: 'Nand2Tetris-yourName.versionNumber'] 

Dann sollte sich ändern:

ConfigurationOfNand2Tetris>>development: spec 

    <symbolicVersion: #development> 

    spec for: #'common' version: '0.1'. 
+0

Danke Clement. Trotzdem möchte ich 'versionNumber' nicht angeben, da es sich in diesen Tagen stark ändert :-) –

+1

@DamienCassou Wenn es so viel ändert, willst du definitiv ein '# blendingEdge' – Tobias

Verwandte Themen