Re: [PATCH] Teach rm to remove submodules when given with a trailing '/'
- From
Johannes Sixt <j.sixt@viscovery.net>
- Date
- Oct 31, 2012, 06:29 UTC
- Message-ID
- <5090C54C.90902@viscovery.net>
- In-Reply-To
- <50904677.2020308@web.de>
Am 10/30/2012 22:28, schrieb Jens Lehmann:
Show 23 quoted lines
> Am 29.10.2012 08:11, schrieb Johannes Sixt:
>> Am 10/29/2012 0:28, schrieb Jens Lehmann:
>>> + /* Remove trailing '/' from directories to find submodules in the index */
>>> + for (i = 0; i < argc; i++) {
>>> + size_t pathlen = strlen(argv[i]);
>>> + if (pathlen && is_directory(argv[i]) && (argv[i][pathlen - 1] == '/'))
>>> + argv[i] = xmemdupz(argv[i], pathlen - 1);
>>> + }
>>> +
>>> pathspec = get_pathspec(prefix, argv);
>>> refresh_index(&the_index, REFRESH_QUIET, pathspec, NULL, NULL);
>>
>> That's wrong: Either move the check below get_pathspec() (which normalizes
>> backslashes to forward-slashes on Windows) or use is_dir_sep().
>
> Thanks for bringing this up.
>
>> But isn't it somewhat dangerous to check pathspec for existance in the
>> worktree without interpreting them? Think of magic pathspec syntax (that
>> we do not have yet, but which may materialize sometime in the future).
>
> I have to admit I'm not aware of magic pathspec syntax. Do you happen to
> have any pointers where I could look at code doing similar things right?cmd_mv() in builtin/mv.c looks like a good candidate. It has to check whether the destination (the last argument) is a directory.
-- Hannes