0

Subversion(svn)リポジトリをMercurial(hg)に変換しようとしています。過去には、svnリポジトリプロジェクトフォルダの名前が数回変更されていました。次のコマンドは、svnプロジェクトをhgに変換するのに部分的に成功しています。

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

これにより、最新のリビジョンから、svnプロジェクトフォルダーの名前が最後に変更されたリビジョンに変換されます。この時点で、変換されたhgリポジトリ(changeset 0)には、リポジトリ内のすべてのファイルに対する追加操作が含まれています(ファイルの内容は、svnの名前変更が行われたときと同じです)。

hgプロジェクト内の元のsvnプロジェクトの履歴をリビジョン0までずっと保存したいのですが、名前変更の問題を解決する方法がわかりません。

4

2 に答える 2

0

hgsubversionで変換を試してください。

于 2013-03-18T11:18:15.237 に答える
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
于 2013-09-08T13:59:30.837 に答える