我为项目创建了一个新的存储库,并为它添加了一些现有的代码库(llvm)。这个代码库大约有18,000个文件,这使我的初始提交需要很多时间。 (阅读5小时)
有没有办法将这个巨大的提交分成几个较小的提交?这样它可以更快地完成?
答案 0 :(得分:5)
当为一个包含大量文件的新存储库播种时,我高度建议使用服务器中的svn import
命令,而不是提交来自远程机器。最简单的方法是:
svn import
为存储库设定种子在大多数情况下,这将证明明显更快。通过网络传输单个大型存档通常比传输许多较小的文件快得多,即使您不考虑压缩也是如此。使用Windows,性能差异要大得多。某些版本的Subversion存在Windows错误,导致每个文件打开和关闭单独的网络连接,与使用单个网络连接进行整个操作相比,这会增加大量开销。
答案 1 :(得分:2)
有一种情况,较小的提交可能很重要:
SVNPathAuthz short_circuit
未设置答案 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