jjj*_*jjj 5 git githooks git-subtree
我有一个在本地网络上维护的大型私有存储库。我想自动将该存储库的子树推送到该网络之外。我需要它很简单:
*任务*某人推送到本地远程存储库 --> 子树会自动推送到其他某个存储库
我不确定这是否可以通过服务器端挂钩来实现,因为 AFAIK 没有从裸遥控器推送子树这样的事情。我想出了两个想法:
post-commit-hook并让每个用户都安装它,但这很糟糕,不是吗?Git book 特别指出应该在服务器端强制执行策略。有没有一种简单的方法可以实现这样的目标?或者这是不可能的,这只是 git 滥用?
嗯,我有点尴尬。显然这比我想象的要容易得多。这是一个基于@wrzasa建议的仓促解决方案:
在您要推送到的服务器上克隆您的存储库,如下所示(dir.git 是一个裸存储库):
.
|- dir.git
|- dir
Run Code Online (Sandbox Code Playgroud)在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>
Run Code Online (Sandbox Code Playgroud)
记住要使post-receive可执行。如果您想知道为什么需要,请参阅此答案。unset GIT_DIR
差不多就这样了。现在,每当有人推送到dir远程(即dir.git)下的子树时<subdir-in-dir>,都会将其推送到<remote-name>。
| 归档时间: |
|
| 查看次数: |
1080 次 |
| 最近记录: |