mirror of
https://github.com/git/git.git
synced 2024-11-29 13:06:07 +08:00
Merge branch 'js/git-submodule-trailing-slash'
* js/git-submodule-trailing-slash: submodule: warn about non-submodules Let ls-files strip trailing slashes in submodules' paths
This commit is contained in:
commit
8c5514906a
@ -262,6 +262,21 @@ static const char *verify_pathspec(const char *prefix)
|
||||
return max ? xmemdupz(prev, max) : NULL;
|
||||
}
|
||||
|
||||
static void strip_trailing_slash_from_submodules(void)
|
||||
{
|
||||
const char **p;
|
||||
|
||||
for (p = pathspec; *p != NULL; p++) {
|
||||
int len = strlen(*p), pos;
|
||||
|
||||
if (len < 1 || (*p)[len - 1] != '/')
|
||||
continue;
|
||||
pos = cache_name_pos(*p, len - 1);
|
||||
if (pos >= 0 && S_ISGITLINK(active_cache[pos]->ce_mode))
|
||||
*p = xstrndup(*p, len - 1);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Read the tree specified with --with-tree option
|
||||
* (typically, HEAD) into stage #1 and then
|
||||
@ -510,6 +525,11 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix)
|
||||
|
||||
pathspec = get_pathspec(prefix, argv + i);
|
||||
|
||||
/* be nice with submodule patsh ending in a slash */
|
||||
read_cache();
|
||||
if (pathspec)
|
||||
strip_trailing_slash_from_submodules();
|
||||
|
||||
/* Verify that the pathspec matches the prefix */
|
||||
if (pathspec)
|
||||
prefix = verify_pathspec(prefix);
|
||||
@ -533,7 +553,6 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix)
|
||||
show_killed | show_modified))
|
||||
show_cached = 1;
|
||||
|
||||
read_cache();
|
||||
if (prefix)
|
||||
prune_cache(prefix);
|
||||
if (with_tree) {
|
||||
|
@ -59,7 +59,7 @@ resolve_relative_url ()
|
||||
#
|
||||
module_list()
|
||||
{
|
||||
git ls-files --stage -- "$@" | grep '^160000 '
|
||||
git ls-files --error-unmatch --stage -- "$@" | grep '^160000 '
|
||||
}
|
||||
|
||||
#
|
||||
|
@ -234,4 +234,17 @@ test_expect_success 'gracefully add submodule with a trailing slash' '
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'ls-files gracefully handles trailing slash' '
|
||||
|
||||
test "init" = "$(git ls-files init/)"
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'submodule <invalid-path> warns' '
|
||||
|
||||
git submodule no-such-submodule 2> output.err &&
|
||||
grep "^error: .*no-such-submodule" output.err
|
||||
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user