我在assembla创建了一个私有项目和一个存储库.
但我犯了一个错误,就是不遵循子目录的惯例.
所以,现在repo根目录中有源文件.
如何将它们移动到/ trunk subdir?
阅读这个问题,我看到我必须有shell访问权限才能运行svnadmin命令.
我试过绕过它们,并成功只获得了一个转储并创建一个新的回购.
我陷入了需要将转储加载到/ trunk目录的步骤 - 我只能将它再次加载到root中.
我认为这svn move不是一个好的选择,因为可能有一个案例想要回到旧版本,但由于我处于项目开发的早期阶段,我不太可能想要这样做.
我应该试试svn move吗?如果是这样,我该怎么做?svn move ./ ./trunk/会做?
你有三个选择.
使用svn copy ^/ ^/trunk您的工作副本(^ /是存储库根目录的简写),然后使用根目录中的svn delete每个文件.这将保留您在存储库根目录中放置的属性,例如svn:ignore.然后,您可以使用svn switch
将签出移动到trunk目录.如果您想在执行此操作之前检查历史记录,则必须在旧版本中检出存储库的根目录,这可能不方便(这是您对可能不想使用移动的原因的评论).此方法可能会失败,具体取决于服务器端的httpd版本(由于Apache httpd中已修复的错误).此问题记录在此问题中:https://stackoverflow.com/questions/16019001/svn-create-top-level-directory-and-move-everything-from-root?rq = 1
创建一个新的trunk目录,然后svn move在存储库根目录中的每个文件/目录上使用.这不会保留根目录中的任何属性,但会为您节省额外的命令.然后,您可以使用svn switch将签出移动到trunk目录,但由于新目录与--ignore-ancesstry调用switch时必须使用的新目录无关.如果您想在执行此操作之前检查历史记录,则必须在旧版本中检出存储库的根目录,这可能不方便(这是您对可能不想使用移动的原因的评论).这个方法记录在这个现有问题中:如何在没有中继的现有svn repo中创建trunk目录,并将所有文件移动到新的trunk?
转储您的存储库.使用svnadmin加载存储库时,请确保使用--ignore-uuid和--parent-dir trunk.现有的结帐将不再可用,您必须创建新的结帐.您将能够在历史中轻松移动,svn update -r $REV
因为所有历史记录都将在您的主干中(除了您可能创建的任何分支之外).这个问题记录在这个问题中:是否有一种干净的方式来移动/到/ trunk?
你使用哪个真的取决于你.如你所见,有一些权衡.前两个并没有那么不同.第三个更痛苦.我想这取决于是否有其他开发人员通过打破他们的结账会给您带来不便.如果只是你,那么我会继续第3个选项.