Re: [PATCH 4/5] allow deepening of a shallow repository
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Nov 17, 2006, 09:52 UTC
- Message-ID
- <Pine.LNX.4.63.0611171050440.13772@wbgn013.biozentrum.uni-wuerzburg.de>
- In-Reply-To
- <7vy7qaqw12.fsf@assigned-by-dhcp.cox.net>
Hi,
On Fri, 17 Nov 2006, Junio C Hamano wrote:
Show 18 quoted lines
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>
> > Yes. Somehow, an important part of unregister_shallow() went missing (yet
> > another proof that my poor-man's-StGit does not always work). I think that
> > the "object->parsed = 0;" should go into unregister_shallow() like this:
>
> That does not fly so well. Your fetch-pack.c does this in
> find_common() and dropping the parsed flag inside unregister
> causes it to be parsed again later with its true parents, which
> defeats what the commented part of the code wanted to do.
>
> if (!lookup_object(sha1))
> die("object not found: %s", line);
> /* make sure that it is parsed as shallow */
> parse_object(sha1);
> if (unregister_shallow(sha1))
> die("no shallow found: %s", line);
> continue;Ah! _That_ was the reason I removed it from unregister_shallow().
> Although I am reasonably sure we can eventually make it work, it > is very subtle and fragile -- somebody touching this code can > easily break it.
I fully agree. Even the OA did not understand the code fully ;-)
How about adding "int force_reparse" to the signature of unregister_shallow()? (Just like we added "int cleanup" to get_merge_bases() to avoid pilot errors.)
Ciao, Dscho