【问题标题】:How to update a git superproject that depends on submodule commit under gerrit review?如何在 gerrit 审查下更新依赖于子模块提交的 git 超级项目?
【发布时间】:2013-09-04 21:10:52
【问题描述】:

我们有一个 git 超级项目,它有一个子模块。该子模块正在接受 Gerrit 审查。

我们的问题是,虽然子模块中正在审查更改,(即使已在超级项目上提交了正在审查的提交的子模块链接)它们不能被其他开发人员通过“git submodule update”检索,除非他们特别获取子模块中的 refs/changes/*。

我明确指出,我们需要其他开发人员能够检查子模块中仍在审查中的代码。所以等待代码被合并并不是一个可行的选择。

有没有办法让开发人员通过 'git submodule update' 在子模块链接指向正在审查的提交的超级项目上获得正在审查的更改?

【问题讨论】:

    标签: git gerrit git-submodules


    【解决方案1】:

    除非他们专门在子模块中获取refs/changes/*,否则其他开发人员无法通过“git submodule update”检索它们。

    但这似乎是审查这些提交的常用方法。
    例如,EGit munual 部分“Fetching a change from a Gerrit Code Review Server”正是这样做的:

    这个wiki page详细介绍了这个过程:

    从 gerrit 合并补丁(请参阅 gerrit 中的下载部分)它应该是这样的:

    git fetch ssh://username@gerrit.tuleap.net:29418/tuleap refs/changes/52/52/8
    git merge --no-ff --no-commit --log FETCH_HEAD
    

    由于开发人员想要更新子模块(应该引用特定的提交),他/她可以:

    • 在该子模块中创建一个dev 分支,Gerrit 更改可以在其中合并
    • 不时更新同一个子模块,并将新的子模块 HEAD 与 dev 分支进行比较,可能会将 dev 分支重置为所述新更新的 HEAD。

    【讨论】:

      【解决方案2】:

      我认为这可以通过默认显式获取 changes 引用来解决:

      fetch = +refs/changes/*:refs/remotes/origin/changes/*
      

      或类似的。我不确定是否

      git pull --recurse-submodules=yes
      

      会正确拾取。

      【讨论】:

        猜你喜欢
        • 2019-07-20
        • 1970-01-01
        • 2016-12-18
        • 1970-01-01
        • 2015-03-10
        • 1970-01-01
        • 2014-08-31
        • 1970-01-01
        • 2017-06-18
        相关资源
        最近更新 更多