[英]Git: is there a way to auto push a subtree?
我有一个在本地网络上维护的大型私有存储库。 我想自动将该存储库的子树推送到该网络之外。 我需要它很简单:
*任务*某人推送到本地远程存储库 --> 子树会自动推送到其他某个存储库
我不确定这是否可以通过服务器端挂钩来实现,因为 AFAIK 没有从裸遥控器推送子树这样的事情。 我想出了两个想法:
post-commit-hook
并让每个用户都安装它,但这很糟糕,不是吗? Git book 特别指出应该在服务器端强制执行策略。有没有一种简单的方法可以实现这样的目标? 或者这是不可能的,这只是 git 滥用?
嗯,我有点不好意思。 显然这比我想象的要容易得多。 这是一个基于@wrzasa建议的草率解决方案:
在您推送到的服务器上克隆您的存储库,如下所示(dir.git 是一个裸存储库):
. |- dir.git |- dir
在dir
执行: git remote add <remote-name> <remote-address>
在dir.git/hooks/post-receive
:
#! /bin/bash unset GIT_DIR cd ../dir git pull ../dir.git git subtree split --prefix=<subdir-in-dir> --branch=<branch-name> git push <remote-name> <branch-name>
请记住使post-receive
可执行。 如果您想知道为什么需要unset GIT_DIR
请参阅此答案。
差不多就是这样。 现在,每当有人推送到dir
remote(即dir.git
)时, <subdir-in-dir>
下的子树将被推送到<remote-name>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.