Git新手在这里。我想要一个提交后挂钩,运行时会将最新代码从存储库复制到新文件夹中的不同服务器。文件夹名称应该是我在 git commit 注释中写的。
这可能吗?
Git新手在这里。我想要一个提交后挂钩,运行时会将最新代码从存储库复制到新文件夹中的不同服务器。文件夹名称应该是我在 git commit 注释中写的。
这可能吗?
由于您看起来不太确定您需要哪个钩子,因此根据评论,我发布了一个基于接收后钩子的答案。这是一个服务器端钩子,它将在服务器中收到所有内容后运行,在推送之后。提交后挂钩将是客户端,并且会在每次提交后运行(有关 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 ... 只需克隆/更新临时目录中的本地副本并将其同步到您的远程位置。