All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Keeping <john@keeping.me.uk>
To: "Miklós Fazekas" <mfazekas@szemafor.com>
Cc: Pete Wyckoff <pw@padd.com>,
	git@vger.kernel.org, Gary Gibbons <ggibbons@perforce.com>
Subject: Re: [PATCH] git p4: chdir resolves symlinks only for relative paths
Date: Thu, 7 Mar 2013 09:13:18 +0000	[thread overview]
Message-ID: <20130307091317.GY7738@serenity.lan> (raw)
In-Reply-To: <CAAMmcSQszVbDERd964VLu1d4UG7SihC+Pn99D0gPvG7HAZp2UQ@mail.gmail.com>

On Thu, Mar 07, 2013 at 09:36:06AM +0100, Miklós Fazekas wrote:
> Sorry for the late turnaround here is an improved version. Now chdir
> has an optional argument client_path, if it's true then we don't do
> os.getcwd. I think that my first patch is also valid too - when the
> path is absolute no need for getcwd no matter what is the context,
> when it's relative we have to use os.getcwd() no matter of the
> context.
> 
> ---
> If p4 client is configured to /p/foo which is a symlink:
> /p/foo -> /vol/barvol/projects/foo.  Then resolving the
> symlink will confuse p4:
> "Path /vol/barvol/projects/foo/... is not under client root
> /p/foo". While AltRoots in p4 client specification can be
> used as a workaround on p4 side, git-p4 should not resolve
> symlinks in client paths.
> chdir(dir) uses os.getcwd() after os.chdir(dir) to resolve
> relative paths, but as a sideeffect it resolves symlinks
> too. Now for client paths we don't call os.getcwd().
> 
> Signed-off-by: Miklós Fazekas <mfazekas@szemafor.com>
> ---
>  git-p4.py |   11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/git-p4.py b/git-p4.py
> index 0682e61..2bd8cc2 100755
> --- a/git-p4.py
> +++ b/git-p4.py
> @@ -68,12 +68,17 @@ def p4_build_cmd(cmd):
>          real_cmd += cmd
>      return real_cmd
> 
> -def chdir(dir):
> +def chdir(dir,client_path=False):

Style (space after comma):

    def chdir(dir, client_path=False):

>      # P4 uses the PWD environment variable rather than getcwd(). Since we're
>      # not using the shell, we have to set it ourselves.  This path could
>      # be relative, so go there first, then figure out where we ended up.
> +    # os.getcwd() will resolve symlinks, so we should avoid it for
> +    # client_paths.
>      os.chdir(dir)
> -    os.environ['PWD'] = os.getcwd()
> +    if client_path:
> +        os.environ['PWD'] = dir
> +    else:
> +               os.environ['PWD'] = os.getcwd()

Indentation seems to have gone a bit wrong here...

> 
>  def die(msg):
>      if verbose:
> @@ -1554,7 +1559,7 @@ class P4Submit(Command, P4UserMap):
>              new_client_dir = True
>              os.makedirs(self.clientPath)
> 
> -        chdir(self.clientPath)
> +        chdir(self.clientPath,client_path=True)

Again, there should be a space after the comma here.

>          if self.dry_run:
>              print "Would synchronize p4 checkout in %s" % self.clientPath
>          else:
> -- 
> 1.7.10.2 (Apple Git-33)

  reply	other threads:[~2013-03-07  9:13 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CAAMmcSSvrsZqEVf68Nrqy_ZG6r5ESKhtx7JdQ7vzypkZ3gOFnA@mail.gmail.com>
2013-01-29  8:37 ` [PATCH] git p4: chdir resolves symlinks only for relative paths Miklós Fazekas
2013-02-03 23:08   ` Pete Wyckoff
2013-03-07  8:36     ` Miklós Fazekas
2013-03-07  9:13       ` John Keeping [this message]
2013-03-07 23:19         ` [PATCH 0/3] fix git-p4 client root symlink problems Pete Wyckoff
2013-03-07 23:19           ` [PATCH 1/3] git p4 test: make sure P4CONFIG relative path works Pete Wyckoff
2013-03-07 23:19           ` [PATCH 2/3] git p4 test: should honor symlink in p4 client root Pete Wyckoff
2013-03-08  6:42             ` Johannes Sixt
2013-03-11 21:45               ` [PATCH v2 0/3] fix git-p4 client root symlink problems Pete Wyckoff
2013-03-11 21:45                 ` [PATCH v2 1/3] git p4 test: make sure P4CONFIG relative path works Pete Wyckoff
2013-03-11 21:45                 ` [PATCH v2 2/3] git p4 test: should honor symlink in p4 client root Pete Wyckoff
2013-03-11 21:45                 ` [PATCH v2 3/3] git p4: avoid expanding client paths in chdir Pete Wyckoff
2013-03-07 23:19           ` [PATCH " Pete Wyckoff

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=20130307091317.GY7738@serenity.lan \
    --to=john@keeping.me.uk \
    --cc=ggibbons@perforce.com \
    --cc=git@vger.kernel.org \
    --cc=mfazekas@szemafor.com \
    --cc=pw@padd.com \
    /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.