Obtener toda la historia de los files con git-p4

Como mencioné en una pregunta anterior , estoy buscando migrar nuestro control de fuente de Perforce a git.
Al mirar a mi alnetworkingedor, encontré git-p4 (hay que cavar un poco más, ya que ni siquiera está en el repository señalado por el enlace. El guión git-p4 real es más difícil de encontrar).

Ahora estoy ejecutando este script, e importa la versión actual de los files en un nuevo repository de git, pero no logro get el historial, no importa lo que haga.

Aquí está la línea de command actual que uso es:

  P4CLIENT = my-p4-clientspec git-p4 clon --max-changes = 1000 --use-client-spec // p4 / path / to / be / imported / ... 

Entonces, la verdadera pregunta es: si alguien ha logrado importar un depósito de P4, incluido el historial , me gustaría saber cómo lo hizo.

¡Gracias!

joce.

Intente agregar "@all" a la ruta del file. Por ejemplo, esto produce un informe de revisión única para mí:

python /usr/share/doc/git-core/contrib/fast-import/git-p4 clone --destination=master-pom \ //depot/services/master-pom/trunk/... 

Este command importó el historial completo:

 python /usr/share/doc/git-core/contrib/fast-import/git-p4 clone --destination=master-pom \ //depot/services/master-pom/trunk/...@all 

Intenté usar el ejemplo git-p4, pero me rendí por varias razones y escribí mi propia bomba de import rápida. Fue hace un time, por lo que algunos de los problemas pueden haberse solucionado ahora: pero git-p4 tuvo problemas con las lists de cambios grandes (como la creación inicial de una sucursal) (aunque el uso de las especificaciones del cliente puede haber ayudado, yo no creo que lo intenté) y files con el modificador de tipo de file "+ S" (que es Bad and Evil, pero solíamos usarlo). Y mi Python-fu no estaba dispuesta a dejarme solucionar los problemas que tenía.

EDITAR: desde que alguien lo pidió, aquí está.

https://github.com/araqnid/p4utils tiene varias cosas p4, de las cuales p4-git-xfer es el replicador p4-> git (unidireccional). Sin embargo, tiene bastantes problemas, debido a que es principalmente una herramienta personal y no una infraestructura real.

Empezando:

 p4-git-xfer clone -d $PWD/dictionary.git -n //depot/services/midoffice/dictionary/... \ trunk 'release/*' 'branch/*' \ trunk=master release/*=r* branch/*=dev/* 

clonará esa ruta forzada a un "dictionary.git" desnudo. Los primeros arguments después de la ruta base son "especificaciones de twig" que le dicen al replicador dónde encontrar las twigs debajo de la base. Los posteriores (con símbolos '=') son "especificaciones de espejo" que le dicen al replicador cómo crear twigs locales a partir de las importadas. Las especificaciones de twig provocan que se creen "refs / remotes / p4 / trunk", "refs / remotes / p4 / release / 1.0", etc. Las especificaciones del espejo fuerzan "refs / heads / master" para reflejar "refs / remotes / p4 / trunk", "refs / heads / r1.0" para reflejar "refs / remotes / p4 / release / 1.0", etc. como una forma de permitirme seleccionar solo twigs particulares de aquellas que fueron replicadas para propagarse a clones.

Intentará detectar cómo se crea una bifurcación, pero de todos modos es una suposition con Perforce. Aparte de eso, no intenta hacer ningún seguimiento de bifurcación en absoluto: incluso las fusiones de toda la sucursal no se escribirán como tales, lo siento.

Después del clon inicial, ejecutar la p4-git-xfer fetch de p4-git-xfer fetch desde dentro de la réplica de git hará una actualización incremental. La list de cambios de marca de agua alta se toma de marks/p4 dentro del git repo. Este es un file de marcas que importa rápidamente, por lo que si realiza un trabajo de pies elegante como usar la twig de filter para reescribir las cosas, tenga cuidado de que tenga que actualizar esto también.

No es bonito, y tiene algunos problemas de medianos a graves; Lo uso principalmente para mi propia conveniencia, para aislarme de los problemas de Perforce, no como un componente crítico de la infraestructura cotidiana. Es unidireccional: generalmente uso el script p4-am para aplicar los parches creados por git format-patch . Eso en sí mismo solo funciona principalmente, con maldad de análisis general, problemas con saltos de fin de file, cambios binarys, etc.

También estoy tratando de descubrir git-p4. No hay mucha documentation por ahí, desafortunadamente. Me gustaría ponerme en contacto con usted, ya que probablemente podamos ayudarnos mutuamente.

La ayuda de git-p4 es bastante buena:

 man git-p4 

En Ubuntu 12.04 se incluye en el package git-man .

  1. instalar git bash (cli)
  2. instalar p4 cli
  3. instalar Python 2.7
  4. get script de git-p4 >> http://git.kernel.org/cgit/git/git.git/plain/git-p4.py
  5. poner esta secuencia de commands en c / program / files / git / bin /
  6. ahora abra git bash o cmd check escribiendo python done, p4 done, git done, git p4,
  7. crear el espacio de trabajo del cliente llamado git.
  8. git p4 clon depo / ruta / @todo repo / ruta

en caso de que no funcione, establezca la ruta en las variables de entorno para python si python crea un set de problemas P4CLIENT = git