Pouvez-vous "ignorer" un fichier dans Perforce?

j'ai parfois l'utilisation de la fonction " Concilier Travailler Hors connexion...'trouvé dans L'IDE P4V de Perforce pour synchroniser tous les fichiers sur lesquels j'ai travaillé alors que j'étais déconnecté du dépôt P4. Il lance une autre fenêtre qui exécute un 'dossier Diff'.

j'ai des fichiers que je ne veux jamais vérifier au contrôle source (comme ceux trouvés dans le dossier bin tels que DLLs, sortie générée par code, etc.) Est-il un moyen de filtrer les fichiers/dossiers hors de comparaître en tant que "nouveau" qui pourraient être ajoutés. Ils ont tendance à encombrer la liste des fichiers qui m'intéressent réellement. P4 a-t-il l'équivalent de la fonctionnalité "ignore file" de Subversion?

96
demandé sur raven 2008-09-11 02:45:31

10 réponses

depuis la version 2012.1, Perforce supporte la variable d'environnement P4IGNORE . J'ai mis à jour ma réponse à cette question sur le fait d'ignorer les répertoires avec une explication de comment cela fonctionne. Puis j'ai remarqué cette réponse, qui est maintenant superflue, je suppose.


en supposant que vous avez un client nommé" CLIENT", un répertoire nommé" foo " (situé à la racine de votre projet), et vous souhaitez tout ignorer .fichiers dll dans l'arborescence du répertoire, vous pouvez ajouter les lignes suivantes à votre espace de travail à accomplir:

-//depot/foo/*.dll //CLIENT/foo/*.dll
-//depot/foo/.../*.dll //CLIENT/foo/.../*.dll

La première ligne supprime le répertoire "toto" et la deuxième ligne supprime de tous les sous répertoires. Maintenant, quand vous réconciliez le travail hors ligne..."toutes les .les fichiers dll seront déplacés dans les dossiers" fichiers exclus " au bas de l'affichage diff des dossiers. Ils seront hors de votre chemin, mais peut encore les voir et les manipuler si vous avez vraiment besoin.

Vous pouvez également le faire d'une autre manière, ce qui réduira votre dossier "fichiers exclus" à un seul, mais vous ne serez pas en mesure de manipuler l'un des fichiers qu'il contient parce que le chemin sera corrompu (mais si vous voulez juste qu'ils soient hors de votre chemin, cela n'a pas d'importance).

-//depot/foo.../*.dll //CLIENT/foo.../*.dll
58
répondu raven 2017-05-23 12:17:29

Oui, Mais.

Perforce version 2012.1 a ajouté une fonctionnalité appelée p4ignore , inspirée de Git. Cependant, les développeurs de Perforce ont fait un changement de comportement, sans justification, qui rend la fonctionnalité beaucoup moins utile.

alors que Git prend les règles de tous les fichiers .gitignore , Perforce ne sait pas où chercher jusqu'à ce que vous spécifiez un nom de fichier dans une variable d'environnement P4IGNORE . Cette liberté est une malédiction. Vous ne pouvez pas pirater deux dépôts qui utilisent des noms différents pour leurs fichiers ignorés.

en outre, la fonctionnalité d'ignorer de Perforce ne fonctionne pas la boîte. Vous pouvez le configurer assez facilement pour vous-même, mais les autres ne bénéficient pas à moins qu'ils optent explicitement. Un contributeur qui n'a pas commis peut accidentellement commettre des fichiers indésirables (par ex. un dossier bin créé par un script de construction).

git ignorez la fonctionnalité est grande parce que il fonctionne hors de la boîte. Si les fichiers .gitignore sont ajoutés au dépôt ( tout le monde fait cela ), ils vont travailler sur la boîte pour tout le monde. Personne ne publiera accidentellement sa clé privée.

Amusemently, the forced docs shows".p4ignore " comme un exemple ignorer la règle, qui est à l'envers! Si les règles sont utiles, elles devraient être partagées dans le référentiel.


Perforce pourrait encore faire du bien sur la fonctionnalité. Choisissez une convention pour les noms de fichiers, dites p4ignore.txt , de sorte que la fonctionnalité fonctionne sur la boîte. Laissez tomber la variable d'environnement P4IGNORE , c'est contre-productif. Éditer les docs, pour encourager les développeurs à partager des règles utiles. Laissez les utilisateurs écrire des règles personnelles dans un fichier dans leur dossier personnel, comme le fait Git .

si vous connaissez quelqu'un à Perforce, s'il vous plaît envoyez-leur ce message.

44
répondu Colonel Panic 2014-07-14 14:10:48

cela fonctionne à partir de Perforce 2013.1, le nouveau mécanisme P4IGNORE a été ajouté en version, 2012.1, décrit sur le blog Perforce ici:

http://www.perforce.com/blog/120130/new-20121-p4ignore

comme il est actuellement décrit, vous définissez une variable d'environnement" P4IGNORE " à un nom de fichier qui contient une liste des fichiers à ignorer.

donc vous pouvez le vérifier à voir comment vous l'aimez.

21
répondu svec 2014-07-28 18:49:05

si vous voulez une solution qui s'appliquera à tous les espaces de travail sans avoir besoin d'être copié autour, vous (ou votre sysadmin) pouvez refuser la soumission de ces types de fichiers en utilisant des lignes comme ci-dessous dans la table de protection p4:

write user * * -//.../*.suo
write user * * -//.../*.obj
write user * * -//.../*.ccscc

je me souviens avoir fait cela avant, mais je n'ai pas les permissions nécessaires pour tester ceci ici. Vérifier Guide Sysadmin de Perforce et l'essayer

7
répondu Mike Burrows 2014-07-14 14:12:41

les flux Perforce rendent l'ignorance des fichiers beaucoup plus facile, à partir de la version 2011.1. Selon la documentation , vous pouvez ignorer certaines extensions ou certains chemins dans votre répertoire.

de p4 help stream

Ignored: Optional; a list of file or directory names to be ignored in
                 client views. For example:

                     /tmp      # ignores files named 'tmp'
                     /tmp/...  # ignores dirs named 'tmp'
                     .tmp      # ignores file names ending in '.tmp'

                 Lines in the Ignored field may appear in any order.  Ignored
                 names are inherited by child stream client views.

Cela fait essentiellement ce que la réponse de @raven spécifie, mais est fait plus facile avec les flux, car il se propage automatiquement à chaque espace de travail en utilisant ce flux. Il s'applique également à tous les flux hériter du flux dans lequel vous spécifiez les types d'ignorer.

vous pouvez éditer le flux via p4 stream //stream_depot/stream_name ou en cliquant avec le bouton droit de la souris sur le flux de p4v.

et comme @svec l'a noté, la possibilité de spécifier des fichiers ignorés par espace de travail arrive bientôt, et est en fait dans P4 2012.1 beta.

6
répondu Chance 2014-07-14 14:13:08

la suggestion de Will d'utiliser .p4ignore ne semble fonctionner qu'avec le plugin WebSphere Studio (P4WSAD). Je l'ai juste essayé sur ma fenêtre locale et tous les fichiers et répertoires que j'ai listés étaient pas ignorés.

la suggestion de Raven de modifier les spécifications de votre client est la bonne façon sous Perforce. L'organisation correcte de votre code / données / exécutables et des fichiers de sortie générés fera le processus d'exclusion des fichiers d'être vérifiés en beaucoup plus facile.

comme une approche plus draconienne, vous pouvez toujours écrire un déclencheur de soumission qui rejettera la soumission de listes de modifications si elles contiennent un certain fichier ou des fichiers avec une certaine extension, etc.

3
répondu Mark 2014-07-14 14:14:51

réponse historique - n'est plus correcte. Au moment où cela a été écrit à l'origine, il était vrai;

vous ne pouvez pas écrire et vérifier un fichier que le serveur va utiliser pour faire ignorer les règles; General glob ou regexp file pattern ignore in perforce.

D'autres réponses ont des configurations de serveur globales qui sont globales (et pas par dossier). Les autres réponses montrent des choses qui pourraient fonctionner pour vous, si vous voulez une ligne dans votre vue par dossier fois nombre d'extensions que vous voulez ignorer dans ce dossier unique, ou qui fournissent cette capacité dans les plugins WebSphere Studio seulement, ou qui fournissent une capacité pour les administrateurs de serveur, mais pas disponible pour les utilisateurs.

en bref, je trouve forcement vraiment faible dans ce domaine. Bien que j'apprécie que ceux qui utilisent le Plugin Eclipse puissent utiliser .p4ignore , et je pense que c'est génial, cela laisse ceux d'entre nous qui ne le font pas, dehors dans le noir.

mise à jour: Voir réponse acceptée pour la nouvelle capacité P4IGNORE ajouté mi-2012.

2
répondu Warren P 2014-07-28 01:29:45

j'ai trouvé plus facile de concilier le travail hors ligne en utilisant un script BASH comme celui-ci:

#!/bin/bash
# reconcile P4 offline work, assuming P4CLIENT is set
if [ -z "$P4CLIENT" ] ; then echo "P4CLIENT is not set"; exit 1; fi
unset PWD # confuses P4 on Windows/CYGWIN

# delete filew that are no longer present
p4 diff -sd ... | p4 -x - delete

# checkout files that have been changed.  
# I don't run this step.  Instead I just checkout everything, 
# then revert unchanged files before committing.
p4 diff -se ... | pr -x - edit

# Add new files, ignoring subversion info, EMACS backups, log files
# Filter output to see only added files and real errors
find . -type f \
 | grep -v -E '(\.svn)|(/build.*/)|(/\.settings)|~|#|(\.log)' \
 | p4 -x - add \
 | grep -v -E '(currently opened for add)|(existing file)|(already opened for edit)'

Je l'ai adapté de cet article de la base de connaissances .

0
répondu kevin cline 2011-02-11 19:10:14

je cherche un .solution de type p4ignore également (et non liée à un IDE particulier). Jusqu'à présent, la chose la plus proche que j'ai trouvé est p4delta. On dirait qu'il va faire exactement ce que l'affiche originale demandait, bien que par une autre couche de l'indirecte.

http://p4delta.sourceforge.net

malheureusement, bien que cela semble produire la bonne liste de fichiers, Je ne peux pas faire fonctionner " p4delta -- execute " ("Vous ne pouvez pas modifier une gelée de chaîne") et le projet n'a pas été mis à jour dans l'année. Peut-être que d'autres auront plus de chance.

0
répondu Derek Prior 2011-07-26 14:32:49

si vous utilisez le plugin Eclipse Perforce, alors la documentation du plugin énumère plusieurs façons d'ignorer les fichiers.

-1
répondu Deepak Sarda 2010-01-25 09:43:35