2013-04-02 16 views
6

W Pharo, chcę zdefiniować Metacello na ConfigurationOfNand2Tetris, który ma tylko jeden pakiet:Jak zdefiniować ConfigurationOf za pomocą # wersji rozwojowej, która zależy od linii bazowej?

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

Kiedy wykonać MetacelloToolBox validateConfiguration: ConfigurationOfNand2Tetris zawsze dostać 2 ostrzeżenia:

  • Warning: Symboliczna wersja #development odnosi się do version'0.1-baseline 'którego błogosławieństwo #baseline nie jest #development {notDevelopmentVersion} [#validateVersionSpecForSymbolicVersion: symbolicVersion:]
  • Ostrzeżenie: zdefiniowano tylko linię bazową (nie określono wersji). {OnlyBaselineVersion} [#validatePragmas]

Odpowiedz

6

Jeśli chcesz po prostu polegać na linii bazowej, metafora tego w Metacello to użyj błogosławieństwa #bleedingEdge. Ponadto, można jednoznacznie zaprzeczyć inne wersje symboliczne:

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

Chodzi o to, że #stable i #development wersje odwołują się do jawnie enumbered wersje, natomiast #bleedingEdge zawsze wskazuje na najnowszych wersjach.

Należy unikać pierwszego ostrzeżenia. Myślę, że dopóki nie wydałeś wersji, możesz spokojnie zignorować drugie ostrzeżenie.

3

Zazwyczaj będziesz zdefiniować bazową, a następnie również #versionN: metody:

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

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

dziękuję. Problem polega na tym, że tworzę wiele mcz i nie chcę aktualizować numeru wersji przez cały czas. –

+0

W porządku: oznacz go jako '# development'. Okresowo aktualizuj '# version01:' lub ignoruj ​​ostrzeżenia, aż będziesz gotowy do wydania nowej wersji. –

2

Chyba zapomniałeś wdrożenia:

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

wtedy należy zmienić:

ConfigurationOfNand2Tetris>>development: spec 

    <symbolicVersion: #development> 

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

Dziękuję Klemensowi. Nadal nie chcę określać "versionNumber", ponieważ obecnie bardzo się zmienia :-) –

+1

@DamienCassou, jeśli to się tak bardzo zmienia, to zdecydowanie potrzebujesz '# bleedingEdge' – Tobias