2012-07-11 13 views
7
  1. 私はroot Mercurial repo(web site)を持っています。
  2. 私はGitHub mirrorから/wpサブディレクトリにワードプレスをクローンします。
  3. 私はWPの非常に特殊な(安定した)バージョンを望んでいるが、進行中の開発はしていないので、git checkout 3.4.1(ここでは3.4.1はタグです)です。
  4. 私は、ルートMercurialリポジトリとサブスクリプションとしてセットアップしました(WPリビジョンは.hgsubstateで正常に取得されます)。

ここで問題が発生します。Git subrepo pushでMercurialが固まった問題を修正するには?

no branch checked out in subrepo wp 
cannot push revision e9bc63e25dc40c07ac3a6778dc2b48e1aa486e36 

そしてそれだけで終了します。それはWPに到達したとき、私はhg pushを行います。ルートリポジトリのプッシュは試行されません。

  1. が読み取った変更がない:Mercurialの試みはsubrepo(意図した動作)をプッシュするが、私は意味をなすことができない理由を私は理解して

    は、なぜそれがsubrepoに完全に失敗して管理します-only origin anyway

この特定のリビジョンが欲しいとわたしは理解していますが、Gitサブポ?

答えて

2

このセットアップでいくつか問題が発生します。

まず、は水銀が分離HEADを持つgitサブレポを処理できないと思われます

git checkout 3.4.1を実行すると、レポがdetached HEAD状態になります(コマンドを実行したときにその旨の警告が表示されているはずです)。その時点で、git branchを実行すると、(no branch)がアクティブブランチとしてリストされていることがわかります。水銀が押し込もうとすると、この状態で窒息する。 mercurial developer listなぜこれが起こるのか尋ねることができますが、おそらく既存のサブポイント実装の限界です。

次に、mercurialはpushコマンドを使用してgit subreposを同期させます。

git checkout -b <integration_branch> 3.4.1を実行すると、分離されたHEAD状態からgitが移動します。しかし、hg pushにしようとすると、リモートのgit repoに実際にプッシュしようとします。水銀サブペーオの場合、リモートへのプッシュアクセスがない場合でも、発信変更を確認できます。しかし、GitHubでは、2つのreposが同期されているかどうかを確認する前に認証を受ける必要があります。したがって、gitリモートへのプッシュアクセスがない場合、これは失敗します。これは、水銀のサブペクト戦略の設計の一部です。あなたは、このセットアップを続行する必要がある場合

は、おそらく次の操作を行う必要があります。

  1. はGitHubの上のワードプレスのレポの独自のフォークを作成します。
  2. 水銀を水銀のsubrepoディレクトリにクローンします。
  3. git checkout -b <branch_name> 3.4.1

このrelated questionでいくつかの追加情報があるから続けてください。

+0

うん、それはここに問題があるように見えます(私はGitの欠点はMercurialではありません。あなたの2番目のポイントは問題ではないようですが、他のGitHubサブレポジションは修正リビジョンをうまく修正するように更新されました。私の現在の解決策は、WordPressのMercurialミラーを作成して使用することですが、この切り離されたものを複製したり、ブランチしたりせずにサブペクトとして作成することができれば、まだ興味があります。 – Rarst

+0

@Rarst:他のGitHubサブレポ'、それは上手くいくでしょう。しかし、以前のリビジョンを使用するためにローカルのgitブランチを作成すると(例えば、HEADを除いた古いタグを使用するなど)、同じエラーが発生します。 –

関連する問題