SVN更改存储库的位置

SVN更改存储库的位置,svn,Svn,我的问题是:我在一个项目下创建了三个独立的回购协议。回购协议是“分支机构”、“主干”和“标签” 所以我知道我需要删除它们,并拥有一个存储库。我需要把箱子下面的东西都搬到这个项目上去。所以我试着远程做这个。首先我签出了项目,然后我删除了“分支”和“标记”,它们都是空的 我做了一个svn删除,然后提交。下一步我想摆脱主干,但它已经保存了文件。我所做的就是把这些文件复制到上面的目录中: cp -r trunk/* . 现在我删除了主干: svn delete trunk/ svn merge -

我的问题是:我在一个项目下创建了三个独立的回购协议。回购协议是“分支机构”、“主干”和“标签”

所以我知道我需要删除它们,并拥有一个存储库。我需要把箱子下面的东西都搬到这个项目上去。所以我试着远程做这个。首先我签出了项目,然后我删除了“分支”和“标记”,它们都是空的

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

cp -r trunk/* . 
现在我删除了主干:

svn delete trunk/
svn merge -rHEAD:PREV .
svn ci -m "Trunk restored"
svn del trunk
svn ci -m "Trunk deleted"
好的,在我完成提交后,现在项目是空的。但我仍然有那些重要的文件是我从后备箱里抄出来的。我想把它们放在远程服务器上的项目下,这样我就只有一个存储库保存这些文件。但这些本地文件仍然认为它们属于主干存储库,该存储库已被删除。于是我发布了这个命令,我希望它能解决这些问题:

svn switch --relocate \
svn+ssh://fkim@.../home/fkim/svn/aetv/trunk \
svn+ssh://fkim@.../home/fkim/svn/aetv 
但这并没有改变这些文件的任何内容。当我查看svn状态时,我看到它们旁边有“?”,如果我尝试添加它们,我会被告知它们已经处于版本控制之下。我该怎么办?我需要把它们都放在远程服务器上的项目下


请注意,我在Linux上运行一切。这是我在命令行中所做的工作

重新定位用于使工作副本指向另一个URL,该URL也保存此工作副本的repo(即,当SVN服务器发生更改,而您不想删除工作副本并再次签出时)

您似乎想将新文件重新导入到空的repo中。除非您的新文件仍然“标记”为工作副本的一部分


首先签出空的trunk dir。这将创建一个空的工作副本。将旧的工作副本复制到新的工作副本,但删除所有.svn目录。这可以使用export命令完成。添加所有文件并提交将其导入repo。

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

手动修改文件夹结构(受SVN控制)是非常危险的

现在,您必须执行以下步骤:

  • 再次签出当前项目(不要复制其中的任何内容!)

  • 恢复主干:

    svn delete trunk/
    
    svn merge -rHEAD:PREV .
    svn ci -m "Trunk restored"
    
    svn del trunk
    svn ci -m "Trunk deleted"
    
  • 移动主干内容:

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

    svn delete trunk/
    
    svn merge -rHEAD:PREV .
    svn ci -m "Trunk restored"
    
    svn del trunk
    svn ci -m "Trunk deleted"
    

  • 这不是一个很好的解决方案,因为我们将丢失这些文件的所有历史记录。我同意,但我的印象是,这正是OP想要的。如果他想从一个回购协议迁移到另一个回购协议,他需要导出源回购协议并导入到目标回购协议中。但这不是他所做的。对我来说,这似乎是最好的解决方案,因为这些文件没有历史记录。我刚刚添加了它们,所以重新开始将它们添加到空回购协议正是我想要的。谢谢