Re: [PATCH 5/7] git mv: Support moving submodules
Hi!
On Wed, Jul 16, 2008 at 07:37:57PM -0700, Junio C Hamano wrote:
Show 6 quoted lines
> Petr Baudis <pasky@suse.cz> writes:
>
> > ... The horrid
> > index_path_src_sha1 hack is unfortunately much worse,
>
> This one certainly is ugly beyond words.
Show 23 quoted lines
> By the way, why is it even necessary to rehash the contents when you run
> "mv"?
>
> IOW,
>
> $ >foo
> $ git add foo
> $ echo 1 >foo
> $ git mv foo bar
>
> makes "foo" disappear from the index and adds "bar", but it makes the
> local change added to the index at the same time.
>
> Side note. It actually is a lot worse than that. When you move
> something to another existing entry, the code does not even add
> the object name of moved entry recorded in the index, nor rehashes
> the moved file. This is totally inconsistent!
>
> I personally think these buggy behaviours you are trying to inherit are
> making this patch more complex than necessary. Perhaps this needs to be
> fixed up even further (you did some fix with the first patch) before
> adding new features? For example, I think it is a bug that the
> "overwrite" codepath does not work with symlinks.
I agree that it would be much cleaner to fix this; I got puzzled about
this behaviour a bit, but I was afraid to break the traditional
behaviour. However, if you are feeling this brave, patch to follow up
shortly. :-)
> * Then, only for case (1), you do not call add_file_to_cache() -- because
> you know you do not have anything you can rehash; instead, factor out
> the codepath "git-update-index --cacheinfo" uses and call that.
This is excellent hint, sort of what I hoped for, thanks! I forgot
about --cacheinfo completely, which is truly a shame especially when I
look at the history of this switch. ;-) (BTW, curiously, the commit
lists Linus as an author even though the patch is yours. Maybe this was
merely some imperfection of the early scripts around Git, though.)
I really did not touch git internals for way too long.
--
Petr "Pasky" Baudis
GNU, n. An animal of South Africa, which in its domesticated state
resembles a horse, a buffalo and a stag. In its wild condition it is
something like a thunderbolt, an earthquake and a cyclone. -- A. Pierce