fetch: prefer suffix substitution in compact fetch.output
I have a remote named "jch" and it has a branch with the same name. And fetch.output is set to "compact". Fetching this remote looks like this From https://github.com/gitster/git + eb7fd39f6b...835363af2f jch -> */jch (forced update) 6f11fd5edb..59b12ae96a nd/config-move-to -> jch/* * [new branch] nd/diff-parseopt -> jch/* * [new branch] nd/the-index-final -> jch/* Notice that the local side of branch jch starts with "*" instead of ending with it like the rest. It's not exactly wrong. It just looks weird. This patch changes the find-and-replace code a bit to try finding prefix first before falling back to strstr() which finds a substring from left to right. Now we have something less OCD From https://github.com/gitster/git + eb7fd39f6b...835363af2f jch -> jch/* (forced update) 6f11fd5edb..59b12ae96a nd/config-move-to -> jch/* * [new branch] nd/diff-parseopt -> jch/* * [new branch] nd/the-index-final -> jch/* Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
0d0ac3826a
commit
dc40b24df4
@ -629,9 +629,14 @@ static int find_and_replace(struct strbuf *haystack,
|
||||
const char *needle,
|
||||
const char *placeholder)
|
||||
{
|
||||
const char *p = strstr(haystack->buf, needle);
|
||||
const char *p = NULL;
|
||||
int plen, nlen;
|
||||
|
||||
nlen = strlen(needle);
|
||||
if (ends_with(haystack->buf, needle))
|
||||
p = haystack->buf + haystack->len - nlen;
|
||||
else
|
||||
p = strstr(haystack->buf, needle);
|
||||
if (!p)
|
||||
return 0;
|
||||
|
||||
@ -639,7 +644,6 @@ static int find_and_replace(struct strbuf *haystack,
|
||||
return 0;
|
||||
|
||||
plen = strlen(p);
|
||||
nlen = strlen(needle);
|
||||
if (plen > nlen && p[nlen] != '/')
|
||||
return 0;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user