SVN更改存储库的位置

时间:2011-08-04 22:27:58

标签: svn

这是我的问题:我在一个项目下创建了三个单独的回购。回购是“分支”和“主干”和“标签”。

所以我知道我需要删除它们并拥有一个存储库。我需要将干线下的所有东西都移到项目中。所以我试图远程做到这一点。首先我检查了项目,然后删除了“branches”和“tags”,两者都是空的。

我做了一个svn删除然后提交。接下来我想摆脱主干,但它已经保存了文件。所以我做的是将这些文件复制到它上面的目录中:

cp -r trunk/* . 

现在我删除了主干:

svn delete trunk/

好的,所以现在我提交后项目是空的。但我仍然有那些我从主干中复制出来的重要文件。我想将它们放在远程服务器上的项目下,所以我只有一个存储库来保存这些文件。但是那些本地文件仍然认为它们属于已删除的主干存储库。所以我随后发出了这个命令,我希望能解决这个问题:

svn switch --relocate \
svn+ssh://fkim@.../home/fkim/svn/aetv/trunk \
svn+ssh://fkim@.../home/fkim/svn/aetv 

但这并没有改变这些文件的任何内容。当我做svn状态时,我看到他们有'?'在它们旁边,如果我尝试添加它们,我被告知它们已经受版本控制。我该怎么办?我需要将它们全部放在远程服务器上的项目下。

请注意我在Linux上运行所有内容。这是我在命令行上所做的工作。

3 个答案:

答案 0 :(得分:2)

relocate用于将工作副本指向另一个URL,该URL还包含此工作副本的repo(即当SVN服务器更改并且您不想删除工作副本并再次检出时)。

您似乎想要将新文件重新导入空仓库。除了您的新文件仍被“标记”为工作副本的一部分。

首先检查空主干目录。这将创建一个空的工作副本。将旧工作副本复制到新工作副本,但删除所有.svn目录。这可以使用export命令完成。添加所有文件并提交以将它们导入回购。

答案 1 :(得分:1)

手动修改文件夹结构(在SVN控制下)非常危险。

现在你必须做下一步:

  1. 再次检查您当前的项目(不要复制其中的任何内容!)

    svn co http://your/project/svn/
    
  2. 恢复主干:

    svn merge -rHEAD:PREV .
    svn ci -m "Trunk restored"
    
  3. 移动主干内容:

    svn mv trunk/* .
    svn ci -m "Trunk contents moved up"
    
  4. 删除主干:

    svn del trunk
    svn ci -m "Trunk deleted"
    

答案 2 :(得分:0)

在您的本地工作文件夹中,使用TortoiseSVN选择“导出”来修剪所有svn内容。然后将本地文件夹提交到另一个存储库。这可以解决你的问题吗?