27

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

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

Git 之所以出现是有原因的——它是开源和免费的,易于分支和合并,它不是集中式的,因此没有单点故障。

但是在网络上进行了一些初步研究之后,我发现了一些适用于我们的应用程序的令人失望的事实——在像我们这样的大型系统上使用 Git 是痛苦的(签出、克隆、合并、推送、拉取)并且命令很复杂(“极客”会更合适)对于 DVCS 无知且主要是 Windows 用户的开发人员群。

Git 没有固定的思维模式,但如果我必须采用集中式方法(在最糟糕的情况下),那么应该采取什么方式(CVS 和 SVN 分开)。我读过 Perforce 是一个稳定的版本,并且在 Google 中也有使用(我希望这里有一些粗鲁!!)。

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

4

7 回答 7

26

我恰好在一分钟前正在阅读这篇博文。对 git 的可扩展性有点咆哮。

编辑:八年后,Git 有了大文件存储(LFS),微软正在开源Git 虚拟文件系统(GVFS),这样他们就可以使用 git 来开发 Windows。

于 2009-06-16T06:12:12.763 回答
16

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

但是,我认为您以错误的方式处理事情。基本上,您的内容会经常更改并且需要由 Joe Bloggs 非常容易地编辑,而代码将不经常被编码人员修改。传统的解决方案是使用带有可选插件的真正的 CMS(例如AlfrescoSugarCRMDrupal等或 Wiki(MediaWikiMoinMon等)。请记住,wiki(和大多数 CMS)允许对内容,以“用户友好”的方式。

即使您必须保留您的内部代码,我认为您仍然应该想要提取内容,以便将它们分开处理。将代码和内容分开后,您的存储库将具有更合理的大小。然后,您可以使用任何您想要的 VCS(尽管我不确定您是否正确,Git 本质上不适合大型存储库)。

于 2009-06-16T05:54:40.407 回答
10

git 不适用于大型存储库。这不是空间,而是文件的数量。请阅读我不久前写的关于此的博客文章。

根据我的经验,如果您想要一个可扩展、快速、集中的源代码控制系统,P4是您的最佳选择。

于 2009-06-17T21:37:27.223 回答
8

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

优点:

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

缺点:

  • 集中式 VCS

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

于 2009-06-16T06:47:09.883 回答
4

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

于 2009-11-19T17:03:28.210 回答
2

微软刚刚发布了Git 虚拟文件系统 (GVFS),专门用于使用 git 处理大型代码库。更多细节在这里 msdn

微软还将Windows 源代码托管在一个巨大的 300GB Git 存储库中

我没有任何使用 GVFS 的经验。

于 2017-02-07T20:56:38.470 回答
-2

我在一个学校项目(带有 Zend 框架的 php 站点)中只使用了一次 git。

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

比较结帐大小:

git checkout 是 svn checkout 大小的一半。

我的两分钱。

于 2009-06-16T05:51:06.573 回答