Domanda

Come ho già detto in un domanda precedente , io sono esaminando la migrazione del nostro controllo del codice sorgente da Perforce a git.
Guardandosi intorno, ho trovato git-p4 (bisogna scavare un po 'di più, dal momento che non è nemmeno al repository puntato dal link. l'attuale lo script git-p4 più difficile da trovare).

Sono ora in esecuzione di questo script, e importa la versione corrente dei file in un nuovo repository git, ma non riesco a ottenere la storia, non importa quello che faccio.

Ecco la riga di comando corrente che uso è:

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

Quindi, la vera domanda è:. Se qualcuno è riuscito a importare un deposito P4, compresa la storia , mi piacerebbe sapere come hai fatto

È stato utile?

Soluzione

Prova aggiungendo "@all" per il percorso del file. Ad esempio, questo produce un pronti contro termine single-revisione per me:

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

Questo comando ha importato l'intero:

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

Ho provato ad utilizzare l'esempio git-p4 ma ha rinunciato per diversi motivi e scritto la mia pompa di fast-import. E 'stato un po' indietro, in modo da alcuni dei problemi potrebbe essere stata fissata ora: ma git-p4 avuto problemi con grandi changelists (come ad esempio la creazione iniziale di un ramo) (anche se usando la specifica cliente può aver contribuito, non lo faccio che ho provato) e file con il "+ S" modificatore di filetype (che è male e il male, ma abbiamo usato per usarlo). E il mio Python-fu non è stato fino ad avermi permesso di risolvere i problemi che ho avuto.

EDIT:. Dal momento che qualcuno ha chiesto per questo, qui è

https://github.com/araqnid/p4utils ha diverse cose P4, di cui P4- git-xfer è il P4-> git (a senso unico) replicatore. Ha alcuni problemi abbastanza però, a causa di essere principalmente un pratico-strumento personale, piuttosto che un vero e proprio pezzo di infrastrutture.

Per iniziare:

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

si clonare quel percorso per forza ad una "dictionary.git" nudo. I primi argomenti che seguono il percorso di base sono "specifiche sportelli" che raccontano il replicatore dove trovare rami sotto la base. Quelle successive (con simboli '=') sono "caratteristiche specchio" che raccontano il replicatore come creare filiali locali da quelli importati. Le specifiche ramo causa "refs / remotes / p4 / tronco", "refs / remotes / p4 / rilascio / 1,0", ecc da creare. La forza specchio spec "refs / teste / master" a specchio "refs / telecomandi / p4 / trunk", "refs / teste / r1.0" a specchio "refs / telecomandi / p4 / release / 1.0", ecc E 'stato destinato come un modo per permettere a me di selezionare solo i rami particolari da quelli che sono stati replicati per essere propagate ai cloni.

Si tenterà di rilevare come si crea un ramo, ma questo è un po 'di una supposizione comunque con Perforce. A parte questo, non cerca di fare qualsiasi monitoraggio filiale a tutti:. Anche le unioni con tutto il ramo non verranno scritte come tale, mi dispiace

Dopo il clone iniziale, correndo p4-git-xfer fetch dall'interno della replica git farà un aggiornamento incrementale. L'elenco modifiche alta acqua-mark è preso dal marks/p4 all'interno della repository git. Questo è un marcatori di file che carica rapida di importazione, quindi se si esegue una gioco di gambe di fantasia come l'utilizzo del filtro-ramo di riscrivere le cose, fate attenzione potrebbe essere necessario aggiornare anche questo.

Non è bella, e ha alcuni problemi medio-gravi; Io lo uso soprattutto per mia comodità, di isolarmi da problemi Perforce, non come una componente infrastrutturale critico giorno per giorno. E 'a senso unico: io in genere utilizzare lo script p4-am per applicare le patch create da git format-patch. Che si funziona solo per lo più, con il generale cattiveria analisi, problemi di end-of-file di nuove righe, modifiche binari ecc.

Altri suggerimenti

Sto anche cercando di capire git-p4. Non molta documentazione là fuori, purtroppo. Mi piacerebbe entrare in contatto con voi come si può probabilmente aiutare a vicenda.

  1. installare git bash (CLI)
  2. installare p4 cli
  3. installare python 2.7
  4. ottenere lo script git-p4 >> http: / /git.kernel.org/cgit/git/git.git/plain/git-p4.py
  5. mettere questo script in c / programma / file / git / bin /
  6. ora aperto bash git o assegno cmd digitando python fatto, p4 fatto, git fatto, git p4,
  7. creare client area di lavoro di nome git.
  8. git clone p4 depo / percorso / @ tutti repo / path

nel caso in cui non funziona percorso impostato in variabili d'ambiente per Python se pitone crea problema set P4CLIENT = git

La guida in git-p4 è in realtà piuttosto bene:

man git-p4

Su Ubuntu 12.04 Si tratta di includere nel pacchetto git-man.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top