Re: Question about 'branch -d' safety
- From
Julian Phillips <julian@quantumfyre.co.uk>
- Date
- Jul 11, 2010, 08:48 UTC
- Message-ID
- <7414fff60758b3f60d69a1bbed49165e@212.159.54.234>
- In-Reply-To
- <201007110916.29567.jnareb@gmail.com>
On Sun, 11 Jul 2010 09:16:26 +0200, Jakub Narebski <jnareb@gmail.com> wrote:
Show 5 quoted lines
> Dnia niedziela 11. lipca 2010 08:55, Clemens Buchacher napisał: >> On Sat, Jul 10, 2010 at 02:57:35PM -0700, Jakub Narebski wrote: >> > >> > It's unfortunately not so easy. The problem you have to solve is D/F >> > conflict: if you have 'foo/bar' branch, you can't create 'foo'
branch,
Show 14 quoted lines
>> > but after deleting 'foo/bar' you want to be able to create 'foo' >> > branch and reflog for 'foo' branch. >> >> I'm going to read up on Jonathan's pointers. But I do not really >> see the problem above. If the reflog already exists, the new branch >> simpliy continues using it. So if the branch is re-created, it's as >> if the branch had never been deleted. > > The problem is, that when you have 'foo/bar' branch, then you have > 'foo/bar' reflog. When you delete branch 'foo/bar', but do not delete > 'foo/bar' reflog (only add to it branch deletion event), and then you > want to create 'foo' branch, git wouldn't be able to create reflog > fo 'foo' because of directory / file (D/F) conflict: there is 'foo/' > directory preventing file 'foo' from being created.
You could just change the reflog code so that if foo is a directory it looks for/creates foo/.reflog (the dot is to prevent a clash with a valid branch name)?
>> Or possibly we add a special reflog entry which points the branch >> to a zero sha to signify that the branch had been deleted. > > That is a good idea anyway.
-- Julian