git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Yann Dirson <dirson@bertin.fr>
To: Zefram <zefram@fysh.org>
Cc: Jeff King <peff@peff.net>, git@vger.kernel.org
Subject: Re: ghost refs
Date: Tue, 20 Apr 2010 15:00:15 +0200	[thread overview]
Message-ID: <20100420150015.4bd80387@chalon.bertin.fr> (raw)
In-Reply-To: <20100420120228.GM17930@lake.fysh.org>

Le Tue, 20 Apr 2010 13:02:28 +0100,
Zefram <zefram@fysh.org> a écrit :

> Jeff King wrote:
> >  2. Make a refs/dead hierarchy so that the reflogs don't interfere
> > with new branches. This just pushes off the problem, though, for
> > when you try to delete "foo/bar" and see that "refs/dead/foo" is
> > already blocking its spot in the reflog graveyard.
> 
> This is easily solved by tweaking the name for dead reflogs.
> logs/dead_refs/foo~ doesn't clash with logs/dead_refs/foo/bar~.
>
> You might also want to stick a sequence number into the filename, for
> when you delete more than one foo/bar branch.

That sounds cool.  A logs/dead_refs/ namespace of some sort seems to be
unavoidable, to avoid the clash between old "logs/refs/foo/bar~"
and new "logs/refs/foo".

We would also need a syntax for accessing those.  Maybe something
reminiscent of Debian "epochs" in version number.  That would
give a syntax like "foo@{1:1}" and "foo@{2:1}" to access the dead and
long-dead refs' logs, respectively looking into foo~<largest> and
foo~<largest-1>.

Going that way, we would probably want to add a "delete" entries in the
reflog when deleting a ref - but that would make "foo@{1:0}" a
non-sense, we could just reject it.


Another option than adding a sequence number would be to move back the
dead_refs/ log back to refs/ when the branch is creating again.  That
way just after resurection we have:

	foo@{0}	: now
	foo@{1} : invalid (deleted state)
	foo@{2} : the ref as it was 2 operations before

That would kinda make sense too, but then if the new "foo" is something
completely unrelated, we may rather want to refer to foo{1:1}
(which is stable until next deletion of foo) rather than foo@{2}, which
varies with current foo.  But the 1st solution could give us that too,
by considering logs/dead_refs/foo~ the logical continuation of
logs/refs/foo.

Would that make sense ?
-- 
Yann

  reply	other threads:[~2010-04-20 13:09 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-07 16:38 ghost refs John Dlugosz
2010-04-07 16:58 ` Avery Pennarun
2010-04-07 21:00   ` Jeff King
2010-04-07 22:00     ` John Dlugosz
2010-04-07 22:03       ` Avery Pennarun
2010-04-07 22:10         ` John Dlugosz
2010-04-07 22:11           ` Avery Pennarun
2010-04-08  4:30             ` Jeff King
2010-04-08 16:07               ` John Dlugosz
2010-04-08 16:55                 ` Junio C Hamano
2010-04-08 19:49                   ` Jeff King
2010-04-08 20:42                     ` Junio C Hamano
2010-04-08 22:14                       ` Avery Pennarun
2010-04-08 23:04                       ` Nicolas Sebrecht
2010-04-17 11:51                       ` Jeff King
2010-04-17 16:32                         ` Junio C Hamano
2010-04-17 16:57                           ` Git documentation writing guidelines (was: Re: ghost refs) Jakub Narebski
2010-04-18  0:28                             ` Git documentation writing guidelines Junio C Hamano
2010-04-19 15:33                         ` ghost refs John Dlugosz
2010-04-20  7:02     ` Yann Dirson
2010-04-20 11:51       ` Jeff King
2010-04-20 12:02         ` Zefram
2010-04-20 13:00           ` Yann Dirson [this message]
2010-04-20 13:14             ` Zefram
2010-04-20 13:33         ` Jay Soffian
2010-04-20 14:24           ` Jeff King
2010-04-20 14:42             ` Yann Dirson
2010-04-20 14:52             ` Jay Soffian
2010-04-20 15:03               ` Alex Riesen
2010-04-20 15:10               ` 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=20100420150015.4bd80387@chalon.bertin.fr \
    --to=dirson@bertin.fr \
    --cc=git@vger.kernel.org \
    --cc=peff@peff.net \
    --cc=zefram@fysh.org \
    /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).