如何更改SVN存储库以使用trunk / branches / tags结构并将工作副本切换到它

时间:2012-07-19 05:42:09

标签: svn

我当前的存储库是: / var / www / svn / project 。所有项目文件夹中的文件。目前没有主干,分支,标签结构。现在我用“/ var / www / svn / projectnew”创建了新项目,包括trunk,branches,tags。我把“/ var / www / svn / project”转储并加载到“/ var / www / svn / projectnew / trunck”并在<中创建了一个分支strong>“/ var / www / svn / projectnew / branches / site1”来自trunk。

目前我的工作副本指向“/ var / www / svn / project”。我试图将我的工作副本从“/ var / www / svn / project”切换到“/ var / www / svn / projectnew / branches / site1”,但它说,

存储库UUID'd3f06af7-c344-2d45-b1bd-7799e0e99d7a'与预期的UID'f5f9f6ac-3f50-7e4d-a9d4-0bc9a9b443b8'不匹配。

请教我如何使用它?

2 个答案:

答案 0 :(得分:7)

原始回复:

这里有两件事你可以做 - 一个是将文件db/uuid从旧服务器复制到新服务器,如果你只是将svn存储库转移到新机器而你打算关闭旧的。另一件事取决于您正在使用的SVN版本。如果您使用的是1.7则使用svn relocate(请参阅docs),或者对于较旧的客户端,请使用适用于此方案的--relocate命令的svn switch选项。 / p>

编辑:

我误解了 - 您希望使用trunk / branches / tags结构重新创建存储库。在这种情况下,转储和重新加载项目将无济于事,因为它不会神奇地创建新结构 - 它只会重新创建您已有的结构。您可以轻松地在存储库浏览器中创建新结构(如果您正在使用TortoiseSVN)或直接从您的工作副本创建。如果您是从命令行执行此操作,则语法将类似于此,具体取决于确切的目录结构。将http:.../替换为svn服务器的地址。哦,首先备份存储库!

# check out top-level directory
svn co http://.../
# make new trunk dir and move all contents to it -- note spelling of 'trunk'
mkdir trunk
svn add trunk
svn mv * trunk

# now create tags and branches
mkdir tags
mkdir branches
svn add trunk tags branches

svn commit -m "Created new repository layout"

现在,您需要做的就是切换现有的工作副本:

svn switch http://.../project  http://.../trunk/project

答案 1 :(得分:0)

另一种方法是保持历史不变,并从新版本开始切换到新结构。在这种情况下,您不需要使用存储库进行转储/加载操作。

  1. “svn删除”来自存储库根目录的所有内容
  2. 创建主干/分支/标签结构
  3. “svn copy”存储库内容从修订版删除到trunk之前