Question

Comme je l'ai mentionné dans un question précédente, je suis regardant dans la migration de notre contrôle source de Perforce à git.
En regardant autour, j'ai trouvé git-p4 (vous devez creuser un peu plus, car il est même pas au dépôt pointé par le lien. la réelle Script git-p4 plus difficile à trouver).

Je suis maintenant en cours d'exécution de ce script, et il importe la version actuelle des fichiers dans un nouveau dépôt git, mais je ne peux pas réussi à obtenir l'histoire, peu importe ce que je fais.

Voici la ligne de commande actuelle que j'utilise est:

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

Alors, la vraie question est:. Si quelqu'un a réussi à importer un dépôt P4, y compris l'histoire , je voudrais savoir comment vous l'avez fait

Était-ce utile?

La solution

Essayez annexant « @all » sur le chemin de fichier. Par exemple, cela produit une prise en pension unique révision pour moi:

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

Cette commande a importé l'historique complet:

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

J'ai essayé d'utiliser l'exemple git-p4 mais a abandonné pour plusieurs raisons et écrit mon propre pompe à l'importation rapide. Il était un peu en arrière, si certains problèmes ont pu être corrigés maintenant: mais avait du mal à git-p4 avec de grandes changelists (comme la création initiale d'une branche) (bien que l'utilisation de la spécification client peut avoir aidé, je ne pense que je l'ai essayé) et les fichiers avec le modificateur filetype « + S » (ce qui est mauvais et le mal, mais nous avons l'habitude de l'utiliser). Et mon Python-fu était pas à me laisser régler les problèmes que j'avais.

EDIT:. Puisque quelqu'un l'a demandé, ici il est

a plusieurs choses p4

https://github.com/araqnid/p4utils , dont P4- git-xfer est le duplicateur P4-> git (à sens unique). Il a assez peu de problèmes cependant, en raison d'être principalement un outil pratique personnelle plutôt que d'un véritable morceau de l'infrastructure.

Mise en route:

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

clonerons ce chemin de Perforce à nu « dictionary.git ». Les premiers arguments après le chemin de base sont « caractéristiques de la branche » qui indiquent le réplicateur où trouver les branches sous la base. Ceux plus tard (avec des symboles « = ») sont « caractéristiques de miroir » qui indiquent le réplicateur comment créer des branches locales de ceux importés. Les spécifications de la branche de cause "refs / remotes / p4 / trunk", "refs / remotes / p4 / release / 1.0", etc. à créer. Les spécifications de miroir vigueur "refs / heads / maître" à miroir "refs / remotes / p4 / trunk", "refs / heads / R1.0" à miroir "refs / remotes / p4 / release / 1.0", etc. Il était prévu comme un moyen de me permettre de sélectionner uniquement des branches particulières de ceux qui ont été répliqués pour se propager à des clones.

Il va tenter de détecter la façon dont une branche est créée, mais c'est un peu une supposition de toute façon avec Perforce. En dehors de cela, il ne cherche pas à faire un suivi de la branche du tout. Même se confond tout-branche ne seront pas écrits comme tels, désolé

Après le clone initial, en cours d'exécution p4-git-xfer fetch à l'intérieur de la réplique git fera une mise à jour incrémentale. La changelist marque de haute eau est prélevée à partir marks/p4 dans le git. Ceci est un fichier qui marques charge rapide importation, donc si vous faites une jeu de jambes en utilisant comme filtre branche pour réécrire les choses, méfiez-vous que vous pourriez avoir à mettre à jour aussi.

Il est pas assez, et a quelques problèmes à moyen sérieux; Je l'utilise principalement pour ma convenance, pour me isoler des problèmes Perforce, non pas comme un jour à jour composant d'infrastructure criticial. Il est à sens unique: J'utilise généralement le script p4-am à appliquer des correctifs créés par git format-patch. Cela ne fonctionne que lui-même la plupart du temps, avec des malédictions d'analyse générale, les problèmes avec les nouvelles lignes de fin de fichier, les modifications binaires etc.

Autres conseils

Je suis aussi essayer de comprendre git-p4. Pas beaucoup de documentation là-bas, malheureusement. Je voudrais entrer en contact avec vous que nous pouvons probablement aider les uns les autres.

  1. installer bash git (cli)
  2. install cli p4
  3. install python 2.7
  4. obtenir le script git-p4 >> http: / /git.kernel.org/cgit/git/git.git/plain/git-p4.py
  5. mettre ce script dans c / programme / fichiers / git / bin /
  6. Vous pouvez maintenant vérifier bash git ouvert ou en tapant cmd python fait, p4 fait, fait git, git p4,
  7. créer l'espace de travail client git nommé.
  8. git clone p4 Depo / chemin / @ tous repo / path

juste au cas où le travail ne marche pas dans les variables chemin d'accès défini d'environnement pour python si python crée problème définir P4CLIENT = git

L'aide git-p4 est en fait assez bien:

man git-p4

Il est sur Ubuntu 12.04 inclure dans le package git-man.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top