¿Cómo get –detect-branches para trabajar con git-p4?

Mi repository p4 tiene una estructura similar a:

//depot/project/branch1 //depot/project/branch2 //depot/project/branch3 ... etc 

Sin embargo, cuando uso git-p4 para clonar "proyecto", las 3 twigs no se consideran como twigs y todas se clonan en la única twig maestra.

Así es como estoy invocando git-p4 :

 git-p4 clone --detect-branches //depot/project 

Esperaba que git-p4 creara una database git para " project " con tres twigs, y la raíz del proyecto se mapearía a la parte de la ruta después del nombre de la twig (por ejemplo: if //depot/project/branch1 tiene un subdirectory llamado " lib " ( //depot/project/branch1/lib ) entonces mi sistema de files local debería ser algo así como /git_project/lib con 3 git branches).

¿Es lo que estoy esperando mal? ¿Invoco git-p4 incorrectamente?

Si miras el código git-p4 (también originalmente aquí ), ves:

 if self.detectBranches: branches = self.splitFilesIntoBranches(description) for branch in branches.keys(): ## HACK --hwn branchPrefix = self.depotPaths[0] + branch + "/" 

con splitFilesIntoBranches explorando el repo p4 para las twigs.

Entonces tal vez git-p4 clone //depot/project@all --detect-branches estaría bien (con @all como en esta respuesta SO , y la opción --detect-branches después de la ruta repo)

Dicho esto, si el script no es lo suficientemente inteligente como para gestionarlo, puede ser una solución más simple ejecutarlo 3 veces, una por twig e importar el resultado en un repository de Git.

Acabo de trabajar en un error relacionado con --detect-branches . El script hace algunas cosas:

  1. detectar los nombres de las twigs con datos p4
  2. crea un map del padre de cada twig
  3. mapear los files a una twig específica
  4. eliminar el prefijo de twig antes de comprometerse en git

Deberá seguir el código para asegurarse de que cada paso se realice correctamente. Usar pdb para hacer esto funciona bastante bien.

Los pasos 1 y 2 se realizan en P4Sync.getBranchMapping

El paso 3 se realiza en P4Sync.splitFilesIntoBranches

Para el paso 4. esto se hace con P4Sync.stripRepoPath . Establezca un punto de quiebre allí, y puede ver si las twigs se han detectado y los files se renombran correctamente.