在Git工作的安全方式

时间:2013-01-25 15:36:44

标签: git github

我在我的unix服务器上安装了Git,并且我的webapps目录包含我的整个网站内容,我已将其设置为非裸仓库。

我的团队中还有另外两名成员也在从事网站工作。

我们3个开发人员如何在同一个非裸仓库中工作并提交我们的更改,而不会有任何提交其他开发人员文件的风险,如果我git add .然后提交它们可能会发生?

有人可以为3个或更多在这种情况下工作的人提供安全的方法吗?

2 个答案:

答案 0 :(得分:2)

您真的不希望两位开发人员共享工作副本。在这种情况下,没有办法确保安全:如果你们两个人同时编辑同一个文件怎么办?

git有很多用于合并冲突管理的工具,但是如果你有两个开发人员为他们正在进行的工作共享一个存储库, none 会帮助你。< / p>

相反,要进行设置,以便每个开发人员都有自己的测试环境,他们可以在这里评估对本地副本所做的更改是否有效。当更改准备好“发布”时,它们会将其推送到中央共享存储库。该中央存储库中的代码最终会进入生产环境。

开发人员用来测试他们的更改的Web服务器可能不一定是任何花哨的东西;例如,Python有一个内置的小型Web服务器,可以通过python -m SimpleHTTPServer调用。这个或类似的小型服务器可能适用于测试HTML和Javascript项目。如果您的设置更复杂,您仍然可以为每个开发人员设置一个“临时”副本:复制数据库,Web服务器等。如果您想全力以赴,请让每个开发人员都在克隆的虚拟机上工作,并完全复制您的实时环境。

如果您想要非常有力地保证进入主存储库的代码是好的,请使用像Gerrit这样的网守系统和/或Jenkins之类的自动引导程序。对于一个三人团队来说,让每个开发人员在他们推出之前仔细检查他们自己的变化可能就足够了。

如果您必须共享工作副本,您将不得不回退到较旧的系统:CVS样式的锁。在开发人员对文件进行更改之前,他们需要“检查”。虽然它已“签出”,但没有其他开发人员可以触摸它(将其设置为只读)。在任何人做出承诺之前,你大吼大叫你的同事说“嘿,我正在做出承诺!没有人做任何事情!”。然后你做一个git add -i或类似的,做出提交,然后告诉其他人一切都清楚,他们可以继续。 这是一种糟糕的工作方式。不要这样做。

答案 1 :(得分:1)

我建议您创建一个裸存储库,用于更新实时webapp,然后为每个开发人员设置测试环境(单独的tomcat安装或虚拟域),或让开发人员编辑非实时安装web应用程序。

在任何一种情况下,从开发人员的角度来看,工作流程看起来都是这样的:

$ cd ~/webapp
$ git add file.html
$ git commit -m "Updating file to perform task."
$ git push origin
$ cd /path/to/production/webapp
$ git fetch origin
$ git merge origin/testbranch

流程比仅使用Web应用程序的一个工作副本稍长一些,但是这允许每个开发人员使用Git来完成其全部功能。如果所有开发人员共享相同的工作副本,您也可以使用文件修订控制系统(如RCS)。