10
votes

Dans Perforce, comment trouver le chemin local pour les fichiers dans un Changeeliste en attente?

Compte tenu d'un numéro de changelist Perforce, je souhaite trouver le chemin local de tous les fichiers dans ce changement de changeliste en attente.

  • p4 décrire Changeelist - Obtient-moi le chemin de dépôt pour les fichiers de la Changeelist (Méthode 1)
  • P4 Opened -C Changeelist - Obtient-moi le chemin de dépôt pour les fichiers de la Changeelist (Méthode 2)
  • p4 a - me reçoit le chemin de dépôt et le chemin local pour tous les fichiers qui ont déjà été soumis

    Utilisation d'une combinaison de P4 décrit et p4 ont , je peux trouver les chemins locaux pour tous les fichiers de la Changeelist qui ont déjà été soumis auparavant (et sont ouverts pour Supprimer ou édition ).

    Mais qu'en est-il des fichiers ouverts pour ajouter ? p4 a ne connaît rien des fichiers ouverts pour Ajouter .

    Compte tenu d'un changeliste de perforce en attente, comment trouver le chemin local pour les fichiers sur le point d'être ajouté à la perforce?


0 commentaires

5 Réponses :


13
votes

Pour émettre le chemin local de tous les ajouts en attente d'un Changeelist, vous pouvez utiliser:

p4 opened -c changelist | sed -n 's/\(.*\)#.*- add .*/\1/p' \
| p4 -x - where | awk '/^\// {print $3}'


4 commentaires

Merci pour la solution. Il y a une chose à noter avec "p4 où" - si un fichier est mappé plusieurs fois dans la spécification du client, "P4 où" renvoie incorrectement le premier mappage, au lieu de la dernière cartographie qui est réellement terminée.


Cela ressemble à une erreur, p4 où est censé suivre la vue client. Si vous avez l'assistance, déposez un bogue avec perforce.


Le problème est-il à faire avec {impression $ 3} ?


@TenPN, merci de attirer l'attention à cela. J'ai finalement essayé moi-même plusieurs majuscules. p4 où sortira plusieurs lignes dans ce cas et seule celle qui commence par '//' est la bonne. J'ai corrigé ma réponse pour cette affaire.



1
votes

Basé sur la réponse de Peter G, traduit en PowerShell 2.0:

p4 opened -c changelist 
    | Where-Object{$_ -match "add"}
    | ForEach-Object{p4 where ($_.split('#')[0])}
    | ForEach-Object{$_.split()[2]}


0 commentaires

6
votes

Vous pouvez bien sûr utiliser également

p4 -ztag opened -c changelist | grep clientFile | awk '{print $3}'


1 commentaires

N'oubliez pas que Awk a la capacité de Grep, vous pouvez donc raccourcir cela pour: P4 -ZTAG Ouvert -C Changeelist | AWK '/ ClientFile / {IMPRESSION 3}'



1
votes
p4 opened -s -c <changelist#> | awk -F " " '{print $1}' | p4 -x - where | awk -F " " '{print $3}'

1 commentaires

De toutes les réponses postées, c'est le seul qui fonctionne réellement pour moi. Merci.



4
votes

chemin local pour tous les fichiers dans un changeliste en attente sans outils externes ou spécifiques à la plate-forme: xxx

Supprimer "-f action = Ajouter" Si vous souhaitez obtenir des fichiers ouverts pour tous actions.


0 commentaires