Joh*_*zen 69 svn version-control data-migration
我的一位队友询问是否可以从一个SVN导出到另一个SVN,同时保留历史记录.
对我来说,这似乎是一个共同的要求.
那么:是否有可能在维护历史记录的同时在SVN存储库之间进行迁移?
重要的是要注意我们在Source上没有svnadmin访问权限,但我们确实在Destination上有访问权限.
如果这只是从源中检出每个修订版,并将其检入目的地,那么我们就可以了,只要有一个自动化过程.
编辑:我忘了提到目标仓库在Windows上.
mih*_*ihi 41
[ 编辑:下面的原始回复来自SVN 1.7之前,这是解决问题的最佳方法(虽然它不是主要的用例svnsync).在SVN 1.7客户端或更高版本中,有一个svnrdump工具可以更直接地执行您要实现的功能)]
使用svnsync将源同步到目标(需要对目标存储库的管理员访问权限,或者至少是添加挂钩的方法,但是没有对源存储库的特殊访问权限).如果目标已有修订,请将源同步到临时存储库,然后使用svn-merge-repos.pl合并两个本地存储库.
通常实现此目的的方法是svnadmin dump命令.如果您没有svnadmin访问权限,那么我会询问该人是否可以为您提供转储.这将使导入过程更加容易.
您目前在共享存储库中吗?这可能会使拥有存储库的人变得为您提供转储,因为它将是整个存储库的副本,而不仅仅是您的一部分.
小智 8
您可以使用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
Run Code Online (Sandbox Code Playgroud)
参考:http://blog.neutrino.es/2012/git-copy-a-file-or-directory-from-another-repository-preserving-history/
| 归档时间: |
|
| 查看次数: |
76402 次 |
| 最近记录: |