2013-01-22 20 views
8

Hy!git bundleでコミットする

gitバンドルに格納されているすべてのコミットのリストを最初にクローンすることなく取得する方法はありますか?

ヘッドを取得するのは簡単ですが、完全なログを取得する方法が見つかりませんでした。

+0

なぜこれが必要ですか? – Chronial

+0

バンドルintをリポジトリにマージする前に、そのバンドルがどこにあるかを確認したいと思います(リポジトリと比較して)。ウェザーの頭はすでにレポや他の方法で存在しています。 – mat

+0

その場合、バンドルをリモートとして追加する方が簡単でしょうか? – araqnid

答えて

7

バンドルに含まれるパックを歩く特別なソフトウェアを作成しなければ、これはできません。バンドルが否定的な参照で作成されている場合、バンドル内のオブジェクトのみを使用して解決できないデルタが含まれる可能性があります(バンドルに埋め込まれたパックは薄い可能性があります)。

バンドル(少なくとも裸のクローン)をクローンすると、refsを分割してパックにインデックスを付け、標準のgitコマンドで動作するフォーマットを生成します。これは(統合作業の面で)最も簡単な方法です。それを読んで。

マージ前にバンドルを「プレビュー」するには、単純にリモートのレポとして追加してから、そこからフェッチしてトラッキング参照にアクセスすることができます。だから、のような何か:今

git remote add bundle /path/to/bundle 
git remote update bundle 

とは、あなたはそれをマージする最終的git pull bundle masterをあなたの地元のレポに比べバンドルに枝を比較するなどgitk master...bundle/masterを行う、とすることができます

をあなたが完了したら、単純に。きれいにするgit remote rm bundle

+0

マージをシミュレートする方法があるかどうかを知っていますか(たとえば、コマンドを直接呼び出すことなく何が起こるか)。マージとプルには--dry-runオプションはありません。 – mat

+0

彼らはそうではありません。マージを行い、前の場所にリセットすることで中止することができます(競合が残っている場合は 'git reset -hard HEAD'、自動マージの場合は' git reset -hard HEAD @ {1} ')成功した) – araqnid

関連する問題