1

我正在寻找一种方法来检查git remote自上次获取以来的更改。

我知道 git 的工作原理是让获取远程查看更改,但我知道许多持续集成工具,例如能够“ping”远程以进行更改的“TeamCity”。

我想知道构建代理等如何进行这些检查,以便我可以编写自己的工具来通知人们对 repo 的更改。

你会使用什么 git 命令来检查 a 上的更改git remote

就够git ls-remote .了吗?

4

2 回答 2

1

我猜他们通过执行 agit fetch并查看 refs 的变化来执行“ping”。post-update钩子可以用来检查这一点。

另一种查看foo远程分支是否bar已更改的方法是执行 a git fetch bar foo,它将分支提取到FETCH_HEAD中,然后运行例如 agit log bar/foo..FETCH_HEAD以将您的旧版本foo与刚刚获取的版本进行比较。

最后一条评论:您可以使用它git ls-remote来查看您上次看到远程分支后是否已更新,但要访问提交元数据(日期),您必须获取。

于 2012-10-21T08:22:56.537 回答
1

构建代理通常通过让服务器在更改时对它们执行 ping 操作来完成,这是通过一个post-receive钩子来完成的,该钩子发送带有新提交 SHA 的 HTTP POST。我看不出有理由在不获取的情况下检查遥控器。

git ls-remote将为您提供提交 SHA,您显然可以将其与本地的进行比较,但这不会为您提供有关已完成多少次提交的任何信息。

于 2012-10-21T11:00:00.077 回答