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

В Pharo я хочу определить метацелло ConfigurationOfNand2Tetris это только один пакет:

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 ]

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 всегда указывает на последние версии.

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

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

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

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

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

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'.
Другие вопросы по тегам