我正在寻找一种方法来检查git remote
自上次获取以来的更改。
我知道 git 的工作原理是让获取远程查看更改,但我知道许多持续集成工具,例如能够“ping”远程以进行更改的“TeamCity”。
我想知道构建代理等如何进行这些检查,以便我可以编写自己的工具来通知人们对 repo 的更改。
你会使用什么 git 命令来检查 a 上的更改git remote
?
就够git ls-remote .
了吗?
我正在寻找一种方法来检查git remote
自上次获取以来的更改。
我知道 git 的工作原理是让获取远程查看更改,但我知道许多持续集成工具,例如能够“ping”远程以进行更改的“TeamCity”。
我想知道构建代理等如何进行这些检查,以便我可以编写自己的工具来通知人们对 repo 的更改。
你会使用什么 git 命令来检查 a 上的更改git remote
?
就够git ls-remote .
了吗?
我猜他们通过执行 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
来查看您上次看到远程分支后是否已更新,但要访问提交元数据(日期),您必须获取。
构建代理通常通过让服务器在更改时对它们执行 ping 操作来完成,这是通过一个post-receive
钩子来完成的,该钩子发送带有新提交 SHA 的 HTTP POST。我看不出有理由在不获取的情况下检查遥控器。
git ls-remote
将为您提供提交 SHA,您显然可以将其与本地的进行比较,但这不会为您提供有关已完成多少次提交的任何信息。