English 中文(简体)
SVN 在现有仓库上创建主干目录
原标题:
  • 时间:2008-12-06 01:17:36
  •  标签:

我正在处理一个没有设定主干/分支/标签目录结构的项目 - 也就是,所有东西都在svn存储库的根目录下。

我想创建一个trunk目录,并将所有root目录中的内容移动到新的trunk目录中。

怎么做最好?

我考虑的第一件事是:

svn mkdir trunk
(for each file or directory that is not called trunk: )
svn mv FILEorDIR trunk/

但这实际上是删除了每个文件,然后再添加它。有更好的方法吗?

谢谢。

最佳回答

这与我过去的做法类似。您的解决方案实际上是将每个文件复制,然后删除原始文件。由于Subversion实现副本的方式,每个文件的历史记录都得以保存。

执行此操作后,您可以使用svn switch将现有的检出指向新位置。

问题回答

我碰到了完全相同的问题,并在查看了几个不同的网页(包括这个)后解决了它。这是我的解决方案:

注意:在开始之前,如果您计划使用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服务器上,一切都在主干文件夹中。 很棒!

但是我的存儲庫是60GB遠程服務器上的。我宁愿不要再次檢查。 svn switch將允許你將現有的工作副本指向新的trunk目錄,因此你可以繼續使用現有的副本進行工作。進入你工作副本的根文件夾,然後運行svn switch REPO_URL / trunk --ignore-ancestry。它應該說:當你將所有文件從根目錄移動到trunk目錄之後,修訂版本X。就這樣!也許為了保險起見進行一個SVN更新:)

如果您正在使用eclipse IDE和Subclipse进行SVN,则可以前往SVN中创建文件夹,并将所有文件/目录从根目录移动到主干目录,然后将ProjectName / trunk签出到您的eclipse工作区...

旧帖子,但我也遇到了同样的问题,所有的仓库都在根目录而不是在主干里。这在尝试简单的git svn clone命令时会出现问题。经过数小时的尝试和错误,最终发现很简单:

git svn克隆--username byname http://www.MySVNserver.com:81/repos/project1 --no-metadata --trunk=.

I did this myself serveral times and learned this: If you want to keep the history of the previous SVN root directory + keep all SVN properties (like ignore) you must do it the following way. Notice: I did it all with TortoiseSVN, because it is very easy this way. But you may have also success with the command line. Below you find a description to do it with CLI too.

不要忘记为每个操作添加适当的SVN消息,这样你以后就可以清楚地知道已完成了什么。

示例代码库:/svn/my_project

步骤:TortoiseSVN

  1. Rename current project directory /svn/my_project to trunk /svn/trunk
  2. Create a new directory /svn/my_project
  3. Move /svn/trunk to /svn/my_project
  4. Switch working copies to new path. Check the checkbox "Ingore ancestry".
  5. Relax

CLI的步骤(未经测试!):

  1. Copy the directory to a new directory /svn/trunk/
  2. Delete the old directory /svn/my_project/
  3. Copy the /svn/trunk/ directory to a new directory /svn/my_project/trunk
  4. Delete the /svn/trunk/ directory
  5. Switch working copies to new directory

您可能想要了解svnadmin工具。

老实说,我以前没有尝试过这个,你可能会从其他人那里得到答案,但你可以从类似的东西开始工作。

你应该能够初始化一个新仓库,在其中创建一个主干目录,然后将你以前的仓库倾倒到主干中。

这里提供使用svn + ssh方法在unix终端中创建svn根目录中的trunk文件夹的方法。在创建svn中的项目时,“projectname”是根“标识符”。

svn mkdir svn+ssh://username@host/projectname/trunk -m "Create the trunk folder"




相关问题
热门标签