这是我的问题:我在一个项目下创建了三个单独的回购。回购是“分支”和“主干”和“标签”。
所以我知道我需要删除它们并拥有一个存储库。我需要将干线下的所有东西都移到项目中。所以我试图远程做到这一点。首先我检查了项目,然后删除了“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上运行所有内容。这是我在命令行上所做的工作。
答案 0 :(得分:2)
relocate用于将工作副本指向另一个URL,该URL还包含此工作副本的repo(即当SVN服务器更改并且您不想删除工作副本并再次检出时)。
您似乎想要将新文件重新导入空仓库。除了您的新文件仍被“标记”为工作副本的一部分。
首先检查空主干目录。这将创建一个空的工作副本。将旧工作副本复制到新工作副本,但删除所有.svn目录。这可以使用export命令完成。添加所有文件并提交以将它们导入回购。
答案 1 :(得分:1)
手动修改文件夹结构(在SVN控制下)非常危险。
现在你必须做下一步:
再次检查您当前的项目(不要复制其中的任何内容!)
svn co http://your/project/svn/
恢复主干:
svn merge -rHEAD:PREV .
svn ci -m "Trunk restored"
移动主干内容:
svn mv trunk/* .
svn ci -m "Trunk contents moved up"
删除主干:
svn del trunk
svn ci -m "Trunk deleted"
答案 2 :(得分:0)
在您的本地工作文件夹中,使用TortoiseSVN选择“导出”来修剪所有svn内容。然后将本地文件夹提交到另一个存储库。这可以解决你的问题吗?