-->

如何与典型的git的工作流程,bug跟踪/版本控制集成工作?(How does bug tracke

2019-07-19 19:28发布

下面的是git的工作流程的例子:

  • http://wiki.github.com/bard/sameplace/typical-git-workflow
  • http://www.nabble.com/Git-workflow-overview-td16340337.html
  • http://osteele.com/archives/2008/05/my-git-workflow

比方说,你想利用bug跟踪系统集成与您的版本控制系统。 凡/如何将这项适合这些工作流程。 你会实际上是在跟踪器看到了什么?

我BugTracker.NET笔者这就像许多其他bug跟踪系统(TRAC,管理平台,FogBugz的)与SVN集成。 我们都这样做或多或少以同样的方式。 但随着混帐,我有麻烦想象会是什么样用git的整合等。

编辑:我已经看到了在一个企图在github上,FogBugz的集成,但是,即使是作者说“这是相当明显的是,FogBugz的是一个更传统的CVS / SVN SCM系统记写成这样,提交列表。显示器不使用git真正合拍”。

EDIT2:关于线程管理平台/ git的工作流程 :看来,最典型的设置是管理平台的工作原理与任何被认为是“中央”资料库的本地副本,所以它看到的变化时,他们让这个克隆。 触发器或预定作业自动化推向管理平台的克隆。

EDIT3:似乎连Linux和莱纳斯,还有最终是可以被认为是仁慈的独裁者库主要的Git仓库:见http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6的.git; A =摘要

后记:谢谢大家。 我BugTracker.NET现在包括混帐的整合,根据你的人给我的指导。

Answer 1:

Trac系统和管理平台使用Git都支持集成。 它看起来或多或少完全一样的Subversion的支持。 bug跟踪系统遵循一个回购作为仁慈的独裁者回购,也不必在意周围所有的地方其他克隆。

有一件事我认为是值得一提的是,任何bug跟踪系统,需要适当支持的Git分支。 在树枝上的工作是Git的方法的非常重要的一部分,它需要在bug跟踪系统得到支持。 管理平台可以通过一个补丁做到这一点,但我最后一次(前约一个月)看,这是不是在主源代码树(你只能跟着大师)。

其它有用的功能将是如何创建分支和合并,类似于如何gitk外观的图形表示。 我不知道任何的bug跟踪系统,做这种可视化的。

通过科瑞Trager编辑。 我复制/粘贴@静噪的答案在这里(我upvoted @Squelch太):

由于混帐的分布式特性对SVN的集中性,这是完全可能的存储库的每个用户或副本有不同的分支。 该exisitnig跟踪器通常具有可被视为对所有用户的工作拷贝作为中央参考库(“仁慈的独裁者”)的本地副本。

这是很可行的用户从该跟踪器在他们的本地副本不同的分支结构。 他们可能会选择保留一些私人,从遥控器,他们感兴趣的只是拉树枝,或推一个新的分支到远程(跟踪)。 用户甚至可以分享自己的分支之间远程可能再也看不到。

bug跟踪系统实际上只能引用库它可以访问。 通常这是本地的跟踪器,但它也可以从拉库远程的跟踪,并且更难管理。 如果访问远程,它只能跟踪它具有的知识分支,并没有真正从计划的任务除了在启动此任务的方法。 这还假定用户也正在服刑的本地副本。

正如我们已经指出,计划的任务或事件挂钩,可以用于更新使用细节提交日志跟踪器。 然后,这些细节可以匹配到跟踪器的问题为根据需要和上面所指出的观看。

总之,跟踪器通常会看到任何改变就可以了当前访问树枝制成。 用钩子这些更改将立即看到,包括创建一个新的分支。 它不会看到或直到他们推动这些变化追踪到用户(离线)库所做的更改。

END @Squelch的



Answer 2:

大问题。
为了回答它,你需要看看两者的那些工具( BugTracker.NET ,你知道的好,很明显)和Git的 ,在2005年最初提出的Linux) 实际上是试图解决

  • BugTracker.NET:基于网络的跟踪,对臭虫(或几乎任何其他“项”你要跟踪的,因为你可以定义你的自定义字段,状态和工作流)
  • Git的:在它的核心,它是一个补丁集成,制作从很多人申请大量的补丁(不是所有已知的特定角色或)的大量文件。 迅速

所以,你可以看到这里的不和谐,中央借鉴和分布式代码聚合工具之间。

这两个模型之间的最小公分母仍然是“仁慈的独裁者的工作流程”,这是最分布式工作流在那里哪还有为你监控中心仓库。

但是,你应该走这条道路(监控一个存储库作为“官方参考”,而具有低于一个回购宽松的分布式工作流合并),然后需要重新定义什么是用户,它的作用。
尤其是当它涉及到的Git与集中的基于角色的bug跟踪工具集成。

如果你看的Git Linus的呈现在谷歌 ,围绕18'35,你会得到你意识到使用Git是指没有所有的用户识别并连接到一个角色的通道。

这是一对夫妇快速报价/分即说明事实:

  • “因为你有一个中央存储库意味着大家谁正在研究该项目需要写入到中央存储库。
    这意味着,因为你不希望每个人都写信给中央存储库,因为大多数人都是白痴,你创建这个类的人谁不是表面上白痴。 ”

所以,不是每个人都将最终推到中央存储库,而大部分的实际工作存在的(小的修正,验证,测试,...)将被人数量有限,反正做。

这种“仁慈的独裁者的工作流程”是指你的作品有“信任网络”:选定的一组人。 同样,并非所有开发商都能够直接显示。

  • 从相同的演示文稿,你也知道的是,一个“所有资源库”可以是“释放”的代码(相对于分支“一体化”,“测试”,对生命周期的一部分,或标签“release1.0 ”,...):

“的事情之一,为商业公司:分布式模型还有助于释放过程。
你可以有它自己的树核查组。 他们从拉人,他们验证它,而他们证明,他们可以把它推到发行团队,并说:“嘿,我们已经验证了我们的版本,开发人员,他们可以去上,用自己的头打,而不必创建标签,分支,无论你做什么,试图避开对方的脚趾。
同样,你让开对方的脚趾刚刚通过每一个组可以有它自己的树,并跟踪其工作和他们想要做的事情。 ”。

这加强了前一点:如果你只监控一个回购协议,你只能从的监察人员的数量有限的承诺。
而且它增加了一个扭曲:
虽然你不能监控所有回购在那里,你可能不希望只监控一个回购协议:如果bug跟踪重叠几个阶段(即“contrinous一体化”,“功能测试”,“用户验证”,“试生产”, ...),他们每个人可能有自己的树,它们中的每填充一个bug报告的潜在来源。
在这方面,(以下简称“由管理平台的Git分支支持” 修订版2840 )仍然与“集中回购”的心态,在您使用一个分支的开发周期modelisation(你做一下,并围绕发展任务做出的,而不是做,一个实际的“发力”,这是一个分支应该是什么一回事)。


哪里所有离开你?

  • 无论是实行严格的中央存储库模式(每个人都必须推到一个回购协议),这在我的经验,从来都不是好当的工具试图迫使你工作,而不是让你适应的工具,你想工作方式的一种方式。

  • 或重新定义缺陷生命周期管理要考虑到:

    • 潜在的多个树,每一个中的错误分辨率的潜力步骤。
    • 即监测的代码可能无法与他们直接相关,因为该决议能够在开发者的仓库专用分支来完成,而监测的代码是从制作:将被注册为一个错误的工作,但没有完整的历史记录码用户多合并通过在专用仓库一个“集成”。
    • 智能报告能够告诉检测/修复代码的“官方版本”是什么虫子,限制自己指出的这些变化(它来自这样的远程分支机构的合并,对于这样的远程回购)的由来

总之,这不是一个简单的任务。

这些问题依然存在:

  • Git的发布工作流,这是间回购(推/拉),以及内回购(合并/变基):你想跟踪哪些?
  • Git的私人分支:不是所有的代码的历史将永远是可见的,不应该被跟踪。 只有公共分支(这是拉/推,也是自己的回购协议中修改一些合并或衍合)应该被跟踪
  • Git的用户:根据“信任网络”中自己的位置,他们有不同的角色跟踪器需要反映。


Answer 3:

为了呼应MichaelM的回答,技术管理平台具有良好的Git整合。 它遵循提交信息像引用关键字。 修正等,并形式#1234的一个跟踪器数目。

这是事实,支支是不太还存在,但它进入干线大约一个月前 ,并注定了0.9版本。 管理平台当前维护在SVN,但也有一个镜子在Github

到管理平台主干链路指示跟踪器输出为Git仓库与被树枝是如何导航的差异。

$ git log

可以用来解析如果需要提交信息,作者和修改在任何跟踪工具的使用。

编辑:由于混帐的分布式特性对SVN的集中性,这是完全可能的存储库的每个用户或副本有不同的分支。 该exisitnig跟踪器通常具有可被视为对所有用户的工作拷贝作为中央参考库(“仁慈的独裁者”)的本地副本。

这是很可行的用户从该跟踪器在他们的本地副本不同的分支结构。 他们可能会选择保留一些私人,从遥控器,他们感兴趣的只是拉树枝,或推一个新的分支到远程(跟踪)。 用户甚至可以分享自己的分支之间远程可能再也看不到。

bug跟踪系统实际上只能引用库它可以访问。 通常这是本地的跟踪器,但它也可以从拉库远程的跟踪,并且更难管理。 如果访问远程,它只能跟踪它具有的知识分支,并没有真正从计划的任务除了在启动此任务的方法。 这还假定用户也正在服刑的本地副本。

正如我们已经指出,计划的任务或事件挂钩,可以用于更新使用细节提交日志跟踪器。 然后,这些细节可以匹配到跟踪器的问题为根据需要和上面所指出的观看。

总之,跟踪器通常会看到任何改变就可以了当前访问树枝制成。 用钩子这些更改将立即看到,包括创建一个新的分支。 它不会看到或直到他们推动这些变化追踪到用户(离线)库所做的更改。



Answer 4:

另外还有一个开源的集成与FogBugz的,就当然GitHub上。



Answer 5:

看看到Launchpad中如何做这样的:跟踪的bug的状态在不同的地方。

下面我还要举到马克·沙特尔沃思 :

真正的分布式bug跟踪(其中的bug列表下面的代码到处)是非常令人兴奋的,也可以是长期的解决方案。 在此期间,你可以只跟踪错误的状态在几个不同的地方解决。 Canonical公司一直在资助上的Bugzilla,Trac系统和其他bug追踪工作,使其更容易与他们交谈编程,这样我们就可以自动保持Ubuntu的开发最新的。

我们在Launchpad中,这有助于我们跟踪的问题的状态上游,在Debian中,或者在其他发行版了“分布式的bug状态集中视图”。 例如,检查出这些错误:

https://bugs.launchpad.net/moblin-applets/+bug/209870
https://bugs.launchpad.net/ubuntu/+source/nfs-utils/+bug/214041
https://bugs.launchpad.net/ubuntu/+source/tuxmath/+bug/220319
https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.22/+bug/123920
https://bugs.launchpad.net/ubuntu/+source/warsow/+bug/131582

在每一种情况下,你可以看到这个bug如何链接到其他bug跟踪报告,然后状态会自动更新。 作为一个小的后果,你可以订阅任何bug跟踪系统,通过LP任何错误报告(支持的类型)。

一个集中的观点是不是最终的解决方案,但它现在为我们工作和不少其他项目 - 上行流和分布 - 都在使用它了。



Answer 6:

管理平台已经使用Git集成,它是开源的。 也许你可以看看他们的整合的想法。



Answer 7:

也许我是有点幼稚,但将bug跟踪真的在混帐比SVN不同? 系统所使用的存储库将基本上具有相同的结构(分支和标签)作为颠覆,对不对?

我能想象你想要怎样的分支互动漂亮的图形表示,但除此之外...



文章来源: How does bug tracker/version control integration work with typical git workflows?