2016-05-03 19 views
2

私はのようにリポジトリに関連する関数のようにバージョン(さらには洗練されたの衝突解決)のようにバージョンアップしたいと思っています。有効なtarアーカイブをもう一度入手してください。これは何とか達成可能ですか?tarアーカイブをディレクトリとして透過的に扱う方法は?

私は最初にsmudge/clean filtersを使うことを考えましたが、保存されたgit blobのファイル内容を変更することができます。どちらかだけでtarファイルとディレクトリ構造体との間に変換しますので、

、今私がhooks使用を考えている(here示唆したように、私はpre-addフィルタが同様にあった望むものの、pre-commitpost-checkoutを...)または、 git objectsで直接配管する(または、妥協点として中間ディレクトリを使用しますが、override the metadata)。私は、この潜在的に非常識な仕事で始める前に、しかし、このいずれかを達成するために

  • より良い方法、または
  • 既存の解決策はありますか?

私が原因にファイルがそれらをより簡単かもしれない治療、圧縮せずにファイルとメタデータの単なる連結されていることを願っていますが、これは強く、Can git treat zip files as directories and files inside the zip as blobs?に関連しています。

+1

2つのtarファイルを比較するには、次のようにします。http://superuser.com/a/706286/4803 - 基本的に '* .tar'に' textconv'を有効にし、各tarファイルの出力をテキストでcatします。彼らはdiff'dすることができます。しかし、私はこれがマージであなたを助けるとは思わない。 –

+0

@JohnZwinckありがとう、それは 'diff'ingに役立ちますが、これはおそらく(これは他のgit磁器との)マージには役に立たないと私は同意します –

+0

あなたはタールを追跡する必要がありますか?なぜディレクトリを追跡しないのですか?チェックアウトを使用してtarを生成することができます(これは無視してください)。これはあなたの質問に答えませんが、あなたの問題を解決するかもしれません。 –

答えて

0

コメントの1つに記載されているもの、つまりtextconvを使用することをお勧めします。

catを手動で使用する代わりに、git diff--textconvオプションを簡単に呼び出すことができます。

マージでは、renormalizeオプションを使用するか、これをデフォルトとしてmerge.renormalizeに設定します。

私は実際にこれをテストしたことはありませんが、動作すると信じています。

関連する問題