我使用颠覆创建新存储库的正常工作流程是创建一个新存储库,检查存储库根目录,创建我的分支标签和主干文件夹,并将我的初始文件放在主干中。然后我提交这个“初始导入”,从我的硬盘驱动器中删除签出的存储库并签出主干。然后我就可以开始工作了。
但是,在处理大型导入时,请考虑数百个兆,以及场外版本控制托管(基于 http),此初始导入可能需要相当长的时间才能提交。更糟糕的是,在提交之后,我需要重新检查这个巨大的树干。
有没有一种颠覆方式来使用主干的本地副本,而无需重新检查已经存在的数据?
我使用颠覆创建新存储库的正常工作流程是创建一个新存储库,检查存储库根目录,创建我的分支标签和主干文件夹,并将我的初始文件放在主干中。然后我提交这个“初始导入”,从我的硬盘驱动器中删除签出的存储库并签出主干。然后我就可以开始工作了。
但是,在处理大型导入时,请考虑数百个兆,以及场外版本控制托管(基于 http),此初始导入可能需要相当长的时间才能提交。更糟糕的是,在提交之后,我需要重新检查这个巨大的树干。
有没有一种颠覆方式来使用主干的本地副本,而无需重新检查已经存在的数据?
有 - 它被称为“就地导入”,它在此处的 Subversion 常见问题解答中有所介绍:
http://subversion.tigris.org/faq.html#in-place-import
您真正要做的是在存储库中创建一个新的空项目,检查本地文件夹的空项目 - 这会将您的文件夹变成工作副本 - 然后将所有(现有)文件添加到该“空”项目中,因此,当您执行 svn 提交时,它们会被添加到存储库中。
我同意“就地导入”程序,并且还使用 TTB 结构的脚本(两者都赞成)。
只是一个小提示:
如果您使用 http(s),则不应在一次提交中导入大量(数万个)文件,因为显示版本历史记录的时间取决于添加条目的数量。这种行为的原因是 apache 必须针对 svnaccess 文件对所有添加的路径进行身份验证(当然,仅当您启用了基于路径的授权时)。这可能会使您的存储库无法使用,因为所有文件都必须在 svn 日志上等待这个大版本。
您应该在目录级别划分大量导入
我通常在创建存储库后立即使用“svn mkdir”直接在服务器上创建主干/标签/分支。然后我可以检查空主干,将我的初始文件移动到该目录中,添加并提交它们,然后开始工作。
svn checkout --force 让您可以“通过”现有路径签出工作副本。它保留您的旧文件并添加仅在您的存储库中的文件。
For creating your repository: You can perform multiple mkdir commands to a repository in a single commit using the 'svnmucc' command that is available in most Subversion distributions (e.g. SlikSVN).
Type svnmucc without arguments for some help.
如果您已签出单个文件夹,请将文件复制到其中,运行svn add
并svn commit
; 您不需要删除文件并重新结帐。
使用适当的文件:一旦按照您的描述提交它们,它们就可以开始工作了。