[解決済み】Git と Mercurial リポジトリの相互運用性
質問
MacでGITを使っています。十分です。私はツールを持っており、経験もあります。そして、これからも使い続けたいと思っています。ここに戦争はない...
問題は常に相互運用性です。ほとんどの人がSVNを使っていて、それは私にとっては素晴らしいことです。Git SVNは箱から出してすぐに使えるし、無駄のないソリューションです。人々は喜んでSVNを使い続けることができ、私は自分のワークフローやツールを失うことがないのです。
さて... Mercurialを使う人が出てきました。彼らには彼らの理由があります。しかし、私はGIT HGのアウトオブザボックスを見つけることができません。私はHGに乗り換えたくはないのですが、彼らのリポジトリと相互運用する必要があります。
どなたか簡単な解決策をご存じないでしょうか?
どのように解決するのですか?
2012年6月より更新。現在、開発者が git 側から作業を行いたい場合の Git/Hg 相互運用の方法としては、以下のようなものがあるようです。
-
Mercurialをインストールし hg-git 拡張 . 後者は、パッケージマネージャを使うか、あるいは
easy_install hg-git
. そして、~/.hgrc に以下があることを確認してください。[extensions] hggit =
を指定することについて述べている文献を見かけることがあります。
bookmarks
エクステンションもありますが、これは Mercurial v 1.8 以降で組み込まれたものです。以下はその例です。
Windowsでのhg-gitのインストールに関するいくつかのヒント
.
hg-gitを入手したら、おおまかに以下のようなコマンドを使用することができます。
Abderrahim Kitouniが上に投稿しました。
. この方法は、これまで
より洗練され、微調整された
しかし、2009年以降、フレンドリーなラッパーがあります。
git-hg-again
. これは、toplevel ディレクトリを Mercurial と Git の両方の作業ディレクトリとして同時に使用します。の先端と同期したMercurialのブックマークを作成します。
default
(ブランチを更新し、そのブックマークからローカルの Git ブランチを更新します。
-
git-remote-hg は別のラッパーで、同じく Mercurial の
hg-git
拡張です。これはさらにgit-remote-helpers
プロトコルを使用します(これが名前の由来です)。トップレベル・ディレクトリはGitの作業ディレクトリとしてのみ使用し、Mercurialのリポジトリは裸のままにしておきます。また、Git と Mercurial の同期をより安全に、より git ライクにするために、2つ目の Git ベアリポジトリを維持します。 -
は git-hg スクリプト(旧メンテナンス こちら をベースとした別の方法を使用しています。
hg-fast-export
から 高速エクスポートプロジェクト . 方法2と同様に、これもMercurialのベアリポジトリと追加のGitベアリポジトリを保持しています。
プルする場合、このツールは Mercurial のブックマークを無視し、代わりに名前のついた Mercurial ブランチをすべて Git ブランチにインポートし、デフォルトの (名前のない) Mercurial ブランチは master にインポートします。
このツールはhg->gitのみであるとする解説もありますが、2011年12月7日にgit->hg pushをサポートするようにマージされたとしています。で説明しているように これらのツールのレビュー しかし、このツールのプッシュサポートの実装方法は、うまくいっていないようです。
-
また git-remote-hg というプロジェクトもあります。 . 上記のバージョンとは異なり、このバージョンは hg-git に依存せず、代わりに Mercurial Python API に直接アクセスします。今のところ、これを使うにはパッチを当てたバージョンの git も必要です。私はまだこれを試していません。
-
最後に テーラー は、さまざまな異なる VCS 間をインクリメンタルに変換するプロジェクトです。これの開発は積極的には続けられないようですね。
このうち最初の3つのアプローチは、私が調査するのに十分なほど軽量に見えました。私のセットアップで動作させるためには、いくつかの点で手を加える必要がありました。そして、それらを改善するためにさらに手を加える方法がいくつか見つかりました。そして、他の人も同じように評価するために、このような微調整をしたいと思うかもしれないと思ったのです。そこで、私は
ソースパッケージの作成
このツールは、最初の3つのツールのうちのどれでも、私のバージョンをインストールできるようにするものです。また、このツールは必要な
hg-fast-export
の部分を削除しました。(あなたは
hg-git
を各自で作成してください)。
ぜひ試してみて、何が一番効果的かを自分で判断してください。これらのツールが壊れた場合について教えていただければ幸いです。私は、上流の変更と同期させ、私が有用だと思う調整を上流の作者に認識させるよう努力するつもりです。
前述したように、これらのツールを評価する中で、私は次のような結論に達しました。
git-hg
は、Mercurial からの pull にのみ使用でき、push には使用できません。
また、Git と Mercurial の比較・翻訳マニュアルもあります。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] Git で、ステージされていない変更を破棄するにはどうしたらいいですか?
-
[解決済み] Git リポジトリでのマージの衝突を解決するには?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 現在のブランチのトラッキング情報がありません。
-
[解決済み】ファイルのアンリンクに失敗しました。もう一度試してみるべきですか?
-
Gitのプッシュでエラーが発生! [リモート拒否] master -> master (pre-receive hook declined) error: failed to push some refs to .......
-
gitアップロードの共通エラー処理
-
[解決済み] 現在の支店にはトラッキング情報がありません
-
[解決済み] git rebase: "error: cannot stat 'file': パーミッションが拒否されました"
-
[解決済み] fatal: bad revision "とはどういう意味ですか?
-
[解決済み] MercurialとGitの違いは何ですか?
-
[解決済み】MercurialプロジェクトをGitに変換する【重複あり
-
[解決済み】GitとMercurial - 比較と対比