Smalltalk 如何使用依赖于基线的#开发版本定义ConfigurationOf?

Smalltalk 如何使用依赖于基线的#开发版本定义ConfigurationOf?,smalltalk,pharo,squeak,metacello,Smalltalk,Pharo,Squeak,Metacello,在Pharo中,我想定义一个Metacello的ConfigurationOfAnd2Testis,它只有一个包: ConfigurationOfNand2Tetris>>baseline01: spec <version: '0.1-baseline'> spec for: #common do: [ spec blessing: #baseline; repository: 'http://www

在Pharo中,我想定义一个Metacello的
ConfigurationOfAnd2Testis
,它只有一个包:

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'.
ConfigurationOfAnd2Testis>>基线01:spec
规格
适用于:#普通
do:[
规格
祝福:#基线;
存储库:'http://www.smalltalkhub.com/mc/DamienCassou/Nand2Tetris/main';
软件包:“NAND2TTERIS”]
And2Testis的配置>>开发:规范
规格:#通用版本:“0.1-baseline”。
当我执行
MetacelloToolBox validateConfiguration:ConfigurationOfAnd2Testis
时,我总是收到两条警告:

  • 警告:符号版本#开发是指版本“0.1-baseline”,其祝福#基线不是#开发{notDevelopmentVersion}[#validateVersionSpecForSymbolicVersion:symbolicVersion:]
  • 警告:仅定义了基线(未定义版本)。{onlyBaselineVersion}[#validatePragmas]

通常,您将定义基线,然后定义
\versionN:
方法:

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

  spec
    for: #common do: [ 
      spec
        blessing: #baseline;
        package: 'Nand2Tetris' with: 'Nand2Tetris-yourname.22'].
configurationofnand2testis>>版本01:spec
规格
for:#常用do:[
规格
祝福:#基线;
软件包:'NAND2TTERIS'带有:'NAND2TTERIS 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']
configurationofnand2testis>>版本01:spec
规格:#“普通”do:[
规格祝福:#“发展”。
规格说明:“一些说明”。
规范作者:“你的名字”。
规格时间戳:“1/15/2013 16:13”。
规格
软件包:“NAND2TTERIS”带有:“NAND2TTERIS yourName.versionNumber”]
那么你应该改变:

ConfigurationOfNand2Tetris>>development: spec

  <symbolicVersion: #development>

  spec for: #'common' version: '0.1'.
ConfigurationOfNand2Tetris>>开发:规范
规格为:#“通用”版本:“0.1”。

如果你只想依赖一个基线,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'.
ConfigurationOfAnd2Testis>>基线01:spec
规格
适用于:#普通
do:[
规格
祝福:#基线;
存储库:'http://www.smalltalkhub.com/mc/DamienCassou/Nand2Tetris/main';
软件包:“NAND2TTERIS”]
Nand2Metris的配置>>出血边缘:规范
规格:#通用版本:“0.1-baseline”。
And2Testis的配置>>开发:规范
规格:#“通用”版本:#“未定义”。
And2Testis的配置>>稳定:规范
规格:#“通用”版本:#“未定义”。
这里的想法是,
#stable
#development
版本链接到明确列举的版本,而
#bleedingEdge
总是指向最新版本


这应该避免第一次警告。我认为,只要您没有发布版本,您就可以放心地忽略第二个警告。

谢谢。问题是我正在创建许多mcz,我不想一直更新版本号。这很好:将其标记为
#development
。定期更新
#version01:
,或忽略警告,直到您准备发布新版本。谢谢您。不过我还是不想指定'versionNumber',因为这几天它变化很大:-)@daminciansou如果它变化那么大,你肯定会想要一个
#bleedingEdge