Perforce equivalente a la confirmación local de git

Empecé a usar Perforce después de usar Git por un año. ¿Hay algún equivalente de un compromiso local git en mi sucursal a la fuerza?

Básicamente, si quiero trabajar en una tarea compleja que podría necesitar deshacer y rehacer mis cambios específicos, ¿hay alguna forma de lograr esto en Perforce? La forma en que lo haría en Git sería comprometer mis cambios a una twig y tener varias confirmaciones dentro de la twig antes de fusionarme con el maestro.

Creo que p4 shelve puede ser útil para ti aquí.

Respuesta más larga:

La forma en que p4 funciona es que tiene que desbloquear un file usando la p4 edit , o agregar un nuevo file usando p4 add . Esto creará una list de cambios que básicamente tiene todos los files que se organizan para su próxima confirmación.

p4 submit se puede usar para enviar (en la terminología git) todos los cambios en su list de cambios al repository / depósito.

Ahora bien, si no desea enviar de inmediato, puede archivar esos cambios usando p4 shelve . Esto creará un punto de control local de su list de cambios a la que puede volver o deshacer. También puede crear copys múltiples archivadas construyendo una después de la otra. Probablemente puedas replicar todas las funciones de una confirmación de git con este command.

Vea la reference de command de la p4 shelve para más detalles.

La forma clásica de hacer esto en Perforce sería hacer exactamente lo que usted dice: crear una twig, enviarla a esa twig y luego fusionarla nuevamente. Una diferencia frente a Git es que cada cambio realizado en su bifurcación es permanente, y los cambios posteriores se basan en los anteriores: no puede deshacer las confirmaciones anteriores quitándolas del historial, solo hace versiones adicionales. Otro cambio es que cuando se fusiona, está creando una nueva list de cambios en la sucursal de destino que contiene la sum total de todos los cambios que está fusionando desde el origen, por lo que en lugar de aplastar los cambios en su sucursal, aplastas los cambios cuando te fusionas. Puede realizar la fusión en etapas e incluso fusionarse en un order diferente al de los cambios que ocurrieron en su sucursal, de modo que el historial en la sucursal principal puede ser diferente del historial en su sucursal (pero mantiene los indicadores en su sucursal) también).

La versión beta pública actual de Perforce (2015.1) ofrece un enfoque más parecido a Git en el que se dividiría un repository local de Perforce, se realizarían cambios y posiblemente se reescribiría su historial antes de volver a uploadlo al repository compartido: el "local "el historial no es necesariamente visible en ninguna parte del server compartido, ya que tiene la opción de reescribirlo (mientras que cualquier historial asignado al server central, en cualquier twig, es para siempre a less que un administrador lo borre). Más sobre las nuevas capacidades de DVCS de Perforce (nuevamente, esto todavía está en versión beta): http://www.perforce.com/perforce/r15.1/user/dvcs_getting_started.pdf

No parece haber una manera de lograr lo que quieres sin usar una herramienta puente para conectar Git con Perforce.

Estoy en la misma situación que tú en mi trabajo actual y hemos considerado probar un puente de Git-Perforce. Perforce tiene un puente a Git llamado git-fusion que es gratuito para hasta 20 usuarios. Esta es probablemente la mejor herramienta de puente que existe. El propio Git proporciona un command llamado git p4 que le da una funcionalidad más limitada. Su flujo de trabajo con git p4 se verá más o less así:

 # do your work and make your git commits git p4 rebase git p4 submit 

Como habrás adivinado, git p4 rebase va al repository y recibe todos los cambios realizados por otros usuarios en esa twig antes de comprometer tu trabajo en la parte superior. Rebase es necesario porque simula Perforce donde todos tus commits permanecen intactos.

Si decide utilizar una herramienta de puente, tenga en count que probablemente se produzca un cambio importante en la infraestructura de TI y que tenga que convencer a su organización de que vale la pena llevarla a cabo.