kak*_*kyo 0 svn version-control
我有一个常规的svn repo与这个文件夹结构:
conf
dav
db
hooks
locks
Run Code Online (Sandbox Code Playgroud)
我怎样才能将它迁移到
trunk
branches
tags
Run Code Online (Sandbox Code Playgroud)
结构没有失去我的历史?
你有两件事困惑.第一个是存储库的代表.第二个是存储库的物理结构.无论您做什么,您的存储库将始终具有该物理结构.
要真正理解您的问题,您需要向我们展示代表性结构.为此,请运行以下命令:
$ svn ls $REPO
Run Code Online (Sandbox Code Playgroud)
$REPO您的存储库的根URL 在哪里.例如,您如何结帐项目?像这样?
$ svn checkout http://svn.firstvegibankcorp.com/svn/project
Run Code Online (Sandbox Code Playgroud)
然后$REPO会http://svn.firstvegibankcorp.com/svn.
幸运的是,你总是可以svn mv用来移动东西.我会将确切的命令附加到我的答案中,但我不知道你当前的布局.
branches,tags,并trunk在所有目录假设人们只是在没有设置的情况下检入文件:
$ shop -s extglob # Assuming BASH. No need to do this with Kornshell
$ svn co --depth=immediates $REPO workdir # Checks out first level of the directories
# cd workdir
$ svn mkdir trunk # Create the "trunk" directory
$ svn mv !(trunk) trunk # Moves all files and directories to under trunk
# svn mkdir branches tags # Make the rest of the structure
$ svn commit -m"Creating basic directory structure. # That's it!
Run Code Online (Sandbox Code Playgroud)
另一种方法是转储和加载物理存储库.您将存储库关闭,创建转储,然后使用加载创建新版本.您可以指定--parent-dir参数:
$ ssh $SVN_REPO_SYSTEM
$ cd /opt/svn_repos
$ svnadmin create new_repo
$ svnadmin dump repo | svnadmin load --parent-dir trunk new_repo
Run Code Online (Sandbox Code Playgroud)
这将转储您的物理存储库,然后立即将其加载到新的存储库.所有历史和修订都将被保留.但是,它们不在存储库表示结构的根目录下,而是位于trunk目录下.用户必须使用svn switch切换其本地工作目录的URL以匹配新的存储库结构.