web-dev-qa-db-fra.com

Pouvez-vous "ignorer" un répertoire dans P4V?

Nous utilisons Visual Studio, qui génère de nombreux répertoires bin et obj. Lorsque j'utilise la fonction "Réconcilier le travail hors ligne" de P4V , celles-ci apparaissent dans la liste "Fichiers locaux non stockés".

Je voudrais les exclure. J'ai trouvé cette question , mais cela parle de fichiers, et quand j'essaie ce qu'il suggère (en ajoutant ce qui suit à ma vue de l'espace de travail), cela ne fonctionne pas :

//depot/Foo/... //Client/Foo/...
-//depot/Foo/.../*.user //Client/Foo/.../*.user
-//depot/Foo/.../bin/... //Client/Foo/.../bin/...
-//depot/Foo/.../obj/... //Client/Foo/.../obj/...

Cela ne semble pas non plus fonctionner pour les fichiers: les fichiers foo.csproj.user sont toujours affichés dans la liste.

Puis-je exclure des répertoires de P4V? Si c'est le cas, comment? Qu'est-ce que je fais mal?

49
Roger Lipscombe

Réponse mise à jour : Cela a été quelque peu délicat dans le passé, car il n'existait aucun moyen intégré d'exclure un répertoire d'une commande Perforce. Depuis 2012, cela a changé. Vous pouvez jeter un oeil à n article Nice perforce pour ce problème .

Depuis 2012.1, le P4IGNORE La variable d'environnement peut être définie pour désigner un fichier à utiliser pour exclure des fichiers de Perforce. Le serveur Perforce (p4d) et le client (p4, P4V) doivent tous deux être 2012.1 ou plus. P4IGNORE a pour but d'ignorer les fichiers lors de l'ajout de nouveaux fichiers au dépôt et de la réconciliation des espaces de travail. Comme des fonctionnalités comparables dans d'autres systèmes de contrôle de version, P4IGNORE ne peut pas être utilisé pour ignorer les fichiers déjà sous le contrôle du référentiel.

P4Eclipse gère .p4ignore fichiers selon ses propres termes. (voir le manuel concernant ce point ici )

Utilisation des vues client pour exclure des fichiers et des répertoires:

La méthode traditionnelle pour exclure des fichiers et des répertoires dans Perforce consiste à utiliser des mappages client exclusifs. Voir la référence de commande pour les vues pour une documentation complète. Exemple de vue:

Voir:

//depot/... //test_ws/depot/...
-//depot/dir/etc/... //test_ws/depot/dir/etc/...

Cette vue empêchera les fichiers dans dir/etc d'être ajoutés au dépôt. Si vous essayez d'exclure le répertoire des requêtes en lecture seule, utilisez le client ou la syntaxe relative.

$ p4 files //depot/dir/etc/...
//depot/dir/etc/foo#1 - add change 1186 (text)
//depot/dir/etc/bar#1 - add change 1186 (text) 


$ p4 files //test_ws/dir/etc/...
//test_ws/test_ignore/ignoredir/... - file(s) not in client view. 

$ cd dir/etc
$ p4 files ...
... - file(s) not in client view.

Alternativement, vous pouvez utiliser les commandes Shell pour filtrer votre sortie comme vous le souhaitez.

p4 files //depot/dir/... |
    awk -F# '{print $1}' |
    grep -v "//depot/dir/etc/" |
    p4 -x - fstat

qui exécute p4 fstat sur tous les fichiers sous "//depot/dir/ ", à l'exception des fichiers sous" //depot/dir/etc/ ". Cette exclusion de répertoire s'effectue en répertoriant tous les fichiers, puis en utilisant grep pour supprimer ces fichiers sous le répertoire à exclure. La barre oblique de fin dans" //depot/dir/etc/ "est nécessaire pour empêcher la correspondance des répertoires sous" //depot/dir/ "commençant par" etc "(par exemple," //depot/dir/etc2009 ").

Remarque:

La commande awk suppose qu'aucun nom de fichier ne contient le caractère "#". La commande grep peut également lire ses modèles à partir d'un fichier, ce qui est utile si vous devez exclure plusieurs répertoires. Nous utilisons les drapeaux '-x -' avec la commande p4 pour utiliser l'entrée comme arguments de la commande correspondante; voir les options globales de la ligne de commande Perforce pour plus d'informations.

7
Thariama

Depuis la version 2012.1, Perforce prend en charge le P4IGNORE variable d'environnement. Cela vous permet de spécifier les fichiers et répertoires à ignorer lorsque vous utilisez les commandes qui recherchent ou ajoutent de nouveaux fichiers (p4 add, p4 status, et p4 reconcile).

Pour utiliser un fichier ignoré, créez un fichier à la racine de votre espace de travail et donnez-lui un nom significatif. La convention semble être quelque chose comme . Ignore ou . P4ignore , mais tout fera l'affaire (j'ai utilisé p4ignore.txt pour que je puisse le modifier d'un simple double-clic). Remplissez-le ensuite avec vos règles d'ignorance. Les éléments suivants ignoreront les débris indésirables générés par Visual Studio:

 # répertoires 
 bin 
 obj 
 
 # fichiers 
 *. suo 
 *. utilisateur 
 .]

Après avoir créé ce fichier, définissez le P4IGNORE variable d'environnement pour y pointer. Sur la ligne de commande, tapez quelque chose dans le sens de ceci:

p4 set P4IGNORE=C:\somepath\p4ignore.txt

Assurez-vous d'utiliser un chemin absolu! Le documentation Perforce ne le spécifie pas et ma première tentative n'a pas fonctionné (sur Windows quand même) car je n'ai pas spécifié de chemin absolu.

Après cela, toute tentative d'ajouter des fichiers ou des répertoires qui sont dans la liste des ignorés sera rejetée et vous verrez un avertissement tel que celui-ci (qu'ils vous donnent la possibilité de supprimer):

P4V 'ignored' files message


Si vous utilisez une version du serveur Perforce antérieure à 2012.1, vous pouvez toujours le faire dans vos spécifications client. La syntaxe de vos règles d'exclusion est juste un peu décalée. Ce que vous voulez c'est:

 - // dépôt/Foo .../*. utilisateur // Client/Foo .../*. utilisateur 
 - // dépôt/Foo ... bin/...// Client/Foo ... bin /...[.____.[-// depot/Foo ... obj/... //Client/Foo...obj/...

Notez les barres obliques manquantes après "Foo" et avant "bin" et "obj".

73
raven

Il existe un moyen de le faire directement dans Perforce:

  • Menu de connexion
  • Modifier l'espace de travail actuel ...

Naviguez dans l'arborescence du projet. Cliquez avec le bouton droit sur le fichier ou le dossier. Choisissez d'inclure ou d'exclure le fichier, le dossier, l'arborescence entière.

6
Clint StLaurent

Cela fonctionne très bien pour moi:

//depot/... //my_workspace_name/...
-//depot/.../.git/... //my_workspace_name/.../.git/...
-//depot/.../xcuserdata/... //my_workspace_name/.../xcuserdata/...
-//depot/.../xcschemes/... //my_workspace_name/.../xcschemes/...
-//depot/.../xcdebugger/... //my_workspace_name/.../xcdebugger/...
3
funroll

Cela peut ne pas être pertinent, mais s'il y a des espaces dans l'un de vos chemins, vous devez vous assurer que vous les avez correctement placés entre "" mais ne mettez pas le - à l'intérieur des guillemets.

1
Toby Allen