Shallow clones with explicit history cutoff?
- From
Matthias Urlichs <matthias@urlichs.de>
- Date
- Aug 21, 2014, 15:39 UTC
- Message-ID
- <loom.20140821T171416-31@post.gmane.org>
Hi,
use case: I am packaging the FOO program for Debian. FOO is maintained in git but it has a bunch of problems (e.g. because somebody mistakenly checked in a huge blob which would give the ).
The current workflow for this is to create a new branch, remove the offending bits if necessary, create a FOO-clean.tar.xz file, and ship that as "original source". I find that to be suboptimal.
What I would like to have, instead, is a version of shallow cloning which cuts off not at a pre-determined depth, but at a given branch (or set of branches). In other words, given
+-J--K (packaged)
/ /
+-F--G--H----I (clean)
/ /
A---B---C---D---E (upstream)a command "git clone --shallow-until upstream $REPO" (or however that would be named) would create a shallow git archive which contains branches packaged+clean, with commits FGHIJK. In contrast, with --single-branch and --depth 4 I would get CGHIJK, which isn't what I'd want.
As I have not spent too much time with the git sources lately (as in "None at all"), some pointers where to start implementing this would be appreciated, assuming (a) this has a reasonable chance of landing in git and (b) nobody beats me to it. ;-)
-- -- Matthias Urlichs