svn:如何将大型提交拆分成几个小提交?

时间:2012-08-09 14:28:57

标签: svn commit subversive

我为项目创建了一个新的存储库,并为它添加了一些现有的代码库(llvm)。这个代码库大约有18,000个文件,这使我的初始提交需要很多时间。 (阅读5小时)

有没有办法将这个巨大的提交分成几个较小的提交?这样它可以更快地完成?

4 个答案:

答案 0 :(得分:5)

当为一个包含大量文件的新存储库播种时,我高度建议使用服务器中的svn import命令,而不是提交来自远程机器。最简单的方法是:

  1. 将代码捆绑到一个存档中(使用gzip,7zip等)
  2. 将该存档传输到服务器(使用rsync,scp等)
  3. 远程登录服务器
  4. 将存档解压缩到临时目录
  5. 使用svn import为存储库设定种子
  6. 在大多数情况下,这将证明明显更快。通过网络传输单个大型存档通常比传输许多较小的文件快得多,即使您不考虑压缩也是如此。使用Windows,性能差异要大得多。某些版本的Subversion存在Windows错误,导致每个文件打开和关闭单独的网络连接,与使用单个网络连接进行整个操作相比,这会增加大量开销。

答案 1 :(得分:2)

有一种情况,较小的提交可能很重要:

答案 2 :(得分:1)

您可以通过指定单个文件来拆分提交。但是,这不太可能使它变得更快:您仍然必须通过网络移动文件,并将它们写入磁盘。实际上,它很可能会变慢,因为Subversion需要在更新中的某个时刻锁定存储库(以便它可以分配唯一的修订版号)。

我认为你最好在本地磁盘上创建存储库,在那里进行提交(这会消除网络开销),然后将存储库推送到最终目的地。

答案 3 :(得分:1)

使用较小的块可能不会导致花费的总时间减少。

在考虑流程启动,拆卸和通信开销时,与单个大型提交相比,几个较小的提交可能需要花费更多的总时间

您没有说明正在使用哪个操作系统,但是如何安装SVN Tortoise和挑选每个提交所需的文件数量呢?无论如何,SVN是基于目录的,因此如果您的18,000个文件位于不同的目录中,那么无论如何都要单独提交每个目录。

以下是一些链接,以防使用命令行是一个选项:

http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.add.html

http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.commit.html

相关问题