Как определить ConfigurationOf с версией #development, которая зависит от базовой линии?

В Pharo я хочу определить ConfigurationOfNand2Tetris Metacello, который имеет только один пакет:

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 ]

person Damien Cassou    schedule 02.04.2013    source источник


Ответы (3)


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

Это должно избежать первого предупреждения. Думаю, пока у вас не вышла версия, можете смело игнорировать второе предупреждение.

person Tobias    schedule 02.04.2013

Обычно вы определяете свою базовую линию, а затем также метод #versionN::

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

  spec
    for: #common do: [ 
      spec
        blessing: #baseline;
        package: 'Nand2Tetris' with: 'Nand2Tetris-yourname.22'].
person Frank Shearar    schedule 02.04.2013
comment
благодарю вас. Проблема в том, что я создаю много mcz, и я не хочу постоянно обновлять номер версии. - person Damien Cassou; 02.04.2013
comment
Все в порядке: отметьте это как #development. Периодически обновляйте #version01: или игнорируйте предупреждения, пока не будете готовы выпустить новую версию. - person Frank Shearar; 02.04.2013

Я думаю, вы забыли реализовать:

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'.
person ClementBera    schedule 02.04.2013
comment
Спасибо, Клемент. Тем не менее, я не хочу указывать «номер версии», потому что в наши дни он сильно меняется :-) - person Damien Cassou; 02.04.2013
comment
@DamienCassou, если это так сильно изменится, вам определенно нужен #bleedingEdge - person Tobias; 02.04.2013