Re: [PATCH v3 01/11] replace: forbid replacing an object with one of a different type
- From
Philip Oakley <philipoakley@iee.org>
- Date
- Sep 1, 2013, 19:26 UTC
- Message-ID
- <9D27EE89D9994C0997D19E0C0AF7493F@PhilipOakley>
- In-Reply-To
- <20130901.135321.1182162250658468787.chriscool@tuxfamily.org>
From: "Christian Couder" <chriscool@tuxfamily.org>
Show 30 quoted lines
> From: "Philip Oakley" <philipoakley@iee.org> >> >> Sorry for not replying earlier in the series. >> >> From: "Christian Couder" <chriscool@tuxfamily.org> >>> Users replacing an object with one of a different type were not >>> prevented to do so, even if it was obvious, and stated in the doc, >>> that bad things would result from doing that. >>> >>> To avoid mistakes, it is better to just forbid that though. >>> >>> If one object is replaced with one of a different type, the only way >>> to keep the history valid is to also replace all the other objects >>> that point to the replaced object. >> >> Isn't this a recursion problem? Taken in that order one unravels the >> whole DAG. >> >> However if considered in the reverse direction, one can replace an >> existing object within the DAG with a carefully crafted alternative >> of >> the same type, but which then wrongly references other dangling >> objects which are then replaced by objects which have the right type >> (this last replacement requires -f force). > > I am not sure I understand what you are saying. > > Anyway in a previous version of this patch I tried to be more explicit > about this, but Junio basically said that he found no value in > discussing this more explicitely...
I would agree that it's not worth discussing it more explicitly.
My comment was more about the direction of the line of reasoning which I felt was a bit Catch 22 when starting from an existing complete DAG (no garbage) and attempting to replace an object with another of a different type and still have a valid DAG. The construction of the replacement items needs to be in the right order if one of the replacements is of the 'wrong' type (such a construction requires the creation or uses, and ultimately replacement of, extraneous objects that aren't (yet) in the DAG).
But as already been said that's a problem for the user of the --force option ;-)
Philip
> > Thanks, > Christian. >