使用subversion与一个非常大的网站

时间:2008-10-06 15:37:05

标签: svn

我是一个颠覆性的大粉丝,我即将接管一个大型网站(约200mb)我已经从原来的500MB大小缩减了主网站!

我要将此站点检入新的subversion存储库。问题是,我的subversion存储库是远程托管的,这样另一位同事也可以在网站上工作。

每次我必须对网站进行更新时,我都担心必须办理登机手续才能办理登机手续。

发展非常活跃,因此会有很多事情在不断变化。

假设我把所有东西都检查好了,subversion会确保每次我结束新的结账时只下载新的/修改过的文件/文件夹,还是每次都要等待200MB的下载?

8 个答案:

答案 0 :(得分:12)

除非我在第一次检入/退出后出错,否则只处理.diff文件,因此您只需要下载/上传更改(只要文件是ASCII,整个文件只是已更改的行) )客户端/服务器上的文件之间存在。

第一次comit /更新将是可怕的。

答案 1 :(得分:5)

要记住的另一件事是,您可以复制已签出的文件夹,但它们仍然是有效的工作副本:

svn checkout http://server/path/to/repos my_working_copy
cp -a my_working_copy another_working_copy
svn status another_working_copy

如果您需要多份工作副本,这可以节省大量时间/带宽。它还可以更快地进行分支和切换

svn checkout http://server/path/to/trunk my_trunk
cp -a my_trunk my_branch
cd my_branch
svn switch http://server/path/to/branches/stable

正如其他回复中所指出的那样,您只需要下载主干和分支之间的差异。

答案 2 :(得分:1)

如前所述,提交/更新仅传输差异并且非常快。结账更耗时 - 使用svn开关快速跳转分支。

此外,HTTP / WEBDAV传输协议效率不高,尤其是在处理大量小文件时(例如源代码:)) - 您可以考虑使用svnserve代替。

对于Subversion来说200 MB的数据应该不会太麻烦 - 但是如果磁盘空间和高效的数据传输确实是一个问题,你也可以查看git或mercurial。特别是git效率更高,但你可能需要更多的时间来围绕分布式源代码控制的概念,你现在必须没有花哨的GUI工具(命令行工具已经变得更多)最近可用的。)

此链接也可能很有趣:Website Auto Update

答案 3 :(得分:1)

我运行的网站大约5 GB或更多。 (以及为每个构建更改许多文件的构建系统)。因此,delta很容易(大约200MB)到远程站点。 SVN完美地处理它。它还取决于你的apache有多好(如果你使用的是apache)。

答案 4 :(得分:0)

如果经常进行大量更改,为什么不让cron条目进行subversion更新以使本地副本保持最新状态,例如每6小时更新一次?

这样你就会得到最近的差异(如果没有在几小时内更新,则没有),而不是整个shebang。

编辑:为了澄清,如果发生了很多变化,但一次只有几页,任何给定的提交/更新都会很小;如果它们是针对所有/大部分网站制作的,那么经常保持最新状态将非常重要。

答案 5 :(得分:0)

它只会在您更新或评论时发送更改。你应该没事。

答案 6 :(得分:0)

Subversion只获取差异/更新,因此您只有在第一次获得时才进行完整的结帐。稍后更新您只会得到更改。

为了协助合并,最好有两个工作副本 - 一个指向主代码行,一个指向您的任务分支。这样你就不必将工作副本从一个Subversion代码行转换到另一个代码行 - 这可能很昂贵,比如先查看代码。

答案 7 :(得分:0)

它只会下载在那段时间之间触摸过的文件。但是,如果你要分支(你应该如此)那么你可能会等待很长时间。

实际需要多少项目?我怀疑有200亿的来源。如果很多数据是非常不频繁变化的资源(即图像),那么您可能会考虑将存储库拆分为较小的项目。