【问题标题】:How to define a ConfigurationOf with a #development version that depends on a baseline?如何使用依赖于基线的#development 版本定义 ConfigurationOf?
【发布时间】:2013-04-02 11:15:34
【问题描述】:

在 Pharo 中,我想定义一个 Metacello 的 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: ]​​i>
  • 警告:仅定义了基线(未定义版本)。 { onlyBaselineVersion } [ #validatePragmas ]​​i>

【问题讨论】:

    标签: smalltalk pharo squeak metacello


    【解决方案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'.
    

    这里的想法是#stable#development 版本链接到显式编号的版本,而#bleedingEdge 始终指向最新版本。

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

    【讨论】:

      【解决方案2】:

      通常你会定义你的基线,然后还有一个#versionN: 方法:

      ConfigurationOfNand2Tetris>>version01: spec
        <version: '0.1' imports: #('0.1-baseline')>
      
        spec
          for: #common do: [ 
            spec
              blessing: #baseline;
              package: 'Nand2Tetris' with: 'Nand2Tetris-yourname.22'].
      

      【讨论】:

      • 谢谢。问题是我创建了很多 mcz 并且我不想一直更新版本号。
      • 没关系:标记为#development。定期更新#version01:,或在准备好发布新版本之前忽略警告。
      【解决方案3】:

      我想你忘了实现:

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

      【讨论】:

      • 谢谢克莱门特。我仍然不想指定'versionNumber',因为这些天它发生了很大变化:-)
      • @DamienCassou 如果变化这么大,你肯定想要#bleedingEdge
      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 1970-01-01
      • 2019-12-25
      • 2020-10-21
      • 2017-04-14
      相关资源
      最近更新 更多