2017-06-01 10 views
0

私は、バイナリガベージがたくさんあるGitLabリポジトリを持っています(悲しいことにオプションはありません)。私は、実際にはテキストファイルしか持たないサブディレクトリが1つだけ必要です。そして、私はそのフォルダAFAPを取得する必要があります。最小パスを取得する

今私はgit archiveを見つけ、私のすべての問題が解決されたと思った。 しかし、それはハッシュのリファレンスを受け入れていないようです。 git archiveとバージョン/サブディレクトリの特定の組み合わせを取得する方法はありますか?

+0

* "hashes refs"は受け入れられません。 'git archive some-commit - path/to/folder'が動作するはずです – poke

+0

ドキュメントによるものではありません。 https://git-scm.com/docs/git-upload-archive – abergmeier

+0

'git upload-archive'を参照してください!== [' git archive'](https://git-scm.com/docs/git-archive ) 'git archive [...] [ ...]'を明示する。 – poke

答えて

0

私はこれの使用例がかなり制限されている必要があると思います。いくつかのファイルのスナップショットを取得することを考えています。歴史的なコンテキストや変更を書き戻すことはできません。さて、ok ...

archive--remoteを使用すると、かなり参考にする必要があります。 リモートにタグをプッシュすることができる場合は、のバージョンにタグを付けることができます。タグから引き出すことができるはずです。もしあなたがそれを行うことができないなら、あなたが望むバージョンがタグを持っていたり、ブランチの現在の頭部になったりしていなければ、あなたはおそらく運が悪いでしょう。

ドキュメントは、それについてもかなり好き嫌いです。それが下に来ると、ここであなたを助けようとするかどうかはサーバーの気まぐれです。 gitモデルは、実際にサブリポジトリレベルでのリモートアクセスをあまりサポートしていません。

あなたはこのレポの肥大化が編成されている方法を正確に応じて、一緒にプレイ可能性があるいくつかの部分的な解決策:

あなたが浅いおよび/または単一のブランチクローニングと遊ぶことができます。あなたは、少なくともあなたが望むバージョンのために完全なTREEを引き出さなければならないでしょうが、ヒストリと無関係のバージョンのファイルを最小限に抑える(あるいは、おそらくなくす)ことができます。

頻繁にこのサブツリーのバージョンを読むつもりなら、あなたは、元のレポをクリーンアップすることができないにもかかわらず、それだけでサブツリーの歴史を持つレポを作成するsubdirectory-filterfilter-branchを使用して価値があるかもしれません。オリジナルのリポジトリの "次の"コミットからサブツリーを削除し、新しいリポジトリへのサブモジュール参照で置き換えます。 (しかし、単なる一回だけであれば、これは明らかに問題にはならないでしょう)