Re: [RFC] shallow clone
From: Franck <hidden>
Date: 2016-06-15 22:42:17
2006/1/31, Franck Bui-Huu [off-list ref]:
Junio C Hamano wrote:quoted
Shallow History Cloning ======================= One good thing about git repository is that each clone is a freestanding and complete entity, and you can keep developing in it offline, without talking to the outside world, knowing that you can sync with them later when online.
could we be able to make a public repository from such repo ?
quoted
It is also a bad thing. It gives people working on projects with long development history stored in CVS a heart attack when we tell them that their clones need to store the whole history.
yeah and I haven't survive :) I didn't notice that other people were asking for this feature, that's great !
quoted
There was a suggestion by Linus to allow a partial clone using a syntax like this:
[snip]
quoted
There are some issues. . In the fetch above to obtain everything after v2.6.14, and future runs of `git fetch origin`, if a blob that is in the commit being fetched happens to match what used to be in a commit that is older than v2.6.14 (e.g. a patch was reverted), `upload-pack` running on the other end is free to omit sending it, because we are telling it that we are up to date with respect to v2.6.14. Although I think the current `rev-list --objects` implementation does not always do such a revert optimization if the revert is to a blob in a revision that is sufficiently old, it is free to optimize more aggressively in the future.
oops, I wasn't aware of that. I still can resolve this issue by hand, no ?
quoted
. Later when the user decides to fetch older history, the operation can become a bit cumbersome.
[snip]
quoted
Design ------ First, to bootstrap the process, we would need to add a way to obtain all objects associated with a commit. We could do a new program, or we could implement this as a protocol extension to `upload-pack`. My current inclination is the latter.
is the document in "Documentation/technical/pack-protocol.txt" uptodate ? I can't find anything on multi_ack for example.
quoted
When talking with `upload-pack` that supports this extension, the downloader can give one commit object name and get a pack that contains all the objects in the tree associated with that commit, plus the commit object itself. This is a rough equivalent of running the commit walker with the `-t` flag.
[snip]
quoted
Anybody want to try?
well, you made almost the job with your analysis, but I've never took
a look to git deep internals and with my lack of time, it would take
too much time...
Thanks
--
Franck