Thank you for your replay.
> I have to be honest: this commit message (including the subject) left me
> quite puzzled as to the intent of this patch.
I still only learn English and correctly express my thoughts while somewhat
difficult.
> If you also have a background story that motivated you to work on this
> patch (for example, if you hit a huge performance bottleneck with some
> tool that fed thousands of absolute paths to Git that needed to be turned
> into paths relative to the worktree's top-level directory), I would
> definitely put that into the commit message, too, if I were you.
I have no such reason. I just saw it and wanted to change it.
> Up until recently, we encouraged dropping the curly brackets from
> single-line statements, but apparently that changed. It is now no longer
> clear, and often left to the taste of the contributor. But not always.
> Sometimes we start a beautiful thread discussion the pros and cons of
> curly brackets in the middle of patch review, and drop altogether
> reviewing the actual patch.
I was guided by the rule from the Documentation/CodingGuidelines:
When there are multiple arms to a conditional and some of them
require braces, enclose even a single line block in braces for
consistency.
And other code from setup.c:
from function get_common_dir:
if (!has_common) {
/* several commands */
} else {
free(candidate->work_tree);
}
from function get_common_dir_noenv:
if (file_exists(path.buf)) {
/* several commands */
} else {
strbuf_addstr(sb, gitdir);
}
> In short: I think your patch does the right thing, and I hope that you
> find my suggestions to improve the patch useful.
I fixed the patch according to your suggestions.
Signed-off-by: Vadim Petrov <[email protected]>
---
setup.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/setup.c b/setup.c
index 8cc34186c..1a414c256 100644
--- a/setup.c
+++ b/setup.c
@@ -27,26 +27,26 @@ static int abspath_part_inside_repo(char *path)
{
size_t len;
size_t wtlen;
char *path0;
int off;
const char *work_tree = get_git_work_tree();
if (!work_tree)
return -1;
wtlen = strlen(work_tree);
len = strlen(path);
- off = offset_1st_component(path);
- /* check if work tree is already the prefix */
- if (wtlen <= len && !strncmp(path, work_tree, wtlen)) {
+ if (wtlen > len || strncmp(path, work_tree, wtlen))
+ off = offset_1st_component(path);
+ else { /* check if work tree is already the prefix */
if (path[wtlen] == '/') {
memmove(path, path + wtlen + 1, len - wtlen);
return 0;
} else if (path[wtlen - 1] == '/' || path[wtlen] == '\0') {
/* work tree is the root, or the whole path */
memmove(path, path + wtlen, len - wtlen + 1);
return 0;
}
/* work tree might match beginning of a symlink to work tree */
off = wtlen;
}
--
2.15.1.433.g936d1b989