5

Mercurial-2.9 で TortoiseHG v2.11 をインストールしました

TortoiseSVN 1.8 で作成されたローカルの Subversion リポジトリを変換しようとしています。4、サブバージョン 1.8.5

古い Subversion リポジトリに奇妙な癖がないことを確認するために、デフォルトのフォルダー構造で test_repo という名前の新しい SVN リポジトリを作成し、test_repowc へのチェックアウトを実行してから、いくつかのテキスト ファイルをトランクに追加し、ファイルを変更してコミットしました。いくつかの歴史を提供するために数回。

次にcmd.exeを開き、フォルダーに移動して試しました

hg convert test_repo

そして以下を得ました:

assuming destination test_repo-hg
initializing destination test_repo-hg repository
test_repo does not look like a CVS checkout
test_repo does not look like a Git repository
file:///C:/Users/xxxxxx/Documents/Subversion/test_repo does not look like a Subversion repository
test_repo is not a local Mercurial repository
test_repo does not look like a darcs repository
test_repo does not look like a monotone repository
test_repo does not look like a GNU Arch repository
test_repo does not look like a Bazaar repository
cannot find required "p4" tool
abort: test_repo: missing or unsupported repository

ご覧のとおり、Mercurial は file:/// プロトコルを実行しましたが、Subversion リポジトリを認識できませんでした。file:/// プロトコルを自分で実行し、-s フラグでリポジトリ タイプを指定し、フォルダで Mongoose を実行し、URL としてリポジトリにアクセスしようとしましたが、どれも機能していないようです。また、リポジトリからではなく作業コピーから変換しようとしましたが、それもうまくいきません。

SVN 1.7 または 1.8 で導入された新しい SVN ファイル構造 (一部の SVN クライアントはしばらく互換性がありませんでした) と関係があるのでしょうか?

TortoiseSVN と TortoiseHG の現在のバージョンを使用して、これで運が良かった人はいますか?

私は、DVCS と Mercurial に夢中になって、これを超迅速に移行することを意図していましたが、すでに壁にぶつかっています。非常に単純であると多くの人が言っているのを読みましたが、奇妙なエッジケースを持っているか、噂が聞こえるほど簡単ではありません.

SVN を HG リポジトリとして複製できる HGSubversion などの他のツールについて読んだことがありますが、これらは単独のリポジトリであるため、SVN を変換し、すべてが機能することを確認してから、SVN を削除してアンインストールします。HG リポジトリがまだ SVN に「接続」されていない方がよいと思います (HGSubversion では、複製された HG リポジトリから親 SVN リポジトリへの「プッシュ」が可能ですよね?)。他のツールにはさまざまなレビューがあるため、変換拡張機能が機能することを望んでいました。

前もって感謝します - Mercurial を楽しみにしています!

編集:

Windows のソリューションの文書化:

  1. コマンドプロンプトを開く
  2. SVN リポジトリに移動します (作業コピーではありません)。
  3. 走るsvnserve -r .\ -d
  4. 別のコマンド プロンプトを開く
  5. Mercurial リポジトリが必要な場所に移動します
  6. オプション: 実行where hg... TortoiseHg バージョンが最初でない場合は、パスを編集して最初にします - このバージョンには、svn://プロトコルを使用するために必要な SVN python バインディングが含まれています。パスを編集したら、コマンド プロンプトを再起動します。
  7. 走るhg convert -s svn svn://localhost .\hg_repo_name

    • localhost の代わりに computername.full.domain.name を実行しましたが、localhost も機能するはずです。
    • svn://スラッシュの方向は似http://ている、似てfile:///いないC:\
    • SVN リポジトリ コードにトランクがない場合、またはトランク フォルダーを使用していない場合 (何をしているのかわからなかったので、最初のリポジトリでは使用しませんでした)、mercurial に使用するように指示するこれが必要です。トランクとしてのルート ディレクトリ:

    hg --config config.svn.trunk= convert -s svn svn:\\localhost .\hg_repo_name

    • コードのフォルダーをルートにインポートしましたが、トランクにはインポートしなかったSVNリポジトリがありました...上記のコードを使用して、トランクをコードフォルダー名と同じに設定しようとしましたが、機能しませんでした...ただし、フォルダー名をsvn URLに追加すると、機能しました:

    `hg convert svn://%computername%.domain.com/code_folder .\hg_repo_name

幸運を!

4

1 に答える 1

6

Convert wikiが述べているように

前提条件:

Subversion の Python バインディング

1.8+ リポジトリで ra_local を使用するための Python バインディングは (少なくとも) まだ更新されていないようです。

あなたには2つの選択肢があります

  • 後で変換するために、 1.7 互換のローカルSVN リポジトリを作成します。

OldRepo>svnadmin create --compatible-version "1.7" .

>svn log file:///Z:/OldRepo
------------------------------------------------------------------------
r1 | Badger | 2014-02-15 00:30:22 +0600 (Сб, 15 фев 2014) | 1 line

Create initial state
------------------------------------------------------------------------
>hg convert file:///Z:/OldRepo HG2-Repo
initializing destination HG2-Repo repository
scanning source...
sorting...
converting...
1 Create initial state
0 Create initial state

HGSubversion を使用して OldRepo を複製した後の同じ結果

>hg clone file:///Z:/OldRepo HG-Repo
[r1] Badger: Create initial state
pulled 2 revisions
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  • 1.8 以降のリポジトリにアクセスするには、任意のサーバーを使用します (svnserve が最も簡単な方法です)。svn:// リポジトリは試していませんが、1.8 Subversion のリモート http サービス リポジトリをテストしました。

ちょうどサンプル

hg clone https://subversion.assembla.com/....
...
25 files updated, 0 files merged, 0 files removed, 0 files unresolved
于 2014-02-14T18:43:03.323 に答える