git/list[1] front-page[2] threads[3] people[4] search[5] about
 

is git-p4 compatible with p4/linux?

From
ATAlexander Tomlinson <alex@aivor.com>
Date
Apr 17, 2013, 04:31 UTC
Message-ID
<7BF81DF9-941D-400B-8304-6DA5F5C82D4F@aivor.com>

git-p4.py (1.8.2.1.418.gaec3f77) has at least two behaviors that seem to be incompatible with the version of p4 that I recently downloaded from perforce.com (P4/LINUX26X86_64/2013.1/610569).

TLDR: Is git-p4 written for an old version of p4 CLI with different
behavior?  Or for a windows or mac release of p4?  Or am I missing
something?

First issue -----------

git-p4 assumes the output of 'p4 print' adds a newline to the target. To work around this, git-p4.py strips the last char from symlinks as shown in the following snippet:

    if type_base =3D=3D "symlink":
        git_mode =3D "120000"
        # p4 print on a symlink contains "target\n"; remove the newline
        data =3D ''.join(contents)
        contents =3D [data[:-1]]
But my 'p4 print' does not output the newline:
    $ ls -l pcre
    lrwxrwxrwx 1 user group 12 Apr 16 10:27 pcre -> ../libs/pcre
    $ p4 print -q pcre | od -t x1a
    0000000  2e  2e  2f  6c  69  62  73  2f  70  63  72  65
             .   .   /   l   i   b   s   /   p   c   r   e
    0000014

If I use 'git p4 clone' the above file shows up in git as a symlink to '../libs/pcr'. I had another symlink whose target had a strlen of 1 and the 'git p4 clone' failed b/c after stripping the last char the result was an empty string.

Second issue ------------

git-p4 uses 'p4 print -q -o o FILE' to print a file to stdout. At least that is how I interpret this snippet:

    text = p4_read_pipe(['print', '-q', '-o', '-', file['depotFile']])

However, p4/Linux prints to stdout by default and '-o -' will save the output in a file named '-'.

My git and p4 versions:
    $ git --version
    git version 1.8.2.1.418.gaec3f77
    $ p4 -V
    Perforce - The Fast Software Configuration Management System.
    Copyright 1995-2013 Perforce Software.  All rights reserved.
    This product includes software developed by the OpenSSL Project
    for use in the OpenSSL Toolkit (http://www.openssl.org/)
    See 'p4 help legal' for full OpenSSL license information
    Version of OpenSSL Libraries: OpenSSL 1.0.1c 10 May 2012
    Rev. P4/LINUX26X86_64/2013.1/610569 (2013/03/19).
--Alex
Next: Alexander Tomlinson
Message 1 of 8 in “is git-p4 compatible with p4/linux?”
  1. Alexander TomlinsonApr 17, 2013
  2. Alexander TomlinsonApr 17, 2013
  3. Pete WyckoffApr 19, 2013
  4. Alexander TomlinsonApr 19, 2013
  5. Pete WyckoffApr 19, 2013
  6. Alex TomlinsonApr 19, 2013
  7. David AguilarApr 20, 2013
  8. Pete WyckoffApr 20, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.