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:
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.