From: mhagger@alum.mit.edu
To: Jeff King <peff@peff.net>
Cc: Junio C Hamano <gitster@pobox.com>,
Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>,
Thomas Rast <trast@student.ethz.ch>,
Alexey Muranov <alexey.muranov@gmail.com>,
git@vger.kernel.org, Michael Haggerty <mhagger@alum.mit.edu>
Subject: [RFC 0/3] Reflogs for deleted refs: fix breakage and suggest namespace change
Date: Sat, 18 Aug 2012 19:14:43 +0200 [thread overview]
Message-ID: <1345310086-20089-1-git-send-email-mhagger@alum.mit.edu> (raw)
In-Reply-To: <20120719213311.GA20385@sigill.intra.peff.net>
From: Michael Haggerty <mhagger@alum.mit.edu>
On 08/17/2012 01:29 AM, Junio C Hamano wrote:> Junio C Hamano <gitster@pobox.com> writes:
>> I like the general direction. Perhaps a long distant future
>> direction could be to also use the same trick in the ref namespace
>> so that we can have 'next' branch itself, and 'next/foo', 'next/bar'
>> forks that are based on the 'next' branch at the same time (it
>> obviously is a totally unrelated topic)?
>
> I notice that I was responsible for making this topic veer in the
> wrong direction by bringing up a new feature "having 'next' and
> 'next/bar' at the same time" which nobody asked. Perhaps we can
> drop that for now to simplify the scope of the topic, to bring the
> log graveyard back on track?
Given that a flag day would anyway be required to add a d/f-tolerant
system, I could live with a separate "graveyard" namespace as
originally proposed by Jeff.
However, I still think that as long as we are making a jump, we could
try to land closer to the ultimate destination. So here are some
patches that apply on top of Jeff's to show what I mean. (Please also
note that I made some technical comments about Jeff's patches in an
earlier email.)
The first two patches fix a breakage that I see when I apply Jeff's
patches to master.
The third changes the implementation of refname_to_graveyard_reflog()
and graveyard_reflog_to_refname() and touches up some test cases. It
changes the naming convention for dead references to
"$GIT_DIR/logs/refs~d/heads~d/foo~d/bar~d/baz~f"
I.e., the dead reflogs are stored closer to the living. It is not
obvious whether the "refs" part of the name should be munged to
"refs~d" as I have done, or left unmunged. The argument in favor of
munging is that the algorithm is more uniform. On the other hand,
extending the same scheme to loose references would produce filenames
like
"$GIT_DIR/refs~d/heads~d/foo~d/bar~d/baz~f"
or maybe they should be nested inside of the refs directory like
"$GIT_DIR/refs/refs~d/heads~d/foo~d/bar~d/baz~f"
(which would also give a better place to store top-level reference
names).
I structured the patches to apply on top of Jeff's for presentation
purposes, but if they are desired it would of course make more sense
to squash his and mine together in the obvious way.
I am a little bit worried that there are other test cases that use
"git prune" in the belief that it will remove all commits that were
referred to by deleted references. The test suite runs cleanly for me
with these patches, but before they are integrated we should audit the
places where the test suite calls to "git prune" to make sure that
they are still testing what they think.
Michael Haggerty (3):
t9300: format test in modern style prior to modifying it
Delete reflogs for dead references to allow pruning
Change naming convention for the reflog graveyard
refs.c | 31 ++++++++++++++++++++++++-------
t/t7701-repack-unpack-unreachable.sh | 4 ++--
t/t9300-fast-import.sh | 13 +++++++------
3 files changed, 33 insertions(+), 15 deletions(-)
--
1.7.11.3
next prev parent reply other threads:[~2012-08-18 17:22 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-19 7:30 Feature request: fetch --prune by default Alexey Muranov
2012-07-19 11:55 ` Jeff King
2012-07-19 14:03 ` Dan Johnson
2012-07-19 15:11 ` Stefan Haller
2012-08-16 23:22 ` Junio C Hamano
2012-08-21 6:51 ` Jeff King
2013-06-20 19:22 ` Sam Roberts
2012-07-19 16:21 ` Alexey Muranov
2012-07-19 17:34 ` Konstantin Khomoutov
2012-07-19 21:20 ` Alexey Muranov
2012-07-19 21:57 ` Alexey Muranov
2012-07-20 7:11 ` Johannes Sixt
2012-07-20 7:28 ` Alexey Muranov
2012-08-16 23:27 ` Junio C Hamano
2012-07-19 16:40 ` Alexey Muranov
2012-07-19 16:48 ` Dan Johnson
2012-07-19 16:51 ` Alexey Muranov
2012-07-19 21:32 ` [RFC/PATCH 0/3] reflog graveyard Jeff King
2012-07-19 21:33 ` [PATCH 1/3] retain reflogs for deleted refs Jeff King
2012-07-19 22:23 ` Alexey Muranov
2012-07-20 14:26 ` Jeff King
2012-07-20 14:32 ` Alexey Muranov
2012-07-19 22:36 ` Junio C Hamano
2012-07-20 14:43 ` Jeff King
2012-07-20 15:07 ` Jeff King
2012-07-20 15:39 ` Junio C Hamano
2012-07-20 15:42 ` Junio C Hamano
2012-07-20 15:50 ` Jeff King
2012-08-16 23:29 ` Junio C Hamano
2012-07-20 9:49 ` Michael Haggerty
2012-07-20 15:44 ` Jeff King
2012-07-20 16:37 ` Johannes Sixt
2012-07-20 17:09 ` Jeff King
2012-07-22 11:03 ` Alexey Muranov
2012-07-26 12:47 ` Nguyen Thai Ngoc Duy
2012-07-26 16:26 ` Alexey Muranov
2012-07-26 16:41 ` Matthieu Moy
2012-07-26 16:59 ` Jeff King
2012-07-26 17:24 ` Alexey Muranov
2012-07-26 17:46 ` Junio C Hamano
2012-07-26 17:52 ` Jeff King
2012-07-22 11:10 ` Alexey Muranov
2012-07-22 11:12 ` Alexey Muranov
2012-07-22 13:14 ` Jeff King
2012-07-22 14:40 ` Alexey Muranov
2012-07-22 15:50 ` Jeff King
2012-07-20 16:32 ` Johannes Sixt
2012-08-18 17:14 ` mhagger [this message]
2012-08-18 17:14 ` [RFC 1/3] t9300: format test in modern style prior to modifying it mhagger
2012-08-18 17:14 ` [RFC 2/3] Delete reflogs for dead references to allow pruning mhagger
2012-08-21 8:33 ` Jeff King
2012-08-18 17:14 ` [RFC 3/3] Change naming convention for the reflog graveyard mhagger
2012-08-18 20:39 ` [RFC 0/3] Reflogs for deleted refs: fix breakage and suggest namespace change Junio C Hamano
2012-08-18 21:11 ` Alexey Muranov
2012-08-19 0:02 ` Junio C Hamano
2012-08-19 7:07 ` Alexey Muranov
2012-08-19 7:15 ` Alexey Muranov
2012-08-19 11:28 ` Alexey Muranov
2012-08-19 17:38 ` Junio C Hamano
2012-08-19 22:09 ` Alexey Muranov
2012-08-20 0:26 ` Junio C Hamano
2012-08-20 1:01 ` Junio C Hamano
2012-08-20 11:32 ` Alexey Muranov
2012-08-20 11:57 ` Alexey Muranov
2012-08-19 13:19 ` Michael Haggerty
2012-08-19 16:27 ` Junio C Hamano
2012-08-21 8:27 ` Jeff King
2012-08-21 17:56 ` Junio C Hamano
2012-07-19 21:33 ` [PATCH 2/3] teach sha1_name to look in graveyard reflogs Jeff King
2012-07-19 22:39 ` Junio C Hamano
2012-07-20 15:53 ` Jeff King
2012-07-22 20:53 ` Junio C Hamano
2012-07-19 21:33 ` [PATCH 3/3] add tests for reflogs of deleted refs Jeff King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1345310086-20089-1-git-send-email-mhagger@alum.mit.edu \
--to=mhagger@alum.mit.edu \
--cc=alexey.muranov@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=martin.von.zweigbergk@gmail.com \
--cc=peff@peff.net \
--cc=trast@student.ethz.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).