120

いくつかの SVN リポジトリを履歴、ラベルなどとともに Mercurial に移行するためのツールを探しています。

TortoiseHg (Windows x32) を使用しているため、ConvertExtensions は破棄されます。Linux ボックス ( hgsvn ) でこのプロセスを実行する方法に関する情報がいくつかありますが、利用可能な Linux マシンがありません。

これらの Python スクリプトを Windows で使用できますか? もしそうなら、私はそれをする必要がありますか?または、このプロセスを実行するために使用できる他のツールは何ですか?

基本的に、SVN プロジェクトを Mercurial に変換するにはどうすればよいですか?

4

9 に答える 9

93

私はこの問題に自分で取り組む必要がありました。VisualSVNサーバーをホストする別のWindowsサーバーを備えたWindowsXPマシンがあります。

TortoiseHGとCollabNetSubversionコマンドラインクライアントもインストールしています。

<Enable Convert Extension w/ Tortoise Hg 2>

TortoiseHg 2.0を使用すると、変換拡張機能を有効にすることがこれまでになく簡単になったことをコメントで指摘してくれたbgeverに感謝します。彼が言うように

TortoiseHG 2.0では、これがはるかに簡単になりました。[スタート]メニューからTortoiseHGWorkbenchを起動します。[ファイル]->[設定]を選択します。リストから[拡張機能]を選択します。[変換]チェックボックスをオンにして、[OK]をクリックします。それでおしまい!構成ファイルを生成してファイルシステムで検索する必要はありません。–bgever3月11日7:56

</Enable Convert Extension w/ Tortoise Hg 2>

<Enable Convert Extension Manually>

リポジトリをSVNからHGに変換するには、次の手順に従いました。

1)C:\ Program Files \ TortoiseHg\Mercurial.iniを開きます

編集

参考までに-TortoiseHgはこのファイルをに移行しました

  • XP以前-C:\ Documents and Settings \ USERNAME \ Mercurial.ini
  • Vista以降-C:\ Users \ USERNAME \ Mercurial.ini

そのファイルはほとんど空になり、オーバーライドしたいものをリストするだけです。それがあなたが持っているものである場合は、ファイルの最後に次の2行を追加するだけです。

[extensions]
convert =

2)で始まる行を検索します

[拡張機能]

3)その下に、各行にセミコロン(;)でコメントアウトされたキーワードのリストが表示されます。

4)という行を見つけます

;変換=

セミコロンを削除して、次のようにします

変換=

</Enable Convert Extension Manually>

5)コマンドプロンプトを開き、新しいhgフォルダーを作成するディレクトリに移動します(このプロセスにより、コマンドプロンプトが開いているディレクトリにyoursvnreponame-hgという名前の新しいフォルダーが作成されます)。

6)このコマンドを使用します

hg convert file:/// y:/ yoursvnreponame

変換ツールはネットワーク化されたリポジトリで問題が発生する可能性があることがわかったので、ドライブをそれにマップする必要がありましたが、これは私にとっては問題なく機能しました。

于 2009-07-23T22:48:00.067 に答える
8
  1. ローカルホストで svn サーバーを起動する
  2. hg convert svn://localhost/your_repo
  3. svn バインディングは file:// プロトコルにのみ必要なため
于 2009-05-22T11:29:49.550 に答える
7

Mercurial には、この の変換拡張機能が組み込まれています。

于 2009-05-11T21:39:44.097 に答える
5

SVN Repo を HG Repo に変換し、それを別のサーバーにコピーするには、いくつかのことが必要になります。

  1. TortoiseHGを搭載。(現在使用されているバージョンを確認してください)
  2. パイソンがインストールされています。(現在使用されているバージョンを確認してください)
  3. Python モジュール ( http://pysvn.tigris.org/project_downloads.htmlで見つけることができます)
  4. convert拡張機能を Tortoiseに追加する必要があります。[スタート] メニューから TortoiseHG Workbench を起動します。を選択しFile -> Settingsます。リストから選択Extensionsします。チェックボックスをオンにしてconvert、[OK] をクリックします。

まず変換…</p>

  1. 現在の SVN Repo があるフォルダーを、作業中のコンピューターにマップすることをお勧めします。(つまり\\server\folder 、SVN Repo フォルダー自体をマップしないでください。そのすぐ上のフォルダーをマップします) マップされたドライブに次のような文字を付けます。Y:\
  2. コマンド プロンプトを開き、次のように入力します。 CD /D Y:\
  3. Y:\プロンプト で次のように入力します: hg convert y:/RepoName (現在のリポジトリの名前を使用) スラッシュとバックスラッシュに注意してください。コマンド内の 1 つはスラッシュです。また、名前にスペースが含まれる場合は、名前を引用符で囲みます。(つまりY:/"My Repo folder")
  4. これで実行され、古いフォルダーの横に別のフォルダーが作成されます。そして、hgフォルダーが中にあるはずです。それは開始されません。開始しないでください。
  5. 変換が完了しました。

次にクローニング…</p>

  1. TortoiseHG ワークベンチを開きます。に行くFile -> Clone Repository
  2. ソース: 変換されたリポジトリのフル パスを入力します。
  3. 宛先: リポジトリのクローンを作成する場所のフル パスを入力します。クローン作成プロセスでフォルダーが作成されて初期化されるため、新しい宛先にフォルダーを作成する必要はありません。
  4. 新しいクローン フォルダーにアクセス許可を追加します。
  5. 完了です!!!
于 2012-11-06T23:18:03.967 に答える
3

hgsubversion ( Extension Wiki )についてはまだ誰も言及していません。これにより、ほとんど問題なく実行できます (まれなケースと特定のツリーを除く)。

拡張機能を追加して有効にしhg clone SVN_REPO、ローカルのmercurialリポジトリに追加するだけです

于 2012-11-07T01:09:12.980 に答える
0

遅刻しないよりはまし...

1つの価格に対する2つの答え...

  1. 公開されているオープンソース リポジトリの場合は、http: //svn2github.com/add/ を使用して、そのリポジトリを GitHib にクローンし、それを Hg にプルするのに約 30 分かかりました。

  2. 使用する利点は、hg convert再開できることです。SVN から Hg への変換には数日かかる場合があります。これを停止すると、中断したところから再開されます。

以下は、Codeplex SVNbridge がゴミなので、私が書いたバッチ ファイルです。この例のリポジトリは、履歴全体を取得するのに数日かかりました (私はオーストラリアにいるので、待ち時間が要因である可能性があります)。私はそれがどこかでTFSサーバーに良い打撃を与えたと思いたい.

このバッチ ファイルは、SVN ソースから更新を取得するためにいつでも実行できます。実際にまだ SVN を使用しているのが地球上に残っている唯一の更新である場合です。私はそれをテストしていないので、これを行うとどうなるか見てください。私があなただったら、レポを編集する場合は元のブランチを放棄します。

Hgレポを複製する場合、SVN履歴を維持する必要があります。shamaprobocopy shamapは一時的です-バッチファイルとshamapを確認してください(新しいブランチで行います)。

バッチ...

@echo off
mode con:cols=100 lines=800

:: Change the SVN remote name here
::
set remote=https://cinch.svn.codeplex.com/svn
::

title Fetching SVN from %remote%. This could take...DAYS
echo .
echo Fetching SVN checkins from %remote%
echo .
echo Dependencies: Tortoise Hg and hg.exe in the Path would be ideal.
echo using hg convert
echo .
echo First, I will make a backup of shamap in the hg repo folder.
echo If shamap in .hg\ is newer then it will be copied to the repo.
echo You should commit it so hg clones of this repo work with this.
echo Commit this .BeeyATch file as well.
echo shamap keeps track of what has been fetched from SVN.
echo ok, that ends the educational part of this script...
echo Now I will fetch SVN changes from
echo %remote%
echo ...
echo ...(this could take quite some time)...
echo ...DAYS...yes...DAYS
echo ...especially if it's fecking Codeplex SVN...
echo .
echo If this craps out just run it again - it will resume from where it left off. 
echo and fetch the rest...eventually
echo .
echo Control C to abort or any other key to start:
echo .

pause

echo .
:: http://mercurial.selenic.com/wiki/ConvertExtension <== see for details of shamap
:: copy the shamap from the original convert into the .hg folder unless it is already there & newer
:: don't panic if shamap is much bigger than the original - diff it to see why
robocopy .\ .\.hg\ shamap /XO 
robocopy .\.hg\ .\ shamap /XO 
echo .

hg convert --verbose --debug %remote% "%CD%"
echo .
echo .
echo Finished fetching from %remote%
title Finished fetching from %remote%
echo Any  key to Exit
echo .
pause

exit
于 2015-01-24T11:15:24.550 に答える
0

HTTP 認証を使用してリモート SVN リポジトリを Mercurial リポジトリに変換しましたが、これを行う方法に関するドキュメントはあまりありません。Mercurial ソースをダウンロードし、ソース パッケージを使用してスタンドアロンでインストールする必要がありました。そうすれば、SVN バインディングが正しく機能します。

私はそれを次のようにインストールしました:

python setup.py install

私のServer 2003ボックスではうまくいきました。次のようにして、SVN リポジトリを正しい方法で変換できるようになりました。

python c:\python26\scripts\hg convert <remote repo>

Mercurial サイトの ConvertExtension のドキュメントはあまり明確ではありませんが、次のように書かれています。

[Mercurial の] 組み込み Python ライブラリに Subversion バインディングをインストールする方法はありません。したがって、スタンドアロンの Python の上にインストールされた Mercurial を使用する必要があります。

そのため、変換にはスタンドアロン バージョンを使用し、実際の VCS 作業には TortoiseHg を使用しています。

于 2010-05-12T18:40:46.303 に答える
0

Mercurialのconvert拡張機能を使用する:

  1. 変換拡張を有効にします。次のように .hgrc のセクションに 追加convert=します。[extensions]

    [拡張子]
    変換=

  2. Linux には追加の python バインディングが必要です。sudo apt-get install python-subversion
  3. hg convertコマンド 実行
    • 参照hg convert -hしてください
    • 例: hg convert http://[svnserver]/[Project] --source-type svn [DestinationDir] (注 2 を参照)
  4. 新しく作成された Mercurial リポジトリにプッシュします。hg push https://[mercurialserver]/[Project]

: hg convert コマンドを繰り返して、前回の変換後に svn リポジトリに加えられた新しい変更を含めることもできます。

注 2 : hg convert が使用できない場合、http://またはsvn://最初に Subversion リポジトリをチェックアウト (または既存のリポジトリを更新) し、ローカル チェックアウトを使用して変換できる場合。例:hg convert [DirectoryOfLocalCheckout] --source-type svn [DestinationDir]

于 2018-06-08T12:07:07.240 に答える