GitHub 项目和里程碑之间有什么区别/关系?

What is the difference / relationship between GitHub Projects and Milestones?

最近对 GitHub 的更新在 GitHub 工作流程中添加了一个叫做 Projects 的东西,因为我对 项目跟踪工具 没有任何特别的经验,例如 Jira 或 Trello (嘿,至少我注意到了相似性),任何人都可以,请 详细说明 GitHub 的 里程碑 与新 项目?

如果我理解正确,里程碑 是一种将问题组织成更小 "sub-projects" 的方式 - 比整个 "project"(在我的世界观中,它由 存储库 表示)。当所有问题都done/closed时,里程碑可以视为完成

新推出的 项目 在我看来也是一种将问题组织成 更小的方式-比存储库 "sub-projects"(尽管称为项目)。我知道工作流程应该与 "mere" Milestones.

略有不同并且更细粒度

那么,项目 是对 里程碑 的补充(或者说 里程碑 补充 Projects 现在?)还是我应该将 Projects 视为 replacement 个里程碑?

项目究竟在哪里属于repository[-milestone]-issue层次结构?

可悲的是,GitHub关于介绍 Projects 的博客条目没有提及任何关系(https://github.com/blog/2256-a-whole-new-github-universe-announcing-new-tools-forums-and-features).

不知怎的我觉得有一个,但我不能指手画脚。

我也在想同样的事情。这是我想出的。

首先,让我们回顾一下主要的相同点和不同点:

  • 一个问题可以属于多个项目,但只能属于一个里程碑。
  • 项目永远不会完成。没有进度条或截止日期。 项目 没有进度条或截止日期(他们现在有,尽管它作为“跟踪项目进度”隐藏在项目菜单中" 复选标记,并且没有进度的百分比计算),但现在可以关闭(正如@Sheen 所指出的)
  • 另一方面,里程碑拥有所有这些,但缺乏任何形式的组织。问题要么处于里程碑中,要么不处于里程碑中。 (可以按照@Nick McCurdy 的指示进行订购)
  • 问题可以按里程碑过滤,但不能按项目过滤。正如@cmonkey 所指出的,问题现在可以按项目和里程碑过滤。
  • 项目可以包含 注释(可以转换为问题),因此它不会用模糊的想法污染问题跟踪器
  • 一个项目可以跨越多个里程碑,一个里程碑可以包含不同项目的一部分。
  • 组织也可以有项目。这些项目可以包括来自组织中任何存储库的票证,这非常有用。

所以我的看法是,项目 是一种完全独立的方式,可以在更高层次上可视化和组织您的工作(想想“项目管理”,多个团队,多个存储库等),而 里程碑 是一种在更基本的层面上组织截止日期和发布的方式(想想“发布管理”、“版本”等)。考虑到这一点,一个问题只属于一个里程碑(它只发布或推送到生产一次)但可以属于不同项目的一部分是有道理的。

不过我敢肯定他们还有其他方式来看待它,我很想听听其他意见。

编辑 2017 年 12 月

前段时间,在使用里程碑和项目一年多之后,我意识到我完全忽略了另一个重要方面。

  • 里程碑Scrum 方法论的工具。里程碑适用于有时间限制的迭代和处理批量问题的冲刺。
  • Projects看板 方法的工具。项目有利于持续交付和稳定的工作流程。

项目的一个好处是它们比里程碑更自由。您可以只在其中添加注释并 link 处理问题,然后按照适合您的方式组织它们。它们非常适合记下想法、制定路线图以及列出资源和依赖项。过去我用问题和 wiki 做同样的事情,但我发现两者都太正式和事务性(即更高的开销)。

里程碑 是一种标签,用于标记和分组预计在某个时间点交付的门票。您可以从 Issues 页面访问的 Milestones 页面非常清楚 - 您可以看到针对特定里程碑和截止日期完成的工单百分比。您还可以按截止日期对里程碑进行排序,并在特定里程碑内对工单进行优先排序。

这里的重点是交货日期和跟踪进度。

另一方面,

项目 在 GitHub 中实现为 Kanban 带有一些花哨功能的看板。您可以指定多个列( 泳道 - 正如@Doug 在下面所说 泳道 不受支持yet) 创建简单的工作流程。然后,您可以从一个或多个存储库添加工单,确定它们的优先级,然后在处理它们时将它们从一列推进到另一列。例如,您可以有 'Backlog'、'In Progress'、'Under Review'、'In Testing' 和 'Done' 列,并从左到右或从右到如果有缺陷的票从 'In Testing' 退回到 'Backlog',则离开。

这里的重点是组织和管理工作。

那么你如何组织和划分工作由你决定。您可以为每个里程碑创建一个项目,或者在一个项目中有多个里程碑,或者将里程碑拆分为更短的 sprints。您还可以有多个项目涵盖产品工作的不同方面,例如,一个针对开发人员,一个针对测试人员。

我的看法:

  • 一个项目是关于一个过程
  • 一个里程碑是关于一个产品

项目最适合深入了解组中使用的流程。更好的名称是 "workflow" 或 "process"。与创建新里程碑相比,创建新项目涉及更多开销。所以你真的只想在你的团队中有一个新的 process 时创建一个新项目:必须选择、配置和排序通道。它们在每个项目中也可能非常不同。我回想起丰田最初使用看板的方式:管理人员及其工作量。

A Project answers the question, "What are we working on at the moment?"

两个很棒的项目示例:软件开发和博客。每个配置将支持不同组的人员流程;他们如何合作并签署协议。

相比之下,里程碑的工作原理都是一样的。它们是一个有序的任务列表,必须全部关闭才能使工作产品被视为完成。可选地,可以设置截止日期,这只是提供提醒,但不会改变里程碑功能。

A milestone answers the question, "What is remaining to finish this product?"

在 GitHub 上:

  • 项目是一个有始无终的过程。
  • 里程碑是一个强调结束时间的过程。

因此使用里程碑将项目拆分为多个阶段并带有结束时间是正确的。

我是这样使用的:

  • Organization Project用于组织多个repositories的过程
  • Repository Project用于组织长期分支的迭代过程,如develop branch,custom branch。
  • 里程碑是一个迭代阶段。