Question

Version courte:

Après branchement à P4, comment puis-je savoir la « source » de la branche changelist?

Version longue:

Soit s que j'ai une branche principale de mon projet à

//project/main/...

Le dernier changelist présenté ici est @ 123, quand je décide de créer une branche pour la version 1.0 dans

//project/1.0/...

De P4V, un nouveau changelist est créé (disons @ 130), résolu et soumis.

De la CLI, il ressemblerait à quelque chose comme ceci:

p4 integrate -c 123 -o //project/main/... //project/1.0/...
p4 submit

Plus tard, je regarde les changelists sous //project/1.0, et voir le @ 130 contenant un changelist grand nombre de fichiers ramifiés. Comment puis-je trouver le changelist pas. que cela a été à l'origine ramifié de (qui est, @ 123)?

Était-ce utile?

La solution

p4 changes affiche une liste de changelists soumis, éventuellement filtré à un chemin spécifique.

p4 changes //project/main/...
Change 123 ... 'Very last change.'
Change 122 ... 'Next-to-last change.'
Change 100 ... 'Only two changes to go...'
...

Pas de surprise là, mais, comme vous l'avez trouvé, p4 changes est moins utile lorsque vous intégrez tous ces changements dans un seul changement:

p4 changes //project/1.0/...
Change 130 ... 'Integrated everything from main.'

L'astuce consiste à utiliser l'option -i qui comprend les changelists intégrés dans les fichiers spécifiés .

p4 changes -i //project/1.0/...
Change 130 ... 'Integrated everything from main.'
Change 123 ... 'Very last change.'
Change 122 ... 'Next-to-last change.'
Change 100 ... 'Only two changes to go...'
...

Pour obtenir exactement ce que vous voulez (123), vous devez écrire un script qui filtre la sortie de p4 changes -i //project/1.0/... pour supprimer tout changement énumérés par p4 changes //project/1.0/... (puis prendre la dernière modification restante).

(Lors de l'exploration, je souvent trouve aussi l'option -m max utile. Cette limites des modifications à la « max » le plus récent . Cela permet à votre sortie ne coulera pas offscreen quand il y a beaucoup de changements.)

Autres conseils

Je ne sais pas d'une commande simple qui exécute ce que vous voulez faire. Si vous êtes prêt à scripter un peu et la commande n'a pas à exécuter, vous pouvez peut-être essayer de vite quelque chose de script comme le suivant pour tous fichiers ramifiés:

  1. Recherchez le fichier source / révision d'un fichier cible.

      

    p4 FileLog // projet / 1.1 / foo.bar # 1   //project/1.1/foo.bar
      ... # 1 changement 6416 sur la branche 2009/07/10 par bar foo @ (texte) 'version 1.1'
      ... ... branche de // projet / main / foo.bar # 1, # 2

  2. Obtenez la liste des modifications au cours de laquelle le fichier source / révision a été soumise.

      

    p4 fstat // projet / main / foo.bar # 2   ... depotFile //project/main/foo.bar
      ... modifier headAction
      ... texte headType
      ... headTime 1201771167
      ... headRev 2
      ... headChange 5353   ... headModTime 1201770971

  3. Répétez l'opération pour tous les fichiers dans la branche et sélectionnez la plus forte variation non (headChange ci-dessus), qui devrait être le dernier changement soumis au parent avant de bifurquer pour ce fichier spécifique. Vous pouvez obtenir une liste complète de tous les fichiers ramifiés en utilisant par exemple "fichiers p4 //project/1.0 /...# 1".

(ou peut-être prendre la voie facile et demander le soutien Perforce)

Étant donné qu'aucune des réponses jusqu'ici fournissent le code pour trouver la source ou racine changelist d'une branche, je pensais que je fournir en une ligne pour le faire. Cette approche est basée sur la suggestion de @ CWAN et imprime le changelist « parent » à partir de laquelle la branche a été créée. L'argument FIRST_BRANCH_CL doit être remplacée par la création de la branche changelist (à savoir le premier changelist soumis à la nouvelle branche). A titre d'exemple de béton, en remplaçant FIRST_BRANCH_CL avec 130 de la question initiale, celle-ci serait-liner 123 de sortie.

p4 describe -s FIRST_BRANCH_CL | perl -lne 'if(/^\.\.\. (.+#[0-9]+) .+$/) {print quotemeta $1}' | xargs p4 filelog -m1 | perl -lne 'if(/^\.\.\. \.\.\. branch from (.+#[0-9]+)/) {print quotemeta $1}' | xargs p4 fstat | perl -lne 'if(/^\.\.\. headChange (\d+)/) {$MaxCL=$1 if($1 > $MaxCL)} END {print $MaxCL}'

Réponse courte :

Utilisez le graphique de révision à P4V est pas en arrière dans le temps et étudier l'histoire de l'intégration. vidéo sur le site Perforce .

Je l'ai utilisé avec succès le graphique de révision sur les branches avec des milliers de fichiers à suivre lorsqu'un changement particulier a été intégrée dans une branche. Voilà pourquoi je recommande et lié à une vidéo de formation comme la plupart des gens sous-estiment parce qu'ils ne savent pas comment l'utiliser.

Réponse longue :

... [removed]

Mise à jour: Comme le graphique de révision est apparemment impossible, vous pouvez peut-être résoudre grâce à un processus / politique, à savoir, lorsque vous effectuez l'intégrer, ajouter une note dans la description « Ramifiée @ CL 123 ». Nous avons utilisé cette approche nous lors de l'intégration d'un tronc à des lignes de libération.

Si vous utilisez l'onglet Historique dans P4V il vous montrera tous changelists soumis contre une branche, alors regardez cela pour

//project/1.0/...

une fois que vous avez trouvé le plus ancien présenté changelist, puis sur une des fichiers dans ce changelist voir le graphique de révision pour elle, cela vous montrera la branche que le fichier (et le reste des fichiers) ont été intégrés à partir.

Je vais voir si je peux revenir avec les commandes p4 à faire la même chose.

Mise à jour Réponse: Je pense que cela va fonctionner. Essayez ceci:

p4 interchanges from_branch  to_branch

Cela montrera des changements de votre branche non intégrées principale à votre succursale de libération. Je crois que vous pouvez utiliser le numéro de changelist top moins 1 pour trouver votre changelist source. interchanges est une fonctionnalité non documentée Perforce CLI. Pour en savoir plus, tapez p4 help interchanges pour en savoir plus sur cette commande.

Encore une fois, je pense cela fonctionne. Il peut y avoir des cas particuliers où il ne sera pas, mais il est ma meilleure estimation d'un problème difficile et important.

"p4 intégré" a fonctionné pour moi. Rechercher « copie de » dans la description

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