Re: [PATCHv2] git-mv: Keep moved index entries inact

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Junio C Hamano
Date: Friday, July 25, 2008 - 11:46 pm

Petr Baudis <pasky@suse.cz> writes:


Thanks.  I think I've managed to fix the rename_index_entry_at() in a
satisfactory way, and also made builtin-mv to allow "mv -f symlink file"
and "mv -f file symlink".

I do not agree with the semantics of this test seems to want, though.


A symlink to us is just a different kind of blob, and by definition a blob
is the leaf level of a tree structure that represents the working tree in
the index. There won't be anything hanging below it, and when adding
things to the index we should not dereference the symlink to see where it
leads to.

Traditionally we have been loose about this check, and the normal "git
add" and "git update-index" codepath is still forever broken, and we
allow:

	$ mkdir dir
        $ >dir/file
        $ ln -s dir symlink
        $ git add symlink/file

but some codepaths that matter more (because they do larger damage
unattended, as opposed to the above command sequence that can be avoided
by user education a bit more easily), such as "git apply" and "git
read-tree", have been corrected using has_symlink_leading_path() since mid
2007.  We would need to follow through c40641b (Optimize symlink/directory
detection, 2008-05-09) and further fix "git add" and "git update-index"
codepaths to forbid the above command sequence.

So my take on the above test piece is that after:

	>moved
	mkdir dir
        >dir/file
        ln -s dir symlink
	git add moved dir symlink

This should fail, as it is an overwrite:

	git mv moved symlink

and with "-f", the command should simply remove symlink and replace it
with a regular file whose contents come from the original "moved".

IOW, what a symlink points at should not matter.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC][PATCH 0/7] Submodule support in git mv, git rm, Petr Baudis, (Wed Jul 16, 12:11 pm)
[PATCH 1/7] git-mv: Remove dead code branch, Petr Baudis, (Wed Jul 16, 12:11 pm)
[PATCH 5/7] git mv: Support moving submodules, Petr Baudis, (Wed Jul 16, 12:11 pm)
[PATCH 6/7] git rm: Support for removing submodules, Petr Baudis, (Wed Jul 16, 12:11 pm)
[PATCH 7/7] t7403: Submodule git mv, git rm testsuite, Petr Baudis, (Wed Jul 16, 12:11 pm)
Re: [PATCH 6/7] git rm: Support for removing submodules, Johannes Schindelin, (Wed Jul 16, 3:41 pm)
Re: [PATCH 5/7] git mv: Support moving submodules, Junio C Hamano, (Wed Jul 16, 7:37 pm)
Re: [PATCH 6/7] git rm: Support for removing submodules, Johannes Schindelin, (Thu Jul 17, 5:59 am)
Re: [PATCH 5/7] git mv: Support moving submodules, Petr Baudis, (Thu Jul 17, 6:06 am)
[PATCH] git-mv: Keep moved index entries inact, Petr Baudis, (Thu Jul 17, 3:31 pm)
[PATCH] git mv: Support moving submodules, Petr Baudis, (Thu Jul 17, 3:34 pm)
Re: [PATCH] git-mv: Keep moved index entries inact, Junio C Hamano, (Sat Jul 19, 4:54 pm)
Re: [PATCH] git-mv: Keep moved index entries inact, Petr Baudis, (Sun Jul 20, 5:23 pm)
[PATCHv2] git-mv: Keep moved index entries inact, Petr Baudis, (Sun Jul 20, 5:25 pm)
Re: [PATCH] git-mv: Keep moved index entries inact, Johannes Schindelin, (Sun Jul 20, 6:20 pm)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Junio C Hamano, (Sun Jul 20, 9:36 pm)
Re: [PATCH] git-mv: Keep moved index entries inact, Petr Baudis, (Mon Jul 21, 12:18 am)
Re: [PATCH] git-mv: Keep moved index entries inact, Junio C Hamano, (Mon Jul 21, 12:38 am)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Junio C Hamano, (Fri Jul 25, 11:46 pm)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Petr Baudis, (Sun Jul 27, 6:41 am)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Johannes Schindelin, (Mon Jul 28, 8:06 am)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Johannes Schindelin, (Mon Jul 28, 8:14 am)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Johannes Schindelin, (Mon Jul 28, 11:24 am)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Junio C Hamano, (Mon Jul 28, 12:19 pm)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Johannes Schindelin, (Mon Jul 28, 4:41 pm)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Johannes Schindelin, (Mon Jul 28, 4:55 pm)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Petr Baudis, (Mon Jul 28, 5:17 pm)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Junio C Hamano, (Mon Jul 28, 5:46 pm)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Junio C Hamano, (Mon Jul 28, 10:23 pm)
Not going beyond symbolic links, Junio C Hamano, (Mon Aug 4, 12:49 am)
Re: Not going beyond symbolic links, Linus Torvalds, (Mon Aug 4, 5:21 pm)
Re: Not going beyond symbolic links, Junio C Hamano, (Mon Aug 4, 5:54 pm)
Re: Not going beyond symbolic links, Linus Torvalds, (Mon Aug 4, 6:43 pm)
Re: Not going beyond symbolic links, Johannes Schindelin, (Mon Aug 4, 6:59 pm)
Re: Not going beyond symbolic links, Linus Torvalds, (Mon Aug 4, 7:28 pm)
Re: Not going beyond symbolic links, Junio C Hamano, (Mon Aug 4, 9:44 pm)
Re: Not going beyond symbolic links, Johannes Schindelin, (Tue Aug 5, 4:23 am)
Re: Not going beyond symbolic links, Junio C Hamano, (Wed Aug 6, 11:52 pm)
Re: Not going beyond symbolic links, Junio C Hamano, (Fri Aug 8, 1:55 pm)
Re: Not going beyond symbolic links, Linus Torvalds, (Fri Aug 8, 4:45 pm)