2011-05-19 21 views
7

Estoy tratando de importar un proyecto del depósito de Perforce de mi empresa a un repositorio de git. Logré conseguir una sola rama en un solo repositorio git, pero lo que quiero hacer es incorporar todo el proyecto más todas las ramas, pero no puedo hacerlo funcionar correctamente.Problema al importar todas las ramas obligatorias en git repo

tengo mi archivo .p4settings:

P4PORT=perforce-server.local:1666 
P4USER=my.username 
P4CLIENT=my.clientspec.name 

Clientspec es bastante simple:

//project/... //my.clientspec.name/project/... 
-//project/External/... //my.clientspec.name/project/External/... 

La segunda línea es para excluir los binarios biblioteca externa de la caja.

que utilizar la línea de comandos para iniciar git-p4 importación:

git p4 clone --verbose --detect-branches --max-changes=100 //project/[email protected] 

Esto va a través y comprueba todos los nombres de las sucursales, etc., y los intentos de importar a partir de los primeros Commit (Este proyecto en particular comienza en lista de cambios 771)

Importing from //project/[email protected] into project 
Initialized empty Git repository in /Users/grant/Development/git_test/project/.git/ 
Reading pipe: git config git-p4.useclientspec 
Reading pipe: git config git-p4.user 
Reading pipe: git config git-p4.password 
Reading pipe: git config git-p4.port 
Reading pipe: git config git-p4.host 
Reading pipe: git config git-p4.client 
p4 -G branches 
Opening pipe: p4 -G branches 
p4 -G branch -o branch-1 
Opening pipe: p4 -G branch -o branch-1 
Reading pipe: git config --bool core.ignorecase 
p4 -G branch -o branch-2 
... 
Opening pipe: p4 -G branch -o branch-n 
p4-git branches: [] 
initial parents: {} 

no estoy seguro de si se supone que las ramas p4-GIT, y los padres iniciales a estar vacío aquí, pero lo son.

Finalmente llegamos al punto en que está a punto de comenzar a importar listas de cambios en GIT y ocurre lo siguiente:

Getting p4 changes for //project/... 
p4 changes //project/... 
Reading pipe: p4 changes //project/... 
p4 -G describe 771 
Opening pipe: p4 -G describe 771 
Importing revision 771 (1%)branch is MAIN 

    Importing new branch RCMerge/MAIN 
p4 changes //RCMerge/MAIN/[email protected],770 
Reading pipe: p4 changes //RCMerge/MAIN/[email protected],770 

    Resuming with change 771 
parent determined through known branches: Branch-foo 
looking for initial parent for refs/remotes/p4/project/MAIN; current parent is refs/remotes/p4/project/Branch-foo 
commit into refs/remotes/p4/project/MAIN 
parent refs/remotes/p4/project/Branch-foo 
p4 -G -x - print 
Opening pipe: p4 -G -x - print 
Glue/source/.empty 
fatal: Invalid ref name or SHA1 expression: refs/remotes/p4/project/Branch-foo 
fast-import: dumping crash report to .git/fast_import_crash_26002 

Aquí está el archivo referenciado anteriormente:

fast-import crash report: 
    fast-import process: 26002 
    parent process  : 26000 
    at Thu May 19 11:51:54 2011 

fatal: Invalid ref name or SHA1 expression: refs/remotes/p4/project/Branch-foo 

Most Recent Commands Before Crash 
--------------------------------- 
    checkpoint 
    commit refs/remotes/p4/project/MAIN 
    committer Some User <[email protected]> 1253574589 -0800 
    data <<EOT 
* from refs/remotes/p4/project/Branch-foo 

Active Branch LRU 
----------------- 
    active_branches = 0 cur, 5 max 

    pos clock name 
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

Inactive Branches 
----------------- 
refs/remotes/p4/project/MAIN: 
    status  : dirty 
    tip commit : 0000000000000000000000000000000000000000 
    old tree : 0000000000000000000000000000000000000000 
    cur tree : 0000000000000000000000000000000000000000 
    commit clock: 0 
    last pack : 


Marks 
----- 

------------------- 
END OF CRASH REPORT 

Ahora, siendo un novato forzosamente , No tengo idea de lo que esto significa y no tengo idea de cómo resolver este problema, o si es posible. ¿Alguien se ha encontrado con un problema similar antes? Si es así, ¿cómo lo resolvió?

Respuesta

4

Finalmente he resuelto la solución a este problema. Resultó que un mapeo de rama de Perforce se realizó en reversa y esa fue la fuente de este problema.

Rama-foo fue ramificado salida de Main, que debe tener una asociación de la rama de este modo:

//project/MAIN/... //project/Branch-foo/... 

Sin embargo, la persona que creó la rama, revocó la asignación, lo que resulta en esto:

//project/Branch-foo/... //project/MAIN/... 

Este git-p4 confundido como MAIN tenía las primeras listas de cambio comenzando en # 771 y Branch-foo tenía listas de cambios comenzando en # 7652, por lo tanto no pudo encontrar ningún padre en Branch-foo y se estrelló. Cambiar la especificación de la sucursal a la primera enumerada anteriormente solucionó el problema.

Cuestiones relacionadas