7

私は新しい仕事をしていますが、彼らはバージョン管理として mercurial を使用しており、私の経験のほとんどは git に関するものです。私は水銀を学ぼうとしていますが、それが分岐する方法 (ブックマークのような拡張機能を使用しても) はまったく意味がありません。ローカルで git を使用し、mercurial にプッシュする方法を知っている人はいますか?

hg-git プラグインを試してみて、git でコミットし、それらの変更をリモート mercurial リポジトリにプッシュできるようになりましたが、どのチュートリアルを見つけても、できないという問題が発生しています。新しい変更をmercurialからgitに戻すようです(これにより、この時点ですべてが役に立たなくなります)。hg-git を設定して Mercurial にプッシュする方法に関するリンクがある場合は、それをお知らせください。

解決策(と思う)

Lazy Badger のコメントに基づいて、これがうまくいくと思います: http://ryanzec.com/index.php/blog/details/9

4

3 に答える 3

3

git から Mercurial エンドポイントを操作できますが、逆方向 (hg -> git) とは異なり、同じ場所にVCS2 つのリポジトリの両方が必要です。

  1. Mercurial をインストールする
  2. Mercurial 用の hg-git 拡張機能をインストールする
  3. Hg ブックマーク拡張機能が有効になっていることを確認してください.hgrc
  4. .hgrc に追加します。

    [git]
    intree=1
    
  5. Mercurial リポジトリのクローンを作成する

    hg clone ... repo
    
  6. レポに行く

    cd repo
    
  7. Mercurial のデフォルト ブランチを追跡するローカル ブックマークを作成します。これがGitにエクスポートされます。

    hg bookmark hg/default -r default
    
  8. git リポジトリにエクスポートする

    hg gexport
    
  9. Git リポジトリを無視するように Hg を構成する

    echo ".git" >> .hg/hgignore
    
  10. Hg リポジトリを無視するように Git を構成する

    echo ".hg*" >> .git/info/exclude
    
  11. Mercurial と同じものを無視するように Git を構成する

    git config core.excludesfile `pwd`/.hg/hgignore
    
  12. マスター ブランチに、エクスポートされた Hg デフォルト ブランチを追跡させる

    git branch --track master hg/default
    git reset --hard
    
  13. 通常どおり作業して Git にコミットする

  14. 変更を Hg にエクスポートします

    hg gimport
    
  15. すべてを世界に押し出す

    hg push
    

毎日の作業では、手順 13 ~ 15 を繰り返します。

PS: HG から Git への作業は、アクションと頭痛の種を大幅に減らします

于 2011-10-26T01:33:12.510 に答える
3

しばらく考えて、別の解決策を見てください。同じように偏っていて曲がっていますが、気取らないものではありません (希望) - チェーンの 3 層アーキテクチャでの 3 つのリポジトリ (2 つの Mercurial + 1 つの Git)

それらには、以下で使用される (ローカル) 名があります。

  • マスター (hg) - 会社の中心的な Mercurial リポジトリ
  • Mediator (hg) - Master のクローンとして作成されたチェンジセットを翻訳するためのミドルウェア
  • WorkHorse (git) - 最終的な職場、開始時には空

メディエーターは、ソリューション 1 の hg-repo とほぼ同じ (hg-git、ブックマーク) を設定していますが、hgrc の [paths] セクションの 1 つの詳細を除きます。 Master と WorkHorse による両方向

ワークフロー:

  • メディエーターはマスターから変更をプルし、WorkHorse にプッシュします (解決策 1 とは異なり、変更セットは折りたたまれずにそのまま表示されます)
  • すべての (ほとんど? マージについてはわからない) 作業は WorkHorse で行われます
  • メディエーターが WorkHorse から変更をプルし、マスターにプッシュ
于 2011-10-27T13:20:51.567 に答える