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

Re: [PATCH] git-p4: Fix depot path stripping

From
Luke Diamand <luke@diamand.org>
Date
Feb 27, 2018, 11:12 UTC
Message-ID
<CAE5ih7-qTJbOYBnP=VPjTvriA9w_e-4DG472mVx-U=NoCRNObw@mail.gmail.com>
In-Reply-To
<CALdXDfcU0gApmfjRbxecGwEwDN1rP4PUqGhPmgbzTuhc3SiWBg@mail.gmail.com>
On 27 February 2018 at 08:43, Nuno Subtil <subtil@gmail.com> wrote:
Show 13 quoted lines
> The issue is that passing in --use-client-spec will always cause git-p4 to
> preserve the full depot path in the working tree that it creates, even when
> --keep-path is not used.
>
> The repro case is fairly simple: cloning a given p4 path that is nested 2 or
> more levels below the depot root will have different results with and
> without --use-client-spec (even when the client spec is just a
> straightforward map of the entire depot).
>
> E.g., 'git p4 clone //p4depot/path/to/some/project/...' will create a
> working tree rooted at project. However, 'git p4 clone --use-client-spec
> //p4depot/path/to/some/project/...' will create a working tree rooted at the
> root of the depot.
I think it _might_ be by design.

At least, the test ./t9809-git-p4-client-view.sh seems to fail for me with your change, although I haven't investigated what's going on:

$ ./t9809-git-p4-client-view.sh ... ... Doing initial import of //depot/dir1/ from revision #head into refs/remotes/p4/master ./t9809-git-p4-client-view.sh: 10: eval: cannot create dir1/file13: Directory nonexistent not ok 23 - subdir clone, submit add

I think originally the logic came from this change:
   21ef5df43 git p4: make branch detection work with --use-client-spec

which was fixing what seems like the same problem but with branch detection enabled.

Show 68 quoted lines
>
> Thanks,
> Nuno
>
>
> On Tue, Feb 27, 2018 at 12:10 AM, Luke Diamand <luke@diamand.org> wrote:
>>
>> On 27 February 2018 at 04:16, Nuno Subtil <subtil@gmail.com> wrote:
>> > When useClientSpec=true, stripping of P4 depot paths doesn't happen
>> > correctly on sync. Modifies stripRepoPath to handle this case better.
>>
>> Can you give an example of how this shows up? I could quickly write a
>> test case for this if I knew what was going on.
>>
>> Thanks
>> Luke
>>
>>
>> >
>> > Signed-off-by: Nuno Subtil <subtil@gmail.com>
>> > ---
>> >  git-p4.py | 12 +++++++++---
>> >  1 file changed, 9 insertions(+), 3 deletions(-)
>> >
>> > diff --git a/git-p4.py b/git-p4.py
>> > index 7bb9cadc69738..3df95d0fd1d83 100755
>> > --- a/git-p4.py
>> > +++ b/git-p4.py
>> > @@ -2480,7 +2480,7 @@ def stripRepoPath(self, path, prefixes):
>> >                      if path.startswith(b + "/"):
>> >                          path = path[len(b)+1:]
>> >
>> > -        elif self.keepRepoPath:
>> > +        if self.keepRepoPath:
>> >              # Preserve everything in relative path name except leading
>> >              # //depot/; just look at first prefix as they all should
>> >              # be in the same depot.
>> > @@ -2490,6 +2490,12 @@ def stripRepoPath(self, path, prefixes):
>> >
>> >          else:
>> >              for p in prefixes:
>> > +               if self.useClientSpec and not self.keepRepoPath:
>> > +                    # when useClientSpec is false, the prefix will
>> > contain the depot name but the path will not
>> > +                    # extract the depot name and add it to the path so
>> > the match below will do the right thing
>> > +                    depot = re.sub("^(//[^/]+/).*", r'\1', p)
>> > +                    path = depot + path
>> > +
>> >                  if p4PathStartsWith(path, p):
>> >                      path = path[len(p):]
>> >                      break
>> > @@ -2526,8 +2532,8 @@ def splitFilesIntoBranches(self, commit):
>> >              # go in a p4 client
>> >              if self.useClientSpec:
>> >                  relPath = self.clientSpecDirs.map_in_client(path)
>> > -            else:
>> > -                relPath = self.stripRepoPath(path, self.depotPaths)
>> > +
>> > +            relPath = self.stripRepoPath(path, self.depotPaths)
>> >
>> >              for branch in self.knownBranches.keys():
>> >                  # add a trailing slash so that a commit into qt/4.2foo
>> >
>> > --
>> > https://github.com/git/git/pull/463
>
>
Previous: Luke DiamandNext: Luke Diamand
Message 3 of 5 in “git-p4: Fix depot path stripping”
  1. git-p4: Fix depot path strippingNuno Subtil, Feb 27, 2018
  2. Luke DiamandFeb 27, 2018
  3. Luke DiamandFeb 27, 2018
  4. Luke DiamandMar 2, 2018
  5. Nuno SubtilMar 2, 2018

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.