2013-04-02 7 views
6

В Pharo, я хочу, чтобы определить Metacello-х ConfigurationOfNand2Tetris, который имеет только один пакет:Как определить ConfigurationOf с версией #development, которая зависит от базовой линии?

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 относится к version'0.1-baseline ', чье благословение #baseline не #development {notDevelopmentVersion} [#validateVersionSpecForSymbolicVersion: symbolicVersion:]
  • Предупреждение: Определяется только базовая линия (не определена версия). {OnlyBaselineVersion} [#validatePragmas]

ответ

6

Если вы хотите просто зависеть от базовой линии, метафора для метацеллов должна быть использовать благословение #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

Спасибо, Климент. Тем не менее я не хочу указывать «versionNumber», потому что в эти дни он сильно меняется :-) –

+1

@DamienCassou, если он так сильно изменится, вам определенно нужно '# bleedingEdge' – Tobias