On Sat, Nov 5, 2016 at 4:18 PM, Josh Triplett <josh@xxxxxxxxxxxxxxxx> wrote: > On Sat, Nov 05, 2016 at 01:45:27PM +0100, Christian Couder wrote: >> And with what Peff says above it looks like we will need ways >> configure and tweak commit reachability with gitlink/gitref anyway. So >> the point of gitref compared to gitlink would be that they just have a >> different reachability by default. But couldn't that be replaced by a >> default rule saying that when a gitlink is reached "this way or that >> way" then the commit reachability should be enforced, and otherwise it >> should not be? > > Any version of git unaware of that rule, though, would consider objects > only reachable by gitlink as unreachable and delete them, causing data > loss. Likewise for a server not aware of that rule. And a server > unaware of that rule would not supply those objects to a client pulling > such a branch. Yeah, so you would really need an up-to-date server and client to store the git-series data. But anyway if we create a gitref object, you would also need up-to-date servers and clients to make it work. > So I don't think "gitlink defined as reachable" quite works, unless we > make some other format-incompatible change that forces clients and > servers touching that gitlink to know about that reachability rule. (In > the absence of a hack such as making the same commit a parent.) There are other tools that would like to tweak reachability rules for objects. For example Mike Hommey's git-cinnabar: https://public-inbox.org/git/20150331100756.GA13377@xxxxxxxxxxxx/ and my current work on external object databases: https://public-inbox.org/git/20160628181933.24620-1-chriscool@xxxxxxxxxxxxx/ would be interested in a way to make some blobs not reachable. So if we had default rules and a generic way to specify that some objects are, or are not, reachable, that could be used by many tools, and the design of these tools would be simplified. Maybe this could be specified in the attributes files, or in a special file like for shallow clone.