【问题标题】:Git Post-Commit HookGit 提交后挂钩
【发布时间】:2015-09-10 18:21:18
【问题描述】:

这里是 Git 新手。 我想要一个提交后挂钩,运行时会将最新代码从存储库复制到新文件夹中的不同服务器。文件夹名称应该是我在 git commit 注释中写的。

这可能吗?

【问题讨论】:

  • 你知道提交后挂钩会在客户端运行吗?在 post-receive 中执行此操作更为常见,因此当您将某些内容推送到 repo 时,它也会更新另一个位置
  • 不,我没有。仍然让我对 git 感兴趣。所以我需要一个接收后挂钩?
  • 我不认为这是一个重复,因为 OP 想要创建一个钩子,而链接的问题是关于一个脚本没有运行,即。不一样
  • 我认为这不是我所追求的。但谢谢。

标签: git rsync post-commit-hook


【解决方案1】:

由于您看起来不太确定需要哪个钩子,因此根据评论,我发布了基于 post-receive 钩子的答案。这是一个服务器端钩子,它将在服务器收到所有内容后运行,在推送之后。提交后挂钩将是客户端,并且会在每次提交后运行(有关 git 挂钩的更多信息,请参阅 https://git-scm.com/book/it/v2/Customizing-Git-Git-Hooks)。

假设一个 bash 脚本,你可以使用:

MESSAGE=`git log -1 HEAD --pretty=format:%s`

检索最后一条提交消息,并从那里开始创建您的脚本。也可以使用以下命令检索包含在该推送中的每条提交消息:

while read oldrev newrev ref
do
    MESSAGE=`git log -1 $newrev --pretty=format:%s`
    doSomethingElse...
done

至于将其复制到其他地方,您可以使用您在其他脚本中使用的任何内容,例如 scp、rsync...只需克隆/更新临时目录中的本地副本并将其同步到您的远程位置。

【讨论】:

  • 感谢您的回答。将探索你所说的。
  • @MikashHaria :希望它有所帮助。请记得报告它是否有效,以便到达此帖子的其他人也可以受益
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-29
  • 2011-11-06
  • 2011-12-16
  • 1970-01-01
  • 2021-09-10
  • 1970-01-01
相关资源
最近更新 更多