From: Christian Couder Date: Sun, 01 Sep 2013 11:53:21 GMT Subject: Re: [PATCH v3 01/11] replace: forbid replacing an object with one of a different type Message-ID: <20130901.135321.1182162250658468787.chriscool@tuxfamily.org> In-Reply-To: <7D7C5D53BA544AAD92B05DF9635926C8@PhilipOakley> From: "Philip Oakley" > > Sorry for not replying earlier in the series. > > From: "Christian Couder" >> 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... Thanks, Christian.