【问题标题】:Setting up post-receive hook for bare repo为裸回购设置接收后挂钩
【发布时间】:2013-01-05 09:06:44
【问题描述】:

我在我的 ubuntu 服务器中设置了一个裸仓库。

在我将裸 git repo 推送到服务器后:

$ git push origin master

我希望使用最新推送更新我的非裸仓库的内容,如图所示,其中非裸仓库是我名为 workfiles 的实际工作目录。

$ cd /central/workfiles
$ git pull
$ exit

我听说过 post-receive 挂钩,但不知道如何设置。 我怎样才能做到这一点。

【问题讨论】:

    标签: git github githooks


    【解决方案1】:

    我会选择类似的东西

    #!/bin/sh
    
    cd /central/workfiles
    git pull
    exit
    

    将上面的脚本保存为post-receive,并将它放在你的bare repo的hooks/目录中。

    别忘了让它可执行

    chmod +x post-receive
    

    【讨论】:

    • 我创建了一个新文件作为 post-receive,但是在我推送到裸仓库后,没有任何更改反映在我的工作目录的非裸仓库中
    • 这只有在 GIT_DIR 设置为 ".git" 时才有效,否则你会得到一个错误
    【解决方案2】:

    我更喜欢指定工作树和 git 目录,而不是依赖 cd:

    /bare/repo.git/hooks/post-receive
    
    #!/bin/sh
    GIT_WORK_TREE=/central/workfiles GIT_DIR=/central/workfiles/.git git pull origin master
    exit
    

    作为ChrisVcommented below,您也可以依赖git checkout 而不是git pull

    我相信 git checkout -fgit pull 更安全,因为如果需要手动修复,作为 pull 的一部分的合并可能会使事情变得混乱。

    但这意味着/central/workfiles 不是一个“非裸”的 git repo。它只是一个文件夹,您可以在其中签出裸 repo /bare/repo.git 的内容。
    有关该方法的示例,请参阅 Brian Thomasanswer

    这不符合 OP 规范。

    【讨论】:

    • 我是否应该根据您提供的内容创建文件。在我看来,它在一行中。
    • @david.colais 3 行:bin/sh,1 行用于 pull,1 行用于 exit(尽管 exit 行并不是真正需要的)
    • @david.colais 同样如此,拉取本身是一行,设置了两个环境变量:GIT_WORK_TREE=/central/workfiles GIT_DIR=/central/workfiles/.git git pull origin master
    • 后期添加:我相信 git checkout -fgit pull 更安全,因为如果需要手动修复,作为 pull 的一部分的合并有可能使事情变得混乱......跨度>
    • @ChrisV 确实如此。我已将您的评论包含在答案中以提高知名度。
    【解决方案3】:

    我像这样使用 post 接收钩子

    #.git/hooks/post-receive
    
    #!/bin/sh
    GIT_WORK_TREE=/srv/http/sitedir/ git checkout -f
    

    是的,请确保使其可执行。

    【讨论】:

    • 这是@VonC 的策略吗?在他们回答后添加其他人的 sn-p 以获得更新的日期和所有选票?哈哈。我得弄清楚如何在这里获得更多积分。如果可能的话,您能否删除在此处重复我的答案的代码 sn-p 并将其替换为请参阅@Brian Thomas,这样我可以得到几点?我试图保持公平并在溢出时获得一些权利,发现了这一点....感谢您的合作。问候,。 ..等等,我刚刚想到一件事,是你给了我重点吗?如果是,请忽略,如果不是,请执行:-)
    猜你喜欢
    • 1970-01-01
    • 2019-12-25
    • 2015-11-25
    • 2015-07-28
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    相关资源
    最近更新 更多