【问题标题】:Linking Issues of one git repository to commits of another repository将一个 git 存储库的问题链接到另一个存储库的提交
【发布时间】:2018-04-02 08:14:56
【问题描述】:

我有两个项目“项目-A”和“项目-B”。问题在“项目-A”中报告,但实际开发在“项目-B”中进行。

在每个提交评论中引用“project-A”是一项挑战。我正在探索一个更好的选择,将“project-A”的问题链接到“project-B”的代码提交。一个简单的问题是,如果开发人员在 'project-B' 中提交了注释“#23 fixed”,它应该在 'project-A' 的相关问题评论历史记录中可见。

【问题讨论】:

  • 您是指 project-A 和 project-B 是相同 repo 的分支还是具有相同内容的不同 repo 的分支?
  • 不,它们是完全不同的存储库,但在同一个组织中

标签: git github repository


【解决方案1】:

1.转换 git 提交消息:

从您的工作区

$ cd myrepo
$ vi .git/hooks/commit-msg

请注意,这是一个客户端挂钩。现在添加以下内容

#!/bin/sh
projecta_issues_link="https:\/\/github.com\/git\/git\/issues\/"

message=`cat $1 | sed "s/projecta/${projecta_issues_link}/g"`
echo ${message} > $1
exit 0

然后对任何文件进行更改,并使用以下消息提交:

git commit -m "This fixes projecta#1234"

您的提交消息现在应该转换为链接。

2。在所有存储库上应用客户端挂钩:

here 有一个写得很好的答案。

【讨论】:

    【解决方案2】:

    当项目开始时,我们设置了 repo project-A 并将其传达给客户端。

    但后来由于一些问题,我们不得不创建另一个 repo 项目-B,一段时间后我们意识到客户正在使用项目-A 存储库来记录问题。
    我们不想要求客户更改回购协议

    Thant 意味着 project-A 可以引用 project-B 作为子模块。
    不是为了project-B 源,而是为了能够将project-B 主SHA1 的状态记录为project-A 存储库中的提交。
    并且该提交的评论(在父仓库project-A 中)可以自动成为project-B 的最后一次提交之一。

    因此,如果开发人员在project-B 中进行了新的提交“Fix#123”,project-A 可以自动记录新的提交,最新的project-Btracking a branch:git submodule update --remote),与作为评论 project-B: "Fix#123" 的最后一次提交的评论。

    【讨论】:

      【解决方案3】:

      不,它们都是完全不同的存储库,但在 同一组织

      似乎唯一的方法是创建一个 github 机器人或围绕现有 CI 进行调整,例如 travis,并关闭其他存储库上的问题,如果它们在您当前的提交中关闭。

      【讨论】:

        【解决方案4】:

        我不知道有任何方法可以交叉引用项目以按照您描述的方式反映提交:

        将“项目-A”的问题链接到“项目-B”代码提交。

        我会说显而易见的:

        • 所描述的是维护发布分支“project-A”
        • 还有一个开发分支为“project-B”

        尽管 perforce 不是 git,但我发现 "perforce best practices" 论文是对如何保持发布和开发分支健全性的最佳描述。直接转到第 4 页并从那里开始阅读。

        当您修复在发布分支上维护的面向客户的“项目-A”中的错误时,请按照参考文档中的说明将这些更改合并到 master。

        我不太赞成"git flow",但我不妨提一下。

        底线:你不能从这里到达那里。据我所知,在我曾经使用过的任何源代码控制范围内(subversion、ClearCase、perforce、git),都没有解决您的问题的方法。

        由于您面向客户的项目 A 具有优先权(基于我对其他 cmets 的阅读),因此您需要将项目 B 带入项目 A 的存储库中。

        这将构成它自己的挑战,基于此,使用 git-flow 可能会满足您的需求,因为您会将 project-B 作为开发分支引入。

        这样做的难度取决于:

        1. 这两个项目之间的差异有多大。
        2. 您对 git 本身的熟悉程度。

        但是,您越早解决问题,就越早为您的团队消除主要痛点。

        【讨论】:

          【解决方案5】:

          您可以通过写出完整的 GitHub URL 链接到不同存储库中的提交或问题。 GitHub在显示时会适当缩短。

          这适用于整个 GitHub UI,包括提交消息。

          【讨论】:

          • 写出完整的 URL 是什么意思?你能解释一下吗?
          • 好的,在每个提交/问题中添加这一点都具有挑战性。我们每天都有很多问题和很多提交。我正在寻找更好的选择。
          • 也许这表明您的工作流程或项目结构可以被修改以降低复杂性?
          • 项目开始时,我们设置了 repo project-A 并将其传达给客户端。但后来由于一些问题,我们不得不创建另一个 repo 项目-B,一段时间后我们意识到客户正在使用项目-A repo 来记录问题。我们不想要求客户更改存储库,我现在的任务是寻找一种方法来链接它们!!
          【解决方案6】:

          您可以直接提交问题地址。

          git commit -m "This fixes https://github.com/auser/projecta/issues/1234"
          

          【讨论】:

            猜你喜欢
            • 2015-09-14
            • 2016-09-25
            • 2023-04-06
            • 2020-10-25
            • 2016-07-14
            • 1970-01-01
            • 2011-05-21
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多