git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 3/3] t3600: test rm of path with changed leading symlinks

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 4, 2013, 19:42 UTC
Message-ID
<7v6202hykh.fsf@alter.siamese.dyndns.org>
In-Reply-To
<20130404190621.GA7484@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 11 quoted lines
> +test_expect_success SYMLINKS 'replace dir with symlink to dir (same content)' '
> +	git reset --hard &&
> +	rm -rf d e &&
> +	mkdir e &&
> +	echo content >e/f &&
> +	ln -s e d &&
> +	git rm d/f &&
> +	test_must_fail git rev-parse --verify :d/f &&
> +	test -h d &&
> +	test_path_is_dir e
> +'

This does not check if e/f still exists in the working tree, and I suspect "git rm d/f" removes it.

If you do this:
	rm -fr d e
        mkdir e
        >e/f
        ln -s e d
        git add d/f

we do complain that d/f is beyond a symlink (meaning that all you can add is the symlink d that may happen to point at something).

Silent removal of e/f that is unrelated to the current project's tracked contents feels very wrong, and at the same time it looks to me that it is inconsistent with what we do when adding.

I need a bit more persuading to understand why it is not a bug, I think.

Show 13 quoted lines
> +test_expect_success SYMLINKS 'replace dir with symlink to dir (new content)' '
> +	git reset --hard &&
> +	rm -rf d e &&
> +	mkdir e &&
> +	echo changed >e/f &&
> +	ln -s e d &&
> +	test_must_fail git rm d/f &&
> +	git rev-parse --verify :d/f &&
> +	test -h d &&
> +	test_path_is_file e/f
> +'
> +
>  test_done
Previous: Jeff KingNext: Jeff King
Message 9 of 18 in “Behavior of git rm”
  1. jpinheiroApr 3, 2013
  2. Jeff KingApr 3, 2013
  3. Junio C HamanoApr 3, 2013
  4. Jeff KingApr 3, 2013
  5. Jeff KingApr 4, 2013
  6. 1/3 rm: do not complain about d/f conflicts during deletionJeff King, Apr 4, 2013
  7. 2/3 t3600: test behavior of reverse-d/f conflictJeff King, Apr 4, 2013
  8. 3/3 t3600: test rm of path with changed leading symlinksJeff King, Apr 4, 2013
  9. Junio C HamanoApr 4, 2013
  10. Jeff KingApr 4, 2013
  11. Junio C HamanoApr 4, 2013
  12. Jeff KingApr 4, 2013
  13. Junio C HamanoApr 4, 2013
  14. Jeff KingApr 4, 2013
  15. Junio C HamanoApr 4, 2013
  16. Jeff KingApr 5, 2013
  17. Junio C HamanoApr 5, 2013
  18. Jeff KingApr 5, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.