Quelqu'un a-t-il un script ou un alias pour trouver des fichiers non suivis (vraiment: non ajoutés) dans une arborescence Perforce?
EDIT: J'ai mis à jour la réponse acceptée sur celle-ci car il semble que P4V ait ajouté le support pour cela dans la version de janvier 2009.
version-control
perforce
David Joyner
la source
la source
p4 status
ne se contente pas de TROUVER les fichiers non suivis, il COMMENCE également à les suivre. Iep4 status
n'est pas une requête en lecture seule, comme on pourrait le soupçonner d'après le nom, mais c'est en fait une commande qui change des choses - pas les fichiers de l'espace de travail. Ce n'est PAS ce qu'une commande d'état devrait faire, et NON ce quesvn status
fait. La chose la plus proche que je puisse trouversvn status
estp4 reconcile -na
- -a pour dire «fichiers qui devraient être ajoutés», -n pour dire «ne changez rien». /// J'ai dit au départ quelque chose de beaucoup plus fort.p4 status
) , et yp4 reconcile
etp4 status
sont lents comme l'enfer, tout engit status
finissant de s'exécuter en 1-3 secondes.Réponses:
EDIT: Veuillez utiliser
p4 status
maintenant. Il n'est plus nécessaire de sauter à travers des cerceaux. Voir la réponse de @ ColonelPanic .Dans la version de janvier 2009 de P4V, vous pouvez cliquer avec le bouton droit de la souris sur n'importe quel dossier de l'arborescence de votre espace de travail et cliquer sur "réconcilier le travail hors ligne ..."
Cela fera un peu de traitement puis affichera une vue en arborescence fractionnée des fichiers qui ne sont pas extraits mais qui ont des différences par rapport à la version du dépôt, ou qui ne sont pas du tout archivés. Il peut même y avoir quelques autres catégories qu'il évoque.
Vous pouvez cliquer avec le bouton droit sur les fichiers dans cette vue et les extraire, les ajouter ou même les rétablir.
C'est un outil très pratique qui m'a sauvé le cul plusieurs fois.
EDIT: ah la question posée sur les scripts spécifiquement, mais je vais laisser cette réponse ici au cas où.
la source
p4 status
ne se contente pas de TROUVER les fichiers non suivis, il COMMENCE en fait à les suivre. Iep4 status
n'est pas une requête en lecture seule, comme on pourrait le soupçonner d'après le nom, mais c'est en fait une commande qui change des choses - pas les fichiers de l'espace de travail. Ce n'est PAS ce qu'une commande de statut devrait faire, ni ce quesvn status
fait. La chose la plus proche que je puisse trouversvn status
estp4 reconcile -na
- -a pour dire «fichiers qui devraient être ajoutés», -n pour dire «ne changez rien». /// J'ai dit à l'origine quelque chose de beaucoup plus fort.p4 status
est fondamentalement un synonyme dep4 reconcile -n
. Peut-être avez-vous courup4 status -A
ce qui est synonyme dep4 reconcile
?Sous Linux, ou si gnu-tools est installé sur Windows:
Cela affichera un message d'erreur pour chaque fichier non comptabilisé. Si vous souhaitez capturer cette sortie:
la source
.p4ignore
et peut prévisualiser et modifier automatiquement les fichiers non suivis / modifiés / supprimés.find . -type l
), et donne une sortie trompeuse pour les fichiers P4 ajoutés de force car ils contiennent les caractères@
ou%
. Cependant, ces fichiers sont minoritaires, donc un examen manuel de ces cas extrêmes fonctionnera dans la plupart des cas.Sous Unix:
Cela imprimera une liste de fichiers qui ne sont pas ajoutés dans votre client ou dans le dépôt Perforce. J'avais l'habitude
! -name '*~'
d'exclure les fichiers se terminant par ~.la source
Ahh, l'un des classiques de Perforce :) Oui, ça craint vraiment qu'il n'y ait TOUJOURS pas de moyen facile pour cela intégré aux commandes par défaut.
Le moyen le plus simple est d'exécuter une commande pour rechercher tous les fichiers sous la racine de vos clients, puis d'essayer de les ajouter au dépôt. Vous vous retrouverez avec une liste de modifications de tous les nouveaux fichiers et les fichiers existants sont ignorés.
Par exemple, dir / s / b / AD | p4 -x - ajouter
(utilisez 'find. -type f -print' à partir d'une ligne de commande nix).
Si vous voulez une liste physique (dans la console ou le fichier), vous pouvez diriger les résultats d'un diff (ou les ajouter si vous les voulez également dans une liste de modifications).
Si vous l'exécutez dans P4Win, vous pouvez utiliser $ r pour remplacer la racine client de l'espace de travail actuel.
la source
Oui, MAIS .
À partir de la version 2012.1 de Perforce, il y a la commande
p4 status
et dans P4V «réconcilier le travail hors ligne». Cependant, ils sont tous les deux très lents. Pour exclure les fichiers non pertinents, vous devrez écrire unp4ignore.txt
fichier par https://stackoverflow.com/a/13126496/284795la source
p4 status
depuis la version 2012.1. Si vous êtes resté à l'écart enp4 status
raison de problèmes de performances, il peut être utile de le tester à nouveau pour voir comment il se comporte maintenant.Je me sens obligé d'ajouter une réponse, car la réponse acceptée, et certaines des autres, ont ce que je pense être un problème important: ils ne comprennent pas la différence entre une commande de requête en lecture seule et une commande qui apporte des modifications.
Je ne m'attends à aucun crédit pour cette réponse, mais j'espère que cela aidera les autres à éviter de perdre du temps et de faire des erreurs en suivant la réponse acceptée mais incorrecte à mon humble avis.
--- + BREF
Le moyen le plus pratique de trouver tous les fichiers non suivis dans un espace de travail perforce est probablement
p4 reconcile -na
.-a
dit "donnez-moi les fichiers qui ne sont pas dans le référentiel, c'est-à-dire qui devraient être ajoutés".-n
dit "ne faites aucun changement" - c'est-à-dire un essai à sec. (Bien que les messages puissent dire "ouvert pour ajouter", vous devez mentalement interpréter cela comme "serait ouvert pour ajouter si ce n'est pas -n")Le moyen le plus pratique de trouver toutes les modifications locales effectuées en mode hors connexion - pas seulement les fichiers qui pourraient avoir besoin d'être ajoutés, mais également les fichiers qui pourraient devoir être supprimés, ou qui ont été modifiés sans être ouverts pour modification via
p4 edit
, estp4 reconcile -n
.Plusieurs réponses ont fourni des scripts, impliquant souvent
p4 fstat
. Bien que je n'ai pas vérifié tous ces scripts, j'utilise souvent des scripts similaires pour compenser les lacunes des commandes perforce telles quep4 reconcile -n
- par exemple, je trouve souvent que je veux des chemins locaux plutôt que des chemins de dépôt Perforce ou des chemins d'espace de travail.--- + AVERTISSEMENT
p4 status
n'est PAS l'équivalent des commandes d'état sur d'autres systèmes de contrôle de version.p4 status
n'est PAS une requête en lecture seule.p4 status
trouve en fait le même genre de changements que celui qui lep4 reconcile
fait et les ajoute au référentiel.p4 status
ne semble pas avoir d'-n
option d'exécution à sec comme lep4 reconcile
fait.Si vous le faites
p4 status
, regardez les fichiers et pensez "Oh, je n'en ai pas besoin", alors vous devrez les utiliserp4 revert
si vous voulez continuer à éditer dans le même espace de travail. Sinon, les modificationsp4 status
ajoutées à votre ensemble de modifications seront vérifiées la prochaine fois.Il semble y avoir peu ou pas de raison d'utiliser
p4 status
plutôt quep4 reconcile -n
, à l'exception de quelques détails sur l'espace de travail local par rapport au chemin d'accès au dépôt.Je ne peux qu'imaginer que quiconque a choisi «statut» pour une commande non en lecture seule avait une maîtrise limitée de la langue anglaise et d'autres outils de contrôle de version.
--- +
P4V
GUIDans l'interface graphique
p4v
, la commande de réconciliation trouve les modifications locales qui peuvent devoir être ajoutées, supprimées ou ouvertes pour modification. Heureusement, il ne les ajoute pas à une liste de modifications par défaut; mais vous voudrez peut-être quand même faire attention à fermer la fenêtre de réconciliation après l'avoir inspectée, si vous ne voulez pas valider les modifications.la source
J'utilise ce qui suit dans mon outil qui sauvegarde tous les fichiers de l'espace de travail qui diffèrent du référentiel (pour Windows). Il gère certains cas étranges que Perforce n'aime pas beaucoup, comme les blancs intégrés, les étoiles, les pourcentages et les hachages:
" dir / S / B / AD " répertorie tous les fichiers de ce dossier ou en dessous ( / S ) au format "nu" ( / B ) à l'exclusion des répertoires (/ AD ). Le " sed " change les caractères dangereux en leur forme " % xx " (à la HTML), et la commande " p4 have " vérifie cette liste (" -x- ") contre le serveur en supprimant tout ce qui concerne les fichiers qu'il localise réellement dans le référentiel (" 1> NUL: "). Le résultat est un tas de lignes comme:
Et voilà!
la source
Alternativement à partir de P4Win, utilisez l'option «Fichiers locaux pas dans le dépôt» dans le panneau d'affichage de gauche.
Je n'utilise pas beaucoup P4V, mais je pense que l'équivalent est de sélectionner "Masquer les fichiers de l'espace de travail local" dans la liste déroulante des filtres de l'onglet de vue de l'espace de travail. P4 help fstat
Dans P4V 2015.1, vous trouverez ces options sous le bouton de filtrage comme ceci:
la source
Quick 'n Dirty: Dans p4v, cliquez avec le bouton droit sur le dossier en question et ajoutez tous les fichiers en dessous à une nouvelle liste de modifications. La liste des modifications contiendra désormais tous les fichiers qui ne font pas actuellement partie du dépôt.
la source
Les commandes suivantes produisent une sortie de type état, mais aucune n'est tout à fait équivalente à
svn status
ougit status
, fournissant un résumé en une ligne de l'état de chaque fichier:p4 status
p4 opened
p4 diff -ds
la source
Je n'ai pas assez de points de réputation à commenter, mais la solution de Ross répertorie également les fichiers ouverts à l'ajout. Vous ne souhaitez probablement pas utiliser sa réponse pour nettoyer votre espace de travail.
Ce qui suit utilise
p4 fstat
(merci Mark Harrison) au lieu dep4 have
, et répertorie les fichiers qui ne sont pas dans le dépôt et qui ne sont pas ouverts à l'ajout.=== Jac
la source
Méthode rapide, mais peu orthodoxe. Si la base de code n'ajoute pas de nouveaux fichiers / change de vue trop souvent, vous pouvez créer un référentiel local «git» à partir de votre extraction. À partir d'une synchronisation propre par force, git init, ajoutez et validez tous les fichiers localement. Le statut de Git est rapide et affichera les fichiers non validés précédemment.
la source
La
p4 fstat
commande vous permet de tester si un fichier existe dans l'espace de travail, combiner avecfind
pour localiser les fichiers à vérifier comme dans l'exemple Perl suivant:Ou vous pouvez utiliser
p4 reconcile -n -m ...
S'il est «ouvert pour suppression», il a été supprimé de l'espace de travail. Notez que la commande ci-dessus s'exécute en mode aperçu (
-n
).la source
J'avais besoin de quelque chose qui fonctionnerait sous Linux, Mac ou Windows. J'ai donc écrit un script Python pour cela. L'idée de base est de parcourir les fichiers et d'exécuter
p4 fstat
sur chacun d'eux. (bien sûr en ignorant les dépendances et les dossiers tmp)Vous pouvez le trouver ici: https://gist.github.com/givanse/8c69f55f8243733702cf7bcb0e9290a9
la source
Dans P4V, sous l'élément de menu "Affichage", choisissez "Fichiers dans le dossier" qui fait apparaître un nouvel onglet dans le volet droit. À l'extrême droite des onglets, il y a une petite icône qui fait apparaître une fenêtre appelée "Fichiers dans le dossier" avec 2 icônes. Sélectionnez l'icône de gauche qui ressemble à un entonnoir et vous verrez plusieurs options. Choisissez "Afficher les éléments non dans le dépôt" et tous les fichiers du dossier s'afficheront. Ensuite, faites un clic droit sur le fichier que vous souhaitez ajouter et choisissez "Marquer pour ajouter ...". Vous pouvez vérifier qu'il est là dans l'onglet "En attente". Soumettez simplement comme d'habitude (Ctrl + S).
la source