Question

J'ai la tâche de migrer mon équipe et source git à Perforce, et je suis à la recherche d'idées sur la façon de déplacer l'histoire git dans p4.

Je serais heureux branche maître mobile uniquement. Cependant, même cela se révèle problématique.

J'utilise le merveilleux outil p4 git. Je crée une zone de destination dans mon espace de travail p4, et l'utilisation git p4 clone //depot/StuffFromGit à elle commencer le suivi dans git-p4. Je greffe tous les changements de mon dépôt git dans le clone git-p4. Je peux alors git p4 submit et faire, tous les changements sont poussés à p4.

Il fonctionne très bien quand les regards d'histoire git comme ça, agréable et linéaire:

A---B---C---D

Le problème vient avec plusieurs personnes travaillant sur le projet. Même si elles travaillent sur le maître, qui crée encore des branches qui se divisent et se confondent. Pourtant, git-p4 gère courageusement ceci:

A---B---C---E
     \--D--/

git p4 OK traverse, engageant ABCDE dans l'ordre (ou ABDCE, que ce soit l'histoire de la personne en premier).

Le problème vient quand, par exemple, C et D à la fois le changement le même fichier, et E est un véritable honnête à la bonté fusion. git p4 rebase échoue ici; il va revenir en arrière les commits, mais pendant la lecture, il va appliquer C d'abord, puis essayez D et trouver un conflit. Il va alors arrêter, me demandant de fusion. Eh bien, E contient la fusion mais il me demande à la fusion de la main! « Git p4 submit » échouera de façon similaire, que maintenant il est p4 rejeter le changement de pré-fusion.

Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging main.cpp
CONFLICT (content): Merge conflict in main.cpp
Failed to merge in the changes.
Patch failed at 0005 Changing main

Alors maintenant, je suis coincé. Yat-il un moyen d'assainir l'histoire git ou pour obtenir git-p4 pour le comprendre? Il est frustrant que les fusions sont là.

Pensées j'ai eu:

  • Utiliser un filtre-branche git pour supprimer toute mention des dossiers contradictoires. Je reçois les commentaires de l'histoire à travers, bien que manquant de nombreux changements de fichiers. Avec environ 3000 commits dans l'histoire, je finirais enlever toute la clé histoire des fichiers (occupés). A la fin des fichiers-filtrés importer, j'ajouter les fichiers manquants en arrière en faisant une dernière commettras de la tête.
  • Dump l'histoire, une seule action p4 engagent de la tête (simple mais triste).
  • ne déménageraient pas p4: J'ai travaillé cette idée aussi longtemps que possible.

Aucun qui sont vraiment super. Toutes les idées sur la façon de git gt p4 rebasage 'ou « git soumettre p4 » au travail?

Était-ce utile?

La solution

L'option de « juste jeter l'histoire ancienne » est pas aussi mauvais que cela puisse paraître: il vous suffit de garder votre git à côté d'elle pour toujours, au cas où quelqu'un a besoin de fouiller dans les vieux trucs. Malheureusement, il n'y a aucun moyen de représenter vue complexe git dans l'histoire ancienne linéaire des systèmes comme svn et p4.

La principale raison de regarder en arrière dans l'histoire ancienne est pour des choses comme « annoter git » (Je suppose que p4 dispose d'un outil similaire). Si c'est tout ce que vous voulez, alors peut-être ce que vous voulez vraiment faire est de squash tout votre fusion engage vers le bas à un seul de leurs parents (ils ressemblent à un seul commettras au lieu d'une fusion). C'est plus comme ce que svn et p4 aurait enregistré dans leur propre modèle d'histoire, où se confond regarder comme un engagement dans le flux linéaire. Vous pouvez probablement faire avec la branche filtre-git ou similaires. Bien sûr, cela perdrait toute l'histoire qui est arrivé sur les sous-branches ... mais les utilisateurs p4 sont utilisés pour ne pas avoir cette information.

Autres conseils

Avez-vous vérifié l'outil « sur mesure »? Il Construisons pour synchroniser différents VCS: es. Il est censé avoir Perforce support.

Comme un côté note, ma première réaction serait de remettre sérieusement en question la décision, mais je suppose que vous avez déjà fait.

Je pense que vous devriez essayer avec tortoisesvn puis Hg compte tenu de la mise à jour monobranche ou vous pouvez dire la migration. Assurez-vous que vous avez toutes les décharge clonés pour être sur le côté sécuritaire. Bonne chance!

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