0

我们的 Bitbucker 服务器配置为在推送事件上调用 webhook(由 Jenkins 接收),其中包括分支更新和添加的标签。此 Webhook 中包含的 HTTP POST 内容是描述事件的 JSON。此处描述了事件有效负载:https ://confluence.atlassian.com/bitbucketserver076/event-payload-1026535078.html

(我将使用“ $”来指代接收到的 JSON 的根)

当我执行 agit push origin {my_branch}时,webhook 中包含的 JSON 会给出值,$.changes[0].fromHash并且$.changes[0].toHash我可以将其与我的 git 日志相关联。
例如,如果接收到的 JSON 是:

{  
  "eventKey":"repo:refs_changed",
  "date":"2017-09-19T09:45:32+1000",
  "actor":{ ...  },
  "repository":{  ...  },
  "changes":[  
    {  
      "ref":{  
        "id":"refs/heads/master",
        "displayId":"master",
        "type":"BRANCH"
      },
      "refId":"refs/heads/master",
      "fromHash":"ecddabb624f6f5ba43816f5926e580a5f680a932",
      "toHash":"178864a7d521b6f5e720b386b2c2b0ef8563e0dc",
      "type":"UPDATE"
    }
  ]
}

...然后我就可以在我的 git 日志中看到{fromHash}和,例如:{toHash}

$ git log --oneline -n 4
178864a sit
dcbc68d dolor
ecddabb ipsum
b8bf8f0 lorem

但是当我推送一个 git 标签时,例如:

$ git tag -a 0.1.0 -m "0.1.0"
$ git push origin 0.1.0

...然后{fromHash}是明显无效的0000...,但{toHash}不是明显无效的值,我无法与我的 git 日志中的任何内容进行核对。例如:

{  
  "eventKey":"repo:refs_changed",
  "date":"2017-09-19T09:47:32+1000",
  "actor":{ ...  },
  "repository":{  ...  },
  "changes":[  
    {  
      "ref":{  
        "id":"refs/tags/0.1.0",
        "displayId":"0.1.0",
        "type":"TAG"
      },
      "refId":"refs/tags/0.1.0",
      "fromHash":"0000000000000000000000000000000000000000",
      "toHash":"b82dd854c413d8e09aaf68c3c286f11ec6780be6",
      "type":"ADD"
    }
  ]
}

我的shell中的git log输出保持不变,那么代表什么{toHash}b82dd85...

4

1 回答 1

0

toHash 表示您创建的带注释标签的 SHAgit tag -a ...您可以使用以下命令查看提交 id 和标签对象的 SHA git show-ref --tags -d

在您的情况下,它应该显示类似这样的内容

$ git show-ref --tags -d | grep 0.1.0

b82dd854c413d8e09aaf68c3c286f11ec6780be6 refs/tags/0.1.0
178864a7d521b6f5e720b386b2c2b0ef8563e0dc refs/tags/0.1.0^{}
于 2022-01-06T19:22:29.330 回答