2013-04-02 29 views
6

在菲羅,我希望定義只有一個包Metacello的ConfigurationOfNand2Tetris如何使用依賴於基線的#development版本定義ConfigurationOf?

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

當我執行MetacelloToolBox validateConfiguration: ConfigurationOfNand2Tetris我總是得到2個警告:

  • 警告:符號版本#development指版本'0.1-baseline',其祝福#baseline不是#development {notDevelopmentVersion} [#validateVersionSpecForSymbolicVersion:symbolicVersion:]
  • 警告:只有基準定義(沒有版本定義)。 {} onlyBaselineVersion [#validatePragmas]

回答

6

如果你想僅僅依賴於一個基準線,那麼在Metacello的比喻就是 使用#bleedingEdge的祝福。另外,還可以明確地拒絕其他象徵性的版本:

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

的這裏的想法是,#stable#development版本鏈接到明確地enumbered版本,而#bleedingEdge總是指向最新版本。

這應該避免第一個警告。我認爲,只要你還沒有發佈一個版本,你可以放心地忽略第二個警告。

3

通常你定義你的基線,然後又一個#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

謝謝。問題是我創建了很多mcz,我不想一直更新版本號。 –

+0

這很好:將它標記爲'#development'。定期更新'#version01:',或者在準備發佈新版本之前忽略警告。 –

2

我想你忘了執行:

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

然後你應改變:

ConfigurationOfNand2Tetris>>development: spec 

    <symbolicVersion: #development> 

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

謝謝Clement。我仍然不想指定'versionNumber',因爲它現在變化很大:-) –

+1

@DamienCassou如果它改變那麼多,你絕對需要一個'#bleedingEdge' – Tobias

相關問題