2013-03-14 60 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 
相關問題