All of lore.kernel.org
 help / color / mirror / Atom feed
From: Martin Erik Werner <martinerikwerner@gmail.com>
To: git@vger.kernel.org
Cc: richih@debian.org, tboegi@web.de, gitster@pobox.com,
	pclouds@gmail.com,
	Martin Erik Werner <martinerikwerner@gmail.com>
Subject: [PATCH v4 0/4] Handling of in-tree symlinks for absolute paths
Date: Sun,  2 Feb 2014 02:59:07 +0100	[thread overview]
Message-ID: <1391306351-13237-1-git-send-email-martinerikwerner@gmail.com> (raw)
In-Reply-To: <20140131202142.GA9731@mule>

Hmm, maybe fourth time's the ch...nevermind.

On Sat, Feb 01, 2014 at 02:31:21AM +0100, Martin Erik Werner wrote:
> On Fri, Jan 31, 2014 at 11:37:29PM +0100, Torsten Bögershausen wrote:
> > On 2014-01-31 21.22, Martin Erik Werner wrote:
(...)
> > > diff --git a/cache.h b/cache.h
> > > index ce377e1..242f27d 100644
> > > --- a/cache.h
> > > +++ b/cache.h
> > > @@ -426,6 +426,7 @@ extern void verify_filename(const char *prefix,
> > >                       int diagnose_misspelt_rev);
> > >  extern void verify_non_filename(const char *prefix, const char *name);
> > >  extern int path_inside_repo(const char *prefix, const char *path);
> > > +extern int abspath_part_inside_repo(char *dst, const char *path);
> > abspath_part_inside_repo() is only used in setup.c, isn't it?
> > In this case we don't need it in cache.h, it can be declared inside setup.c as
> > 
> > static int abspath_part_inside_repo(char *dst, const char *path);
> > (or "static inline" )
> > 
> > -----------------
> > (And not in this patch: see the final setup.c:)
> > 
> >         if (g) {
> >             free(npath);
> >             return NULL;
> >         }
> > 
> > If this is the only caller of abspath_part_inside_repo(),
> > then  do we need npath 2 times as a parameter ?
> > Or can we re-write it to look like this:
> > 
> > static inline int abspath_part_inside_repo(char *path)
> > [
> > ]
> 
> I guess I've over-generalised it a bit too much, that should rather be
> done if-and-when, I presume?
> 
> It is indeed only used in setup.c and only by the prefix_path_gently
> function so static inline then?
> 
> Hmm, for single-parameter it should suffice to simply move the parameter
> down into the function, like so?:
>   const char* src;
>   src = dst;
> and carry on as before (obviously also renaming the variables sensibly),
> or did you have something else in mind?
> 
> (I added two parameters since I was glancing at 'normalize_path_copy_len'
> for inspiration, and was thinking about (purely theoretical) re-use in
> other cases rather than minimizing it for the time being.)
> 
> What do you mean with the "(And not in this patch"... bit; what "final
> setup.c"?

As per Torsten's suggestions I've re-worked abspath_part_inside_repo function
to only take one parameter and also put it as 'static inline' before
'prefix_path_gently' since currently only used once. (The change turned
out larger/nicer than I first guessed, since the 'src' pointer and copying
could be dropped completely.)

On Sat, Feb 01, 2014 at 09:31:26AM +0700, Duy Nguyen wrote:
> On Sat, Feb 1, 2014 at 3:22 AM, Martin Erik Werner
> <martinerikwerner@gmail.com> wrote:
(...)
> > +       // check root level
> 
> Um.. no C++ style comments. And there should be a test that work_tree
> is the prefix of src (common case). If so we can return early and do
> not need to do real_path() on every path component.
(...)

Oops, comments fixed.

I've added the check for work tree as existing prefix, which also had the nice
side-effect of checking the case of the work tree being the root of the
filesystem as a bonus.

This new single-buffer version also uses 'offset_1st_component' to move past
the root (since not having to worry about copying).

Martin Erik Werner (4):
  t0060: Add test for manipulating symlinks via absolute paths
  t0060: Add test for prefix_path when path == work tree
  setup: Add 'abspath_part_inside_repo' function
  setup: Don't dereference in-tree symlinks for absolute paths

 setup.c               | 93 ++++++++++++++++++++++++++++++++++++++++-----------
 t/t0060-path-utils.sh | 11 ++++++
 2 files changed, 84 insertions(+), 20 deletions(-)

-- 
1.8.5.2

  reply	other threads:[~2014-02-02  1:59 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-15 12:48 git-mv with absolute path derefereces symlinks Martin Erik Werner
2014-01-26 14:22 ` [PATCH 0/2] in-tree symlink handling with absolute paths Martin Erik Werner
2014-01-26 14:22   ` [PATCH 1/2] t0060: Add test for manipulating symlinks via " Martin Erik Werner
2014-01-26 14:22   ` [PATCH 2/2] setup: Don't dereference in-tree symlinks for " Martin Erik Werner
2014-01-26 17:19     ` Torsten Bögershausen
2014-01-27  0:07       ` Martin Erik Werner
2014-01-27  0:07         ` [PATCH v2 " Martin Erik Werner
2014-01-27  0:49           ` Duy Nguyen
2014-01-27 16:31           ` Junio C Hamano
2014-01-31 20:21           ` [PATCH v3 0/4] " Martin Erik Werner
2014-02-02  1:59             ` Martin Erik Werner [this message]
2014-02-02  1:59               ` [PATCH v4 1/4] t0060: Add test for manipulating symlinks via " Martin Erik Werner
2014-02-02  1:59               ` [PATCH v4 2/4] t0060: Add test for prefix_path when path == work tree Martin Erik Werner
2014-02-02  1:59               ` [PATCH v4 3/4] setup: Add 'abspath_part_inside_repo' function Martin Erik Werner
2014-02-02  2:19                 ` Duy Nguyen
2014-02-02  2:23                   ` Duy Nguyen
2014-02-02 11:13                   ` Martin Erik Werner
2014-02-02 11:21                     ` David Kastrup
2014-02-02 11:37                       ` Torsten Bögershausen
2014-02-02 12:09                         ` Martin Erik Werner
2014-02-02 12:27                           ` Torsten Bögershausen
2014-02-02 12:15                     ` Duy Nguyen
2014-02-02  1:59               ` [PATCH v4 4/4] setup: Don't dereference in-tree symlinks for absolute paths Martin Erik Werner
2014-02-02 16:35               ` [PATCH v5 0/5] Handling of " Martin Erik Werner
2014-02-02 16:35                 ` [PATCH v5 1/5] t0060: Add test for manipulating symlinks via " Martin Erik Werner
2014-02-03 18:50                   ` Junio C Hamano
2014-02-03 19:52                     ` Junio C Hamano
2014-02-03 20:12                     ` Martin Erik Werner
2014-02-02 16:35                 ` [PATCH v5 2/5] t0060: Add test for prefix_path when path == work tree Martin Erik Werner
2014-02-02 16:35                 ` [PATCH v5 3/5] t0060: Add tests for prefix_path when path begins with " Martin Erik Werner
2014-02-02 16:35                 ` [PATCH v5 4/5] setup: Add 'abspath_part_inside_repo' function Martin Erik Werner
2014-02-03 21:00                   ` Junio C Hamano
2014-02-03 23:16                     ` Martin Erik Werner
2014-02-04 18:09                       ` Junio C Hamano
2014-02-04 18:32                         ` Martin Erik Werner
2014-02-02 16:35                 ` [PATCH v5 5/5] setup: Don't dereference in-tree symlinks for absolute paths Martin Erik Werner
2014-02-03  4:15                   ` Duy Nguyen
2014-02-03 13:17                     ` Martin Erik Werner
2014-02-04  0:05                       ` Junio C Hamano
2014-02-04 14:25                 ` [PATCH v6 0/6] Handling of " Martin Erik Werner
2014-02-04 14:25                   ` [PATCH v6 1/6] t3004: Add test for ls-files on symlinks via " Martin Erik Werner
2014-02-04 14:25                   ` [PATCH v6 2/6] t0060: Add test for prefix_path " Martin Erik Werner
2014-02-04 14:25                   ` [PATCH v6 3/6] t0060: Add test for prefix_path when path == work tree Martin Erik Werner
2014-02-04 14:25                   ` [PATCH v6 4/6] t0060: Add tests for prefix_path when path begins with " Martin Erik Werner
2014-02-04 20:00                     ` Torsten Bögershausen
2014-02-04 20:07                       ` Junio C Hamano
2014-02-04 14:25                   ` [PATCH v6 5/6] setup: Add 'abspath_part_inside_repo' function Martin Erik Werner
2014-02-04 19:18                     ` Junio C Hamano
2014-02-04 14:25                   ` [PATCH v6 6/6] setup: Don't dereference in-tree symlinks for absolute paths Martin Erik Werner
2014-01-31 20:22           ` [PATCH v3 1/4] t0060: Add test for manipulating symlinks via " Martin Erik Werner
2014-01-31 20:22           ` [PATCH v3 2/4] t0060: Add test for prefix_path when path == work tree Martin Erik Werner
2014-01-31 20:22           ` [PATCH v3 3/4] setup: Add 'abspath_part_inside_repo' function Martin Erik Werner
2014-01-31 22:37             ` Torsten Bögershausen
2014-02-01  1:31               ` Martin Erik Werner
2014-02-01  2:31             ` Duy Nguyen
2014-01-31 20:23           ` [PATCH v3 4/4] setup: Don't dereference in-tree symlinks for absolute paths Martin Erik Werner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1391306351-13237-1-git-send-email-martinerikwerner@gmail.com \
    --to=martinerikwerner@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=pclouds@gmail.com \
    --cc=richih@debian.org \
    --cc=tboegi@web.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.