gpt4 book ai didi

Git:有没有办法自动推送子树?

转载 作者:行者123 更新时间:2023-12-01 23:39:12 25 4
gpt4 key购买 nike

我有一个在本地网络上维护的大型私有(private)存储库。我想自动将该存储库的子树推送到该网络之外。我需要它很简单:

*任务* 有人推送到本地远程仓库 --> 一个子树被自动推送到其他仓库

我不确定这是否可以通过服务器端 Hook 来实现,因为 AFAIK 没有从裸远程推送子树这样的事情。我提出了两个想法:

  • 我可以在服务器上克隆远程并自动拆分克隆远程中的子树。这并没有真正的帮助,因为我不知道如何自动 pull 出子树(其他人也有 this problem )。
  • 另一个想法是编写一个自定义客户端post-commit-hook并让每个用户都安装它,但这很糟糕,不是吗? Git book 明确指出 policies should be enforced on server side .

  • 有没有一种简单的方法可以实现这样的目标?或者这是不可能的,它只是 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可执行。见 this answer如果你想知道为什么unset GIT_DIR是需要的。

  • 差不多就是这样。现在每当有人推送到 dir dir.git 下的远程(即 <subdir-in-dir>)子树将被推送到 <remote-name> .

    关于Git:有没有办法自动推送子树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46714487/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com