官方文档关于" Gerrit Change Number"

时间:2018-03-13 19:13:26

标签: git gerrit

这是我的另一个问题的后续问题:What is the official name of the number in a Gerrit review url

我现在已经知道嵌入在Gerrit网址中的小整数被称为" Gerrit Change Number "有时" 数字变更号"。例如,以下Gerrit网址中的数字为68

http://gerrithost:8080/68

这个数字在理解Gerrit工作流程方面起着重要作用,但对此却没有太多讨论。我甚至觉得它可能已被弃用(因为 Change-Id - 前缀为字符&#34的长哈希字符串;我&#34; - 也唯一地标识了一个gerrit < EM>更改)

Change-Id: Ic8aaa0728a43936cd4c6e1ed590e01ba8f0fbf5b

在哪里可以找到有关Gerrit Change Number的更多讨论?它确实被弃用了吗?如果是,那么这是否意味着有一个工作流程不使用数字? (但是如何构建Gerrit URL?)

我在此页面上发现了此讨论(Gerrit User Guide)。它表明了工作流程中数字的重要性。

  

当推送提交进行审核时,Gerrit会将其存储在暂存区域中   这是特殊引用/更改/命名空间中的一个分支。改变参考   格式为refs / changes / XX / YYYY / ZZ,其中YYYY为数字   更改编号,ZZ是补丁集编号,XX是最后两个   数字变化数字的数字,例如参考文献/更改/ 20 /一分之八十八万四千一百二十。   使用时不需要了解此ref的格式   格里特。

4 个答案:

答案 0 :(得分:1)

不推荐使用Gerrit更改编号。这是在浏览器网址(https://GERRIT-SERVER/GERRIT-CHANGE-NUMBER)中访问Gerrit更改的方式。

Change-Id也标识更改,但稍后创建它以解决特定问题:识别属于同一审阅的提交(补丁集)。例如,当需要修改更改时,可以上载第二个提交以解决报告的问题。 Gerrit允许将这两个提交附加到同一个更改,并依赖于提交消息底部的Change-Id行来执行此操作。通过此Change-Id,Gerrit可以自动将新版本的更改与其原始评论相关联,甚至可以通过樱桃选择和重组。

详细了解Change-Id here

答案 1 :(得分:1)

更改号码和更改ID用于不同目的。

来自Gerrit Docs on Change-Ids ...

  

Gerrit需要识别属于同一评论的提交。例如,当需要修改更改时,可以上载第二个提交以解决报告的问题。 Gerrit允许将这两个提交附加到同一个更改,并依赖于提交消息底部的Change-Id行来执行此操作。 通过此Change-Id,Gerrit可以自动将新版本的更改重新关联到其原始评论,甚至是樱桃选择和重新定位

Change-ID是一个校验和,用于识别在评论过程中重写,修改和重写提交的其他方法的相同更改。这是关键: Git不会重写提交。 Git创建了新的提交并假装它一直都是这样。 Gerrit需要一种方法来知道这些新的提交实际上与你提出的审查相关。

来自User Guide ...

的更多信息
  

如果提交了在其提交消息中具有Change-Id的提交以供审阅,则Gerrit会检查此项目和目标分支是否已存在具有此Change-Id的更改,如果是,则Gerrit会创建新的修补程序集为了这个改变。如果不是,则创建具有给定Change-Id的新更改。

     

如果推送没有Change-Id的提交进行审核,Gerrit会创建一个新的更改并为其生成一个Change-Id。

     

修改和重新定位提交会保留Change-Id,以便在推送进行审核时,新提交会自动成为现有更改的新修补程序集。

查看它的一种方法是更改​​号码是变更的人类可读标识符。 Change-ID是Gerrit的簿记。 Change-ID仅对用户可见,因为Git无法将Gerrit存储有关提交的元数据,而不是将其放在提交消息中。

答案 2 :(得分:1)

更改编号唯一标识更改。它是变更条目的唯一值。除了urls和ref之外,它还可以用于Gerrit查询和REST API。

ssh -p 29418 $user@$gerrithost gerrit query change:884120
curl --digest --user $user:$httpassword $gerrithost/gerrit/a/changes/884120

答案 3 :(得分:0)

我期待这样的讨论。我相信以下断言是正确的,但我需要确认。 (这就是我首先寻找文档的原因)。请帮帮我。

  1. Gerrit更改编号(也称为数字更改编号),与Gerrit Change-Id一样,唯一标识正在审核的更改&#34;,可能在代码审查周期中需要多个修补程序集。与Gerrit Change-Id不同,它是一个小整数,可能更容易为人类用户使用。 (相比之下,Gerrit Change-Id是一个长字符串,前面是字符&#34; I&#34;)
  2. Gerrit Change Number用于refs(参见开篇问题中引用的部分)以及URL和查询以及REST API(参见ElpieKay的回答)
  3. Gerrit Change Number对服务器是唯一的。托管在同一服务器上的多个项目共享相同的数字空间。
  4. 提交审核到Gerrit服务器的新更改时,Gerrit更改编号通常生成单调递增。但请注意,由于不同的更改可能需要不同的时间来完成代码审查,因此无法保证更改将按顺序应用于主分支(或根本应用)。因此 可以使用较大的数字更改编号Y进行更改,以便在之前使用较小的数字更改编号X在主分支上生效。换句话说,在主分支上,当分别有数字X和Y的两个变化,并且X 时,不能保证X 发生在 Y 之前。