2013-03-14 95 views
0

我想将subversion(svn)存储库转换为mercurial(hg)。在过去的svn仓库项目文件夹多次重命名。下面的命令是在SVN项目转换为汞柱部分成功:将subversion版本库与多个重命名转换为mercurial存储库

hg convert svn://localhost/project project-hg 

这从最新修订回版本在该项目的svn文件夹的最后改名转换。此时,转换后的hg存储库(changeset 0)只包含存储库中所有文件的添加操作(文件内容与svn重命名时相同)。

我想保留在hg项目中的原始svn项目的历史一直回到修订0,但我不知道如何克服重命名问题。

回答

0

这是一个脚本,我只是用来将我的项目转换为1重命名为mercurial。您必须在空目录中运行此操作,因为它每次都会执行rm -rfv *:

#!/bin/bash 
set -e 
svnpath=svn://host/repo/project 
hg init 
for r in $(svn log $svnpath | egrep -o '^r[0-9]+' | tac); do 
    rm -rfv * 
    svn export --force -r $r $svnpath . 
    hg addremove -s 50 
    message="$(svn log -c $r $svnpath | tail -n +4 | head -n -1)" 
    echo "$message" >&2 
    changes="$(hg st)" 
    [[ "$changes" ]] && hg commit -m "$message" 
done 
相关问题