test-path-utils.c: remove incorrect assumption
In normalize_ceiling_entry(), we test that normalized paths end with slash, *unless* the path to be normalized was already the root directory. However, normalize_path_copy() does not even enforce this condition. Even worse: on Windows, the root directory gets translated into a Windows directory by the Bash before being passed to `git.exe` (or `test-path-utils.exe`), which means that we cannot even know whether the path that was passed to us was the root directory to begin with. This issue has already caused endless hours of trying to "fix" the MSYS2 runtime, only to break other things due to MSYS2 ensuring that the converted path maintains the same state as the input path with respect to any final '/'. So let's just forget about this test. It is non-essential to Git's operation, anyway. Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Ray Donnelly <mingw.android@gmail.com>
This commit is contained in:
parent
22f698cb18
commit
b2a7123b99
5
path.c
5
path.c
@ -676,6 +676,11 @@ const char *remove_leading_path(const char *in, const char *prefix)
|
|||||||
* normalized, any time "../" eats up to the prefix_len part,
|
* normalized, any time "../" eats up to the prefix_len part,
|
||||||
* prefix_len is reduced. In the end prefix_len is the remaining
|
* prefix_len is reduced. In the end prefix_len is the remaining
|
||||||
* prefix that has not been overridden by user pathspec.
|
* prefix that has not been overridden by user pathspec.
|
||||||
|
*
|
||||||
|
* NEEDSWORK: This function doesn't perform normalization w.r.t. trailing '/'.
|
||||||
|
* For everything but the root folder itself, the normalized path should not
|
||||||
|
* end with a '/', then the callers need to be fixed up accordingly.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
int normalize_path_copy_len(char *dst, const char *src, int *prefix_len)
|
int normalize_path_copy_len(char *dst, const char *src, int *prefix_len)
|
||||||
{
|
{
|
||||||
|
@ -21,8 +21,6 @@ static int normalize_ceiling_entry(struct string_list_item *item, void *unused)
|
|||||||
if (normalize_path_copy(buf, ceil) < 0)
|
if (normalize_path_copy(buf, ceil) < 0)
|
||||||
die("Path \"%s\" could not be normalized", ceil);
|
die("Path \"%s\" could not be normalized", ceil);
|
||||||
len = strlen(buf);
|
len = strlen(buf);
|
||||||
if (len > 1 && buf[len-1] == '/')
|
|
||||||
die("Normalized path \"%s\" ended with slash", buf);
|
|
||||||
free(item->string);
|
free(item->string);
|
||||||
item->string = xstrdup(buf);
|
item->string = xstrdup(buf);
|
||||||
return 1;
|
return 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user