Git建议用于大型(> 250GB)内容存储库

时间:2009-06-16 05:43:45

标签: git version-control perforce

Web应用程序是一个定制的CMS,它有几个子应用程序,每个子应用程序都有代码和内容驻留在同一目录结构中。由于应用程序框架的体系结构,代码和内容交织在一起(内容取决于其显示的代码和其他功能),因此是不可分割的。内容不存储为BLOB,而是存储为文件,底层数据库用于链接它们。子应用程序的大小范围从20GB到250GB甚至更多(这是杀手)。

Web应用程序将在代码中进行一些增强(新的子应用程序,错误修复等),同时用户将通过已经实时的系统添加/更新内容。因此,需要部署/发布过程,最重要的是需要为代码和内容建议版本控制系统。

由于原因,Git出现了 - 它是开源的& amp;自由,易于分支和合并,它不是集中的&因此没有单点故障。

但是经过网络上的一些初步研究后,我发现了一些令人失望的事实,这些事实适用于我们的应用程序 - 对于像我们这样的大型系统使用Git是痛苦的(结账,克隆,合并,推送,拉动)并且命令很复杂(对于一个DVCS无知且主要是Windows用户的开发者群体来说,“geeky”会更合适。

对于Git没有固定的思维方式,但如果我必须采用集中式方法(在非常糟糕的情况下)那么应该是什么样的方式(CVS和SVN除外)。我已经读过关于Perforce是一个稳定的,并且也在谷歌中使用(我希望在这里有些麻烦!!)。

请分享,指导和评论您的观点。我真的需要他们。

7 个答案:

答案 0 :(得分:24)

我恰好在一分钟之前正在阅读this blog post。关于git的可扩展性,这有点咆哮。

编辑:八年后,Git有Large File Storage(LFS),微软正在开源Git Virtual File System(GVFS),因此他们可以使用git开发Windows。

答案 1 :(得分:16)

首先,我不同意Git不适合非技术用户。是的,新手不会使用某些功能(例如git-send-email)。但也有像TortoiseGit这样的GUI,可以简化事情。

然而,我认为你正在接近错误的方式。基本上,您拥有的内容会经常变化,并且需要由Joe Bloggs非常轻松地编辑,并且编码器会更少地修改代码。传统的解决方案是使用真正的CMS(例如AlfrescoSugarCRMDrupal等或Wiki(MediaWikiMoinMon等)使用可选插件。请记住,wiki(以及大多数CMSes)允许以“用户友好”的方式对内容进行版本控制。

即使你必须保留你的内部代码,我认为你仍然想要解开内容,以便可以单独处理它们。一旦您将代码和内容分开,您的存储库将是更合理的大小。然后,你可以使用你想要的任何VCS(虽然我不确定你是对的,Git本身就不适合大型回购)。

答案 2 :(得分:10)

git不适用于大型存储库。这不是空间,而是文件的数量。请阅读我之前写过的关于此的blog article

根据我的经验,如果您想要一个可扩展,快速,集中的源代码控制系统,P4是可行的方法。

答案 3 :(得分:8)

SVN真的是一个糟糕的选择吗?

优点:

  • 可以处理大型存储库,例如许多Linux发行版使用它,也是Apache,Sourceforge
  • 拥有漂亮的GUI前端和TortoiseSVN,让您的Windows用户满意
  • 可以与Windows集成身份验证一起使用以保持管理员满意
  • 可以根据您的要求(svnadmin hotcopy或dump,svnsync,post-commit hooks)采用许多不同的备份策略,以帮助您轻松解决单点故障问题。

CONS:

  • 集中式VCS

免责声明:我从未使用Perforce,并且已经成为一名快乐的SVN管理员和用户约6年(自从第29页开始)

答案 4 :(得分:4)

有一个名为git-split的实用程序脚本可以删除git repo以提高效率。

答案 5 :(得分:2)

微软刚刚发布了 Git虚拟文件系统(GVFS)专门用于处理带有git的大型代码库。 More details here at msdn

另外Microsoft hosts the Windows source in a monstrous 300GB Git repository

我没有使用GVFS的经验。

答案 6 :(得分:-2)

我只使用git一次用于学校项目(使用Zend Framework的php站点)。

我们使用git,但老师需要在svn repo上发布最终版本。

比较结帐尺寸:

git checkout是svn checkout MB的一半大小。

我的两分钱。