我的一个队友已经询问是否可以从一个SVN导出到另一个,同时保持历史。SVN副本历史
对我来说,这似乎是这将是一个普遍的要求。
所以:是否有可能迁移之间SVN库中的所有,同时维持历史?
需要注意的是,我们没有在源svnadmin的访问是非常重要的,但我们确实有在目标。
如果这归结为只是检查出从源头每次修订,并在目的地检查它,我们将与该行,只要有用于自动操作过程。
编辑:我忘了提及目标回购在Windows上。
我的一个队友已经询问是否可以从一个SVN导出到另一个,同时保持历史。SVN副本历史
对我来说,这似乎是这将是一个普遍的要求。
所以:是否有可能迁移之间SVN库中的所有,同时维持历史?
需要注意的是,我们没有在源svnadmin的访问是非常重要的,但我们确实有在目标。
如果这归结为只是检查出从源头每次修订,并在目的地检查它,我们将与该行,只要有用于自动操作过程。
编辑:我忘了提及目标回购在Windows上。
[编辑:以下原始回复来自SVN 1.7之前,并且这是解决问题的最佳方式(尽管它不是svnsync
的主要用例)。在SVN 1.7客户端或更高版本存在svnrdump
工具,更直接地做你想达到什么目的)
使用svnsync到源同步到目的地(需要到目标资源库,或至少管理员权限一种添加挂钩的方式,但没有特殊访问到源存储库)。如果目标已有修订,请将源同步到临时存储库,然后使用svn-merge-repos.pl
合并两个本地存储库。
这看起来非常接近我的要求。 – 2009-06-10 17:04:45
是不是可以做一个简单的`svnsync TOURL FROMURL`? – 2009-06-11 04:39:44
命令行选项不同,请参阅http://linux.die.net/man/1/svnsync。 你必须先创建一个(也许是空的)pre-revprop-change钩子(或者如果你是在Windows上的话,则是pre-revprop-change.bat)。 – mihi 2009-06-11 18:33:23
的方式来实现通常这是svnadmin dump
command。如果你没有访问svnadmin,那么我会询问那些能够提供转储的人。这将使导入过程变得更容易。
您目前在共享存储库中吗?这可能会让拥有存储库的人给你一个转储,因为它将是整个存储库的副本,而不仅仅是它的一部分。
我有类似的需求(因此访问此页),并最终编写自己的程序来完成这项工作。认为该工具可能对仍在寻找解决方案的其他人有用:
如果有人有兴趣,看看here
如果你只需要以饱满变更版本控制回购,可以使用bzr的bzr与-svn的插件。 当你签出一个SVN回购时,一切都会同步。
您可以使用git-svn(或可能是其他SCM系统)来完成此任务。
的步骤将是:
1. Get a git svn clone of each repository:
git svn clone <SVN-REPOSITORY-FROM> source-repo
git svn clone <SVN-REPOSITORY-TO> dest-repo
2. Create patches to be imported:
cd source-repo/
export commitFrom=`git log --pretty=%H | tail -1`
git format-patch -o /tmp/mergepatchs ${commitFrom}..HEAD .
3. Import the patches
cd dest-repo/
git am /tmp/mergepatchs/*.patch
你可以问任何人有权利的svnadmin做出口的为您服务。 – Glen 2009-06-10 16:54:35