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



我当前的存储库是:/var/www/svn/project.我在项目文件夹中的所有文件。到目前为止,它还没有trunk、branches和tags结构。现在我已经创建了一个新的项目,名为"/var/www/svn/projectnew",带有trunk、branches和标记。我获取了"/var/www/svn/project"的Dump,并加载到"/var/www/svn/projectnew/ttrunk",并在中从trunk创建了一个分支。

当前我的工作副本指向"/var/www/svn/project"。我试图将我的工作副本从"/var/www/svn/project"切换到"/var/www-svn/projectnewbranches/site1",但它说,

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

帮我怎么做?

原始回复:

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

编辑:

我误解了--您想要用trunk/branch/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. "svn-delete"存储库根目录中的所有内容
  2. 创建主干/分支/标记结构
  3. "svn副本"存储库内容从修订版删除到主干

最新更新