【问题标题】:Metacello dependency on a package from github projectMetacello 对来自 github 项目的包的依赖
【发布时间】:2017-02-12 15:10:39
【问题描述】:

如何直接依赖 github repo 中的包? (假设项目没有基线,或者有理由不使用基线。)

我尝试了以下规格

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规范不假思索地抓住了第一个包。

【问题讨论】:

    标签: github pharo metacello


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 从行为上看,它更像是不完整的实现,因为它下载了正确的 repo,将其解压缩,然后才解体(主要是在本地文件树 repo 上)
    猜你喜欢
    • 2019-01-24
    • 2014-11-29
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多