2013-04-02 19 views
6

In Pharo, voglio definire un Metacello ConfigurationOfNand2Tetris che ha un solo pacchetto:Come definire un ConfigurationOf con una versione #development che dipende da una baseline?

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'. 

Quando eseguo MetacelloToolBox validateConfiguration: ConfigurationOfNand2Tetris Ho sempre trovato 2 avvertimenti:

  • Attenzione: la versione simbolica #development si riferisce ad un version'0.1-baseline 'la cui benedizione #baseline non è #development {notDevelopmentVersion} [#validateVersionSpecForSymbolicVersion: symbolicVersion:]
  • Avvertenza: solo la baseline definita (nessuna versione definita). {} OnlyBaselineVersion [#validatePragmas]

risposta

6

Se si vuole solo dipendere da una linea di base, la metafora di quello in Metacello è di utilizzare la benedizione #bleedingEdge. Inoltre, si può negare esplicitamente altre versioni simbolici:

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'. 

L'idea qui è che #stable e #development versioni dei collegamenti a versioni enumbered esplicitamente, mentre #bleedingEdge punta sempre le ultime versioni.

Questo dovrebbe evitare il primo avviso. Penso che, finché non hai rilasciato una versione, puoi tranquillamente ignorare il secondo avviso.

3

Di solito ti definire la linea di base e quindi anche un metodo #versionN::

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

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

grazie. Il problema è che sto creando molti mcz e non voglio aggiornare il numero di versione tutte le volte. –

+0

Va bene: contrassegnalo come '# sviluppo'. Aggiorna periodicamente '# version01:', o ignora gli avvertimenti finché non sei pronto per rilasciare una nuova versione. –

2

Credo che ti sei dimenticato di implementare:

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'] 

Poi si dovrebbe cambiare:

ConfigurationOfNand2Tetris>>development: spec 

    <symbolicVersion: #development> 

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

Grazie mille Clemente. Ancora non voglio specificare 'versionNumber' perché cambia molto in questi giorni :-) –

+1

@DamienCassou se cambia così tanto, sicuramente vuoi un '# bleedingEdge' – Tobias