Subversion大型回购导入/签出



我创建一个带有subversion的新存储库的正常工作流程是创建一个新的repo,签出repo根,创建我的分支标记和trunk文件夹,并将我的初始文件放在trunk中。然后我提交这个"初始导入",从我的硬盘上删除已签出的转发,并对主干进行签出。然后我就可以开始工作了。

然而,当处理大型导入时,考虑数百个meg,以及非现场版本控制托管(基于http),这种初始导入可能需要相当长的时间才能提交。更糟糕的是,在承诺之后,我需要再次检查这个巨大的行李箱。

subversion有没有一种方法可以使用trunk的本地副本,而不需要重新检查已经存在的数据?

有-它被称为"就地导入",在这里的Subversion常见问题解答中有介绍:

http://subversion.tigris.org/faq.html#in-放置导入

你真正要做的是在存储库中创建一个新的空项目,签出空项目——你的本地文件夹——这会将你的文件夹变成一个工作副本——然后将你的所有(现有)文件添加到这个"空"项目中,这样当你执行svn提交时,它们就会添加到存储库中。

我同意"就地导入"过程,也同意使用TTB结构的脚本(两者都赞成)。

只是一个小小的提示:

如果使用http,则不应在一次提交中导入大量(成千上万)文件,因为显示版本历史的时间按添加的条目数缩放。这种行为的原因是apache必须对svnaccess文件中添加的所有路径进行身份验证(当然,只有在启用了基于路径的授权的情况下)。这可能会使您的存储库无法使用,因为所有文件都必须在svn日志上等待这个大版本的

您应该在目录级别上划分大量导入

我通常在创建存储库后立即使用"svn-mkdir"直接在服务器上创建trunk/tags/branches。然后我可以检查出空的主干,将我的初始文件移动到该目录中,添加并提交它们,然后开始工作。

svn-checkout--force允许您在现有路径上签出工作副本。它保留您的旧文件,并添加仅在存储库中的文件。

用于创建存储库:您可以使用大多数Subversion发行版(例如SlikSVN)中提供的"svnmucc"命令,在一次提交中对存储库执行多个mkdir命令。

键入不带参数的svnmucc以获得一些帮助。

如果您签出了一个文件夹,并将文件复制到其中,请运行svn addsvn commit;您不需要删除文件并重新签出。

使用适当的文件:一旦按照您的描述提交了这些文件,就可以对它们进行处理了。

最新更新