2016-06-11 52 views
1

我有多个贡献者的私人git存储库。我希望在网络驱动器中拥有最新版本的存储库主分支,这样每个人(包括那些不使用git的人)都可以访问存储库中的工具。如何为非git协作者维护最新版本的git存储库

我明白,这可能是可能的与git挂钩,但我不知道如何或什么是最佳做法这样做。

网络驱动器中的目录应该只是git存储库主服务器的一个克隆,如果它被意外修改,那么每当有人下次要提交时就应该清理它。

编辑:大多数贡献者和合作者使用Windows。

回答

0

通常情况下,您将设置一个webhook,它将侦听推送事件并自动为您更新本地回购。

例如见this webhook(或this one):

<?php 
// Use in the "Post-Receive URLs" section of your GitHub repo. 
if ($_SERVER['HTTP_X_GITHUB_EVENT'] == 'push') { 
    shell_exec('cd /path/to/network/drive/git-repo/ && git reset --hard HEAD && git pull'); 
} 
?>hi 

然而,这假设你有网络驱动器上回购的完整克隆。
既然是私人回购,我宁愿只有一个工作树(没有历史)就可以了,这意味着我的网络挂接会做:

git --work-tree=/path/to/network/drive/git-repo checkout --force 
+0

我想知道这是否适用于Windows,因为大多数贡献者都使用Windows,并且没有管理员权限。如果在未连接到网络驱动器所在的网络时尝试推送到github,是否会导致问题。这通常不是这种情况,但我不希望别人得到任何奇怪的错误消息,因为他们使用GitHub桌面客户端的git,并且不愿意混淆git。 – Lesenger

+0

@Lesenger它工作得很好:我的Windows机器上没有管理员权限,无论是在工作中。网络路径就在那里供其他人阅读,而不是修改或推送。任何推动是从一个正常的本地回购。 – VonC

+0

对于webhook,我还是有点困惑。我甚至把这些webhook放在哪里? GitHub存储库设置有'添加webhook'部分,但它有'Payload URL','内容类型'和'秘密'字段。另外我不太明白webhook命令执行的方式。有人推动回购后会发生什么事情?和我一起。我根本不了解这些服务器端的东西。 – Lesenger

0

您需要勾上推送事件(见here)。每当你从该挂钩收到请求时,你可以做

git fetch origin 
git reset --hard origin/master 

这将获取从“起源”资料库的更新和改变当地“主人”分支的相同状态的远程“主”。

相关问题