Metacello 对来自 github 项目的包的依赖

Metacello dependency on a package from github project

如何直接依赖 github 存储库中的包? (假设项目没有基线,或者有不使用基线的原因。)

我试过以下规范

spec
    package: 'Magritte-XMLBinding'
    with: [ spec
        repository: 'github://magritte-metamodel/XML-Bindings:master/repository' ].

但是它失败了(无法解析:Magritte-XMLBinding [Magritte-XMLBinding.package]),在回购协议下的 Monticello 浏览器中我只看到 Magritte-Tests-XMLBinding.

更重要的是,当我查看解压的 repo(在 github-cache/ 中)时,只有 Magritte-Tests-XMLBinding 被解压。

解压出来的Tests包是字母顺序排在第一位的,感觉Metacello spec不假思索就抢了第一个包

当使用 git(和 github)时,你不能依赖包,而是依赖于完整的项目。但是,您可以依赖于一个项目,但只加载该项目的一个包。 通常这个定义应该有效:

spec
    baseline: 'XMLBindings'
    with: [ 
       spec
          repository: 'github://magritte-metamodel/XML-Bindings:master/repository';
          loads: #('Magritte-XMLBinding') ].

然而,虽然这个答案大体上是正确的,但在这种情况下它不起作用因为项目的作者没有包含任何baseline定义将允许这种依赖性定义起作用,这表明我他只是将该项目用作真实项目的镜像......所以这里你有三种可能的解决方案:

  1. 向带有基线的作者发送拉取请求
  2. 联系项目作者并要求添加基线
  3. 使用原始源而不是 github 镜像