4

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

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

4

4 回答 4

6

在为包含大量文件的新存储库播种时,我强烈建议使用来自服务器svn import的命令,而不是从远程计算机提交文件。最简单的方法是:

  1. 将代码捆绑到一个存档中(使用 gzip、7zip 等)
  2. 将该存档传输到服务器(使用 rsync、scp 等)
  3. 远程登录服务器
  4. 将存档解压缩到临时目录
  5. 用于svn import播种存储库

在大多数情况下,这将被证明要快得多。通过网络传输单个大型档案通常比传输许多较小的文件要快得多,即使您不考虑压缩也是如此。使用 Windows 的性能差异要大得多。某些版本的 Subversion 有一个 Windows 错误,它会导致每个文件打开和关闭单独的网络连接,与使用单个网络连接进行整个操作相比,这会增加大量开销。

于 2012-08-09T17:18:35.723 回答
2

在某些情况下,较小的提交可能很重要:

  • repo 由 Apache 的 mod_dav_svn 通过 http 提供服务
  • 基于路径的授权正在使用中
  • SVNPathAuthz short_circuit未设置
于 2013-02-09T12:47:58.890 回答
1

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

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

于 2012-08-09T14:39:27.397 回答
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

于 2012-08-09T14:39:35.717 回答