3

我当前的存储库是:/var/www/svn/project .我在项目文件夹中的所有文件。它现在没有主干、分支、标签结构。现在我创建了带有主干、分支、标签的新项目“/var/www/svn/projectnew” 。我将“/var/www/svn/project”的转储加载到“/var/www/svn/projectnew/trunck”并在“/var/www/svn/projectnew/branches/site1”中创建了一个分支树干。

目前我的工作副本指向"/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' 不匹配。

帮我看看我该怎么做?

4

2 回答 2

8

原始回复:

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

编辑:

我误解了——你想用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
于 2012-07-19T11:30:38.257 回答
0

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

  1. “svn删除”存储库根目录中的所有内容
  2. 创建主干/分支/标签结构
  3. “svn copy”从修订版删除到主干之前的存储库内容
于 2012-07-20T08:39:45.107 回答