git组开发服务器设置

时间:2010-10-14 14:58:35

标签: git

我想为我的组织部署git。我希望用户无权访问服务器,只能提交到存储库。 但是,我希望存储库是一个真正的文件系统,我可以使用apache虚拟主机。 我所做的是以下内容:

cd /home/vhosts
git init --shared {projectname}
git config receive.denyCurrentBranch ignore

然后我想在每次推回主存储库后运行git reset --hard

这是个好主意吗?我是否应该有第二个存储库执行git pull而不是git reset --hard ...哪个更重?我可以将其设置为hook ??

感谢。

3 个答案:

答案 0 :(得分:3)

我对您描述的设置进行了一些修改。 Joe Maller有一个很好的写作,我用它作为我配置的基础。 A web-focused Git workflow

答案 1 :(得分:1)

通常,设置它的方法是拥有一个“裸”存储库,它是每个人推送和拉出的顶级主服务器。运行Apache的Web服务器有自己独立的存储库(如果您的硬件很短,它们可以在同一台机器上)。您将在主存储库上安装一个post-commit钩子,在/home/vhosts下为Apache触发一个“git pull”。 (这个钩子在一台机器上最简单,但是你可以在机器上进行设置,如果你这样设置它。)

创建一个裸存储库:

mkdir -p /home/git/{projectname}.git
cd /home/git/{projectname}.git
git init --shared --bare

裸存储库根本没有工作副本,只有.git结构的内容。

答案 2 :(得分:0)

我不确定Apache与它有什么关系。

正如Greg所说,只需设置一个仓库,一个裸仓,并将其作为您的主要仓库。然后人们从中拉出来,当他们准备好时,他们会推动它。您可能想要拒绝主回购上的非快进合并,以便人们总是提取最新代码,与其合并,然后推送。

让人们访问repo的最佳方式是使用git守护程序和git://协议。

如果你想要一个web界面,那么使用gitweb,但这只是一种便利。

此外,section 5.1 of the Pro Git book对不同工作流程进行了一些很好的讨论,这可能有助于澄清最适合您的工作流程。