Re: git auto-repack is broken...
From: Jeff King <hidden>
Date: 2016-06-15 22:52:35
On Wed, Dec 07, 2011 at 07:18:13PM -0500, Nicolas Pitre wrote:
quoted
quoted
Maybe FETCH_HEAD should have a reflog too?That might be nice. However, there is a complication, in that FETCH_HEAD may contain many sha1s, but each reflog entry only has room for a single sha1 transition. You could obviously encode it as a series of reflog entries, but then "git show FETCH_HEAD@{1}" is not very meaningful.What does "git show FETCH_HEAD" do now? If it shows only one (presumably the first) SHA1 then its reflog doesn't have to be smarter, which would properly cover most cases already.
Are you proposing that it only store the first ref in the reflog, or
that we accept that a single fetch may write lots of reflog entries?
If the former, then you are missing the expiration/connectivity
properties.
If the latter, then it is not just "we only show the first one for
FETCH_HEAD@{1}", but also "the thing that used to be FETCH_HEAD@{1} does
not graduate to FETCH_HEAD@{2}, but rather FETCH_HEAD@{n} for some
unknown n". That may be an acceptable limitation; I just wanted to
mention it in case somebody can think of some clever solution.
I certainly never did a multi-ref fetch myself.
Not consciously, perhaps, but you do it all the time without realizing it: $ git clone git://git.kernel.org/pub/scm/git/git.git $ cd git $ git fetch -v origin = [up to date] maint -> origin/maint = [up to date] master -> origin/master = [up to date] next -> origin/next = [up to date] pu -> origin/pu = [up to date] todo -> origin/todo $ cat .git/FETCH_HEAD b1af9630d758e1728fc0008b3f18d90d8f87f4c5 not-for-merge branch 'maint' of git://git.kernel.org/pub/scm/git/git 4cb5d10b14dcbe0155bed9c45ccb94e83bd4c599 branch 'master' of git://git.kernel.org/pub/scm/git/git 03e5527c5df33d4550ccc1446d861c0aa5689d58 not-for-merge branch 'next' of git://git.kernel.org/pub/scm/git/git cc4e3f01fc6a5e09ae5bbdc464965981fae4cf39 not-for-merge branch 'pu' of git://git.kernel.org/pub/scm/git/git 7a02dba15bd28826344f9c14a5e2b5c57eeb7e50 not-for-merge branch 'todo' of git://git.kernel.org/pub/scm/git/git -Peff