On Mon, Nov 07, 2016 at 04:42:04PM +0700, Duy Nguyen wrote: > On Mon, Nov 7, 2016 at 8:18 AM, Josh Triplett <josh@xxxxxxxxxxxxxxxx> wrote: > > Once we have gitrefs, you have both alternatives: reachable (gitref) or > > not reachable (gitlink). > > > > However, if you want some way to mark reachable objects as not > > reachable, such as for a sparse checkout, external large-object storage, > > or similar, then you can use a single unified mechanism for that whether > > working with gitrefs, trees, or blobs. > > How? Whether an object reachable or not is baked in the definition (of > either gitlink or gitref). I don't think you can have a "maybe > reachable" type then rely on an external source to determine > reachability, You'd have various "reachable by default" entries in trees, including trees, blobs, and gitrefs, and then have an external mechanism (likely via .git/config) to say "ignore objects with these hashes/paths". For instance, you might say "ignore all objects only reachable from the path 'assets/video/*' within a commit's tree". With the right set of client and server extensions, you could then avoid downloading those objects.