我已经为一个项目创建了一个新的存储库,并且正在向它添加一些现有的代码库 (llvm)。这个代码库大约有 18,000 个文件,这使得我的初始提交需要很多时间。(阅读 5 小时)
有没有办法将这个巨大的提交分成几个较小的提交?这样它可以更快地完成?
我已经为一个项目创建了一个新的存储库,并且正在向它添加一些现有的代码库 (llvm)。这个代码库大约有 18,000 个文件,这使得我的初始提交需要很多时间。(阅读 5 小时)
有没有办法将这个巨大的提交分成几个较小的提交?这样它可以更快地完成?
在为包含大量文件的新存储库播种时,我强烈建议使用来自服务器svn import
的命令,而不是从远程计算机提交文件。最简单的方法是:
svn import
播种存储库在大多数情况下,这将被证明要快得多。通过网络传输单个大型档案通常比传输许多较小的文件要快得多,即使您不考虑压缩也是如此。使用 Windows 的性能差异要大得多。某些版本的 Subversion 有一个 Windows 错误,它会导致每个文件打开和关闭单独的网络连接,与使用单个网络连接进行整个操作相比,这会增加大量开销。
在某些情况下,较小的提交可能很重要:
SVNPathAuthz short_circuit
未设置您可以通过指定单个文件来拆分提交。但是,这不太可能让它更快:您仍然必须通过网络移动文件,并将它们写入磁盘。事实上,它很可能会变慢,因为 Subversion 需要在更新的某个时间点锁定存储库(以便它可以分配一个唯一的修订号)。
我认为您最好在本地磁盘上创建存储库,在那里进行提交(这消除了网络开销),然后将存储库推送到最终目的地。
使用较小的块可能不会导致花费的总时间减少。
考虑到进程启动、拆卸和通信开销,与单个大型提交相比,几个较小的提交可能会花费更多的总时间。
您没有说明正在使用哪个操作系统,但是如何安装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