From: Bert Wesarg Date: Sat, 16 Oct 2010 13:30:48 GMT Subject: Re: [PATCH] merge-file: correctly find files when called in subdir Message-ID: In-Reply-To: <33ab2f03ed522e1a9be202017b7bbfe35e6d7a99.1287228637.git.trast@student.ethz.ch> On Sat, Oct 16, 2010 at 13:33, Thomas Rast wrote: > Since b541248 (merge.conflictstyle: choose between "merge" and "diff3 > -m" styles, 2008-08-29), git-merge-file uses setup_directory_gently(), > thus cd'ing around to find any possible config files to use. > > This broke merge-file when it is called from within a subdirectory of > a repository, and the arguments are all relative paths. > > Fix by prepending the prefix, as passed down from the main git > executable, if there is any. > > Signed-off-by: Thomas Rast > --- >  builtin/merge-file.c  |   11 ++++++++++- >  t/t6023-merge-file.sh |    8 ++++++++ >  2 files changed, 18 insertions(+), 1 deletions(-) > > diff --git a/builtin/merge-file.c b/builtin/merge-file.c > index b6664d4..b873fee 100644 > --- a/builtin/merge-file.c > +++ b/builtin/merge-file.c > @@ -65,10 +66,18 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix) >                                     "%s\n", strerror(errno)); >        } > > +       if (prefix) > +               prefixlen = strlen(prefix); > + >        for (i = 0; i < 3; i++) { > +               const char *name; > +               if (prefix) > +                       name = prefix_filename(prefix, prefixlen, argv[i]); > +               else > +                       name = argv[i]; I think you can safe this condition, if you set prefixlen to 0. Bert