gitversion-controlmigrationperforcegit-p4

Perforce to Git: Invalid option: -r


I am trying to migrate a project from Perforce into Git. I am using git-p4 as my main tool to do the heavy lifting for me, and it comes by default with Git on Windows:

C:\Program Files\Git\mingw64\libexec\git-core\git-p4.

Following Migrating Perforce to Git in Windows, I have reached the step where I execute my cloning command: git p4 clone <PerforceRepo> (where p4 is an alias for the file git-p4.py)

I keep getting error:

Invalid option: -r.

C:\P4-To-Git>git p4 clone //depot/C:\build\mainline@all .
Importing from //depot/C:/build/mainline@all into .
Reinitialized existing Git repository in C:/P4-To-Git/.git/
Perforce client error:
        p4 -h for usage.
        Invalid option: -r.
Traceback (most recent call last):
  File "C:\Program Files\Git\mingw64\libexec\git-core\git-p4", line 3840, in <module>
    main()
  File "C:\Program Files\Git\mingw64\libexec\git-core\git-p4", line 3834, in main
    if not cmd.run(args):
  File "C:\Program Files\Git\mingw64\libexec\git-core\git-p4", line 3706, in run
    if not P4Sync.run(self, depotPaths):
  File "C:\Program Files\Git\mingw64\libexec\git-core\git-p4", line 3546, in run
    changes = p4ChangesForPaths(self.depotPaths, self.changeRange, self.changes_block_size)
  File "C:\Program Files\Git\mingw64\libexec\git-core\git-p4", line 852, in p4ChangesForPaths
    changeEnd = p4_last_change()
  File "C:\Program Files\Git\mingw64\libexec\git-core\git-p4", line 317, in p4_last_change
    return int(results[0]['change'])
KeyError: 'change'

I have looked into p4-git python file and there is no place where -r is being used. Any help?


Solution

  • Try setting git-p4.retries to 0?

    if retries > 0:
        # Provide a way to not pass this option by setting git-p4.retries to 0
        real_cmd += ["-r", str(retries)]
    

    Or upgrade your p4 executable so it supports the -r global flag -- this option was added in the 2012.2 release:

    Minor new functionality in 2012.2
    
        #384638 *** ** *
            The net.maxwait configurable can be used to specify a hard limit
            (in seconds) on the maximum time that a connection will wait for
            any single network send or receive to complete. The 'p4 sync'
            command now supports a '-r' global flag to specify that the sync
            command should be retried if a network error occurs.