• Miklós Fazekas's avatar
    git p4: avoid expanding client paths in chdir · bbd84863
    Miklós Fazekas authored
    The generic chdir() helper sets the PWD environment
    variable, as that is what is used by p4 to know its
    current working directory.  Normally the shell would
    do this, but in git-p4, we must do it by hand.
    However, when the path contains a symbolic link,
    os.getcwd() will return the physical location.  If the
    p4 client specification includes symlinks, setting PWD
    to the physical location causes p4 to think it is not
    inside the client workspace.  It complains, e.g.
        Path /vol/bar/projects/foo/... is not under client root /p/foo
    One workaround is to use AltRoots in the p4 client specification,
    but it is cleaner to handle it directly in git-p4.
    Other uses of chdir still require setting PWD to an
    absolute path so p4 features like P4CONFIG work.  See
    bf1d68ff (git-p4: use absolute directory for PWD env
    var, 2011-12-09).
    [ pw: tweak patch and commit message ]
    Thanks-to: John Keeping <john@keeping.me.uk>
    Signed-off-by: default avatarPete Wyckoff <pw@padd.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
git-p4.py 123 KB