Perforce ramificación vs git ramificación

Soy un usuario de Git tratando de aprender Perforce.

En Git, un usuario puede realizar el pago desde la sucursal principal, cambiar algunos files y enviar su código al server en una sucursal diferente con un ID de confirmación específico.

Otro usuario de Git puede verificar esa nueva sucursal usando su ID de confirmación y trabajar en la parte superior.

¿Cómo se puede hacer esto usando Perforce?

Soy un usuario de Git tratando de aprender Perforce.

Lo siento.

¿Cómo se puede hacer esto usando Perforce?

Soy un mejor usuario de Git que un usuario de Perforce, así que corrígeme si algo parece estar mal. Recomiendo leer las páginas man y un tutorial .

No "puede" ser, al less no del modo en que lo hace Git.

En git , cuando creas una twig, estás ramificando todo el estado del repository . Perforce no es compatible con esto, más bien, es "bifurcación" más por file : es decir, usted bifurca el file A en el file B, en cuyo momento el file B contiene una reference al file A que dice "Vine de aquí". Esta reference posterior se puede usar para determinar un ancestro común para fines de fusión. Tengo entendido, sin embargo, que estas references son por file, y que es libre de integrar (fusionar) cualquier file en cualquier otro. (Compare con git, donde "Parent commit" es su retro-reference, pero está en una escala de repository completo).

Puede ramificar sets completos de files utilizando p4 integrate , utilizando la syntax típica de Perforce (p. Ej., //depot/some/path/... ). Normalmente, debe bifurcar un directory completo a otro directory completo, como //depot/main/my_project en //depot/release-1.0/my_project , o algo similar. Perforce, hasta donde yo sé, realmente no se preocupa por las routes: simplemente "ramifica" los files de una location a otra. Cualquier patrón o cordura en los paths depende de usted.

Además, puede usar la p4 branch para crear "especificaciones de twig", que son básicamente una manera de registrar el set fuente de files y sus destinos, para facilitar la bifurcación. (Si toma el ejemplo de la versión, es posible que desee fusionar eventualmente los cambios, o combinar más cambios en la versión, etc.)

Las dos veces que trabajé con Perforce, las sucursales eran una bestia de una naturaleza diferente a la de Git, y aquí hay un poco de diferencia cultural. Las twigs eran comparativamente raras. (Solo los vi usar para lanzamientos, nunca.) No los usamos para las twigs de características, excepto tal vez la más grande de las características; compare con git , donde para mí una "twig de característica" es usualmente "tardó> 1 commit".

Si desprecias a Perforce tanto como yo, debes continuar usando Git. Debo decir que estoy mucho más cómodo usando Git.

Actualmente uso Git-P4 + un set de scripts Bash que escribí ( git-p4-helpers )

Sigo una variación simplificada de este flujo de trabajo :

 $ git checkout p4-integration $ git p4 sync $ git p4 rebase $ git tag last-green <SHA1> # last green build $ git rebase last-green develop $ git checkout -b <my-feature> $ git commit # as needed # Sync Git->P4 (see Github:git-p4-helpers) # Submit using P4 

Todavía hay una cosa que no he podido descifrar, a saber, cómo enviar desde Git-P4 a P4 rápido (cada vez que lo bash lleva una eternidad git p4 sync y muchas otras cosas que lo hacen muy molesto) para enviar desde mi repository de Git directamente a P4. Así que escribí un guión para sincronizar mi repo de Git con mi espacio de trabajo de P4 y luego enviar usando P4.

Por ahora, esto me permite usar todas las características de Git mientras estoy trabajando en mis cambios, luego solo presento usando P4.

Recuerde que forzosamente hace una copy para una twig donde Git simplemente hace un puntero a la nueva twig, que es mucho más rápido.