the FreeBSD repositoryのサブセットでいくつかの作業をしたい。問題:このリポジトリは非常に大きいです。 git clone
は2 GB近くまでプルダウンします。私は自分がしたいことに対して、ほんのわずかしか必要ありません。現在、約140KBです。大きなGitプロジェクトのサブツリーに取り組む
アップストリームから変更を取り入れることができるようにしたいのですが(実際にはパッチを適用する必要はありません)、私は0%にプッシュバックする必要があります。
私は断るすべてのパスが行き止まりであるように思える:
- 私は
--depth 1
上流レポのクローンを作成する場合は、私はGitHubのにそれをプッシュすることはできません。 (Ubuntu 16.04のGit 2.7.4) - 私が欲しくないもの(作業ディレクトリに140KBを残す)とそれから
clone --single-branch
を残しても、それは1.5GBを引き下げます。多分ちょうどパックがひどくて、 "間違った共有"がたくさんあるのだろうかと思ったが、私は再パックしようとした(-a -d -f --depth=250 --window=250
、私が見たランダムなコマンドごとに)。もし私が再びそれを複製しても同じです。 - 私は
git gc
を試しましたが、これまでに行ったことがずっとずっと悪くなっています(6.6GB)。 - 私は
filter-branch
を手放すことができましたが、私がそれをしたら後で引っ張ることができないようです。
ここではうまくいくワークフローがありますか?つまり、アップストリームへの接続を切断するだけですか?filter-branch
はすべて離れていて、上流に新しいコミットがあるのでパッチをプルするだけですか?私はFreeBSD Githubミラーを忘れて、何とかrepoを作るのにgit-svn
を使うべきですか? (結局、私が望むすべてのものが1つのディレクトリに含まれません。つまり、私はfoo/bar
とfoo/baz
ではなくfoo/qux
をお勧めします。)
(そしてwhat'd取得し、それらのパッチを適用するための最良の方法は? )
確かに、プッシュバックはうまく動作しますが、疎なチェックアウトで作業コピーのサイズを避けることができます。しかし、私は最初にマルチGBダウンロードを避けたいと思っています。 (より具体的には:疎な*チェックアウト*私はまったく役に立たないと思う、私はブランチか、まったく興味があるサブセットしか持っていないレポフォークのいずれかを持つだろう。私がその支店にいる間、私はいつも私がそれに積極的に取り組んでいる間、私は疎でないチェックアウトをすることができます。) – EvanED
@EvanEDはい、それは私の主張です。マルチGB *を一度*サポートすることができれば(最初のフェッチ)、理想的です。部分的なフェッチ(浅いクローンの横にある)を行う方法はわかりません。私はまだsparse-checkoutを使用しています(例:https://stackoverflow.com/a/2467629/6309)。 – VonC
@EvanED「興味のあるサブセットのみを持つブランチまたはリポフォークのいずれかを持つつもりですin at al ":次に、そのレポをトポレポ(別のモジュールのサブモジュール)に分割する必要があります。https://stackoverflow.com/a/16728814/6309 – VonC