我正在开发一个没有trunk/branches/tags目录结构的项目 - 即.一切都在svn回购的根源.
我想创建一个trunk目录并在根目录中,并将根目录中的所有内容移动到新的trunk目录中.
做这个的最好方式是什么?
我考虑的第一件事是
svn mkdir trunk (for each file or directory that is not called trunk: ) svn mv FILEorDIR trunk/
但这有效地删除了每个文件,然后再次添加.有没有更好的办法?
谢谢.
我有完全相同的问题,并通过浏览几个不同的页面(包括这一个)解决了它.这是我的解决方案:
注意:在开始之前,如果您打算使用svn switch
以保留工作副本并避免再次检出存储库,则最好确保您的工作副本是最新的并且没有未提交的更改.
随着解决方案......
//REPO_URL = The URL for the repo on the SVN server. //In my case it was https://IP_ADDRESS:PORT/svn/my_repo //Make the trunk dir in the root of your SVN repo svn mkdir REPO_URL/trunk -m "making trunk dir" //Move everything from your root dir to your new trunk dir svn move REPO_URL/A_FOLDER REPO_URL/trunk/A_FOLDER -m "moving folders to trunk" svn move REPO_URL/ANOTHER_FOLDER REPO_URL/trunk/ANOTHER_FOLDER -m "blah" svn move REPO_URL/A_FILE.TXT REPO_URL/trunk/A_FILE.TXT -m "moving files to trunk" //Keep going until you've moved everything from your root dir to the trunk dir...
所以现在,在你的SVN服务器上,一切都在trunk文件夹中.甜!
但是我的回购是60GB并且在远程服务器上.我宁愿不再检查一下.svn switch
将允许您将现有的工作副本指向新trunk
目录,以便继续使用您拥有的副本.进入工作副本的根文件夹并运行svn switch REPO_URL/trunk --ignore-ancestry
.在将所有文件从根目录移动到trunk目录后,应该说明修订在At revision X
哪里X
.而已!也许做一个SVN更新的好措施:)
这与我过去的做法类似.您的解决方案实际上会复制每个文件,然后删除原始文件.由于Subversion实现副本的方式,因此保留了每个文件的历史记录.
执行此操作后,您可以使用指向新位置的现有结帐svn switch
.