github推送事件有效负载中提交'distinct'标志的含义

orm*_*orm 8 github github-api

通过github API,PushEvents类别包括一个提交列表和一个github在事件发生时分配的时间.PushEvent描述文档声明属性commits[][distinct]指示

此提交是否与之前推送的任何提交不同.

这表明只有一个事件条目,其中提交被标记为'distinct'标志设置为True作为Github看到它们的最早时间,并且此类事件将具有最早的时间戳与任何其他具有该提交的事件相比.

但是,我发现一些提交在多个不同的推送事件通知中被标记为"不同",并且标记为'distinct'= False的提交实际上可能出现在早期事件中,而不是那些被标记为'True'的事件.

这是为什么?我误解了"独特"旗帜的含义吗?

cus*_*der 2

即使我在文档之前从未使用过 Webhooks,也不会感到困惑。

例如,我完全可以理解为什么你可以获得多个不同的提交。假设您在分支bugfix外创建了一个分支main并进行了三次提交:

   * 5ad1d361 (bugfix) Dolor
   * ec656d67 Ipsum
   * 9879ac57 Lorem
  /
* 655a19cd (main) Baz
* ccc62669 Bar
* 48158120 Foo
Run Code Online (Sandbox Code Playgroud)

当您将bugfix分支推送到 GitHub 远程时,GitHub 之前从未见过这三个提交,因此将它们全部标记为不同的。(如果您推送另一个提交,那么只有最后一个提交应该被标记为不同的。)

然而,当您重新设置分支基础时,我发现可能会出现混乱。

假设您将新的提交推送到您的main分支:

* 728bae2c (main) Bat
|  * 5ad1d361 (bugfix) Dolor
|  * ec656d67 Ipsum
|  * 9879ac57 Lorem
| /
* 655a19cd Baz
* ccc62669 Bar
* 48158120 Foo
Run Code Online (Sandbox Code Playgroud)

然后你根据 .rebasebugfix分支main。您现在拥有:

   * 54116c88 (bugfix) Dolor
   * 09ac9aba Ipsum
   * 7dc89c8e Lorem
  /
* 728bae2c (main) Bat
* 655a19cd Baz
* ccc62669 Bar
* 48158120 Foo
Run Code Online (Sandbox Code Playgroud)

当您推送到 GitHub 远程时,如果听到这三个提交现在再次bugfix被标记为不同,我不会感到惊讶。即使它们没有改变并且在技术上比更旧,它们也已经被重新设定并且它们的提交哈希已经改变,所以就 GitHub 而言它们是新的提交。728bae2c