11
votes

Comment faire une synchronisation rapide et sûre sur la perforce?

Si vous faites un Sync dans perforce, cela peut arriver, très souvent, ne rien faire même si cela le devrait. Si vous faites une synchronisation forcée ( sync -f ), il synchronisera définitivement tous les fichiers du serveur aveuglément et cela est inacceptable si vous avez un grand projet.

La question est de savoir comment faire une synchronisation rapide?


0 commentaires

4 Réponses :


18
votes

La partie clé à votre question est "Même si elle devrait". Sans échouer, dans tous mes (aussi) de nombreuses années d'expérience avec perforce, les utilisateurs qui reviennent à des synchronisations forcées habituellement, car une synchronisation normale ne fait pas ce à quoi ils s'attendent, n'utilisent pas de perforce correctement.

Vous devez laisser Perforce gérer votre disque dur pour vous - le serveur sait quelles versions de quels fichiers que vous avez, et une synchronisation normale obtient ainsi ce dont il a besoin. S'il échoue, cela est presque sans exception, un signe que l'utilisateur modifie, supprimant, ajout, renommer des fichiers en dehors de la performance (par exemple, Explorer).

Parfois, vous pouvez obtenir un système drôle (c'est-à-dire un défaut PC, qui cause ceci, ce n'est donc pas nécessairement la faute des utilisateurs. Mais ce sont très rares - donc mon qualificatif "habituellement" ci-dessus.

Si vous pensez, main sur cœur, que vous ne faites rien de l'ordinaire, puis commencez à examiner ce que les autres processus pourraient modifier ces fichiers. Par exemple. Est-ce que vous construisez que le système fait quelque chose d'impair et d'essayer de modifier des fichiers lors de sa construction? Avez-vous une part de réseau ouvert que quelqu'un d'autre pique-t-il par inadvertance? Avez-vous un système de sauvegarde qui interfère?

espère que cela aide.


6 commentaires

Perforce associe quelles versions de quels fichiers que vous avez avec votre spécification client. Ces informations sont conservées sur le serveur avec chaque spécification du client - ce qu'elle appelle sa "liste de liste". Les clients partagés ne sont pas des pratiques utilisateur typiques. Ils sont autorisés par perforce d'activer des scénarios d'utilisation particuliers. Mais si vous travaillez sur différentes machines, cela est géré en ayant une spécification client par machine. C'est exactement ce qu'ils ont été conçus pour.


Disons que vous avez une ferme de construction - Voulez-vous créer un espace de travail (ClientPec) pour chaque ordinateur à la ferme?


Oui, une spécification client par machine serait souhaitable dans la plupart des cas. Vous pouvez également automatiser leur création, cependant, il n'est donc pas aussi douloureux que vous puissiez penser.


Greg, pouvez-vous fournir des indices à ce sujet? J'aimerais trouver une façon de suivre votre suggestion, mais en utilisant un clientsPEC existant en tant que modèle et si une personne met à jour le script d'origine CLIGHIGESPEC, le script informatique de CLIGHTPEC à mettre à jour les ClientsPec générés.


La plupart des scripts peuvent être facilement effectués avec le client de commande P4. Vous pouvez utiliser du texte de tuyau dans ou, dans le cas du client P4, l'option -t vous permet de fournir un modèle. Essayez P4 Aide Client pour un premier look. Il y a aussi des API à la perforce (Python, .NET, etc.) - voir le site Web perforce. Pour votre dernière exigence, vous pouvez ajouter une gâchette à la perforce qui invoquera un script / une commande si une spécification client est modifiée. Vous pouvez utiliser cela pour régénérer les autres - mais pensez si vous avez besoin de cela pour arriver immédiatement, ou si vous seriez mieux servi avec une option «publier» explicite.


Une autre technique qui fonctionne relativement bien consiste à marquer la spécification du client comme lecture-écriture et exécution d'une réconciliation (peut être scriptée) qui marquera automatiquement pour modifier les modifications modifiées / Ajout / Supprimer effectuées localement. De cette façon, vous pouvez effectuer des changements lorsque vous le feriez normalement (par exemple par l'explorateur) et que vous êtes toujours au sein du jardin secret de P4. Notez que vous devez vous assurer que tous les fichiers générés sont placés dans un dossier en dehors de la racine de la spécification client, sinon vous finirez par vérifier dans beaucoup de choses que vous ne voudrez peut-être pas là.



4
votes

Si vous créez une incohérence, où Perforce perd une piste de ce qui se passe dans votre espace de travail, vous devez utiliser la fonction "Concile Offline Work ..." (en P4V).

Ceci exécutera un dossier diff et vous indiquera quelles options vous devez résoudre les incohérences.

En général, assurez-vous de vérifier toujours des fichiers explicitement via Perforce (ouvert pour la modification). Cela se sent étrange si vous êtes habitué à d'autres systèmes.


3 commentaires

Désolé mais je ne vis que je ne vis d'utiliser le client visuel pour cela. Pour le même projet, je synchronise des fichiers de 6 serveurs de perforce différents de sorte qu'une solution de lot est acceptable - je ne veux pas répéter le processus manuellement.


@sorin: Avez-vous déjà trouvé une solution acceptable? Je rencontre quelque chose de similaire lorsque vous essayez d'automatiser les constructions. Je ne veux pas avoir à forcer la synchronisation à chaque fois, car cela prend ~ 2h.


Désolé mais je parle plus perforce. Ma dernière expérience avec eux était de presque 5 ans. Il n'y a qu'un seul avenir pour eux, une semblable à Blackberry.



6
votes

Comme mentionné par les autres réponses, vous devez créer un client séparé (espace de travail) pour chaque "instance" d'une arborescence de répertoire synchronisée du dépôt.

Si vous souhaitez forcer-synchroniser uniquement ces fichiers qui ont changé Du dépôt: xxx

Avertissement: qui écrasera tous les fichiers modifiés localement (dans le répertoire actuel et les sous-répertoires).

si vous avez modifié certains fichiers et oublié de les ouvrir pour la modifier d'abord, vous pouvez le faire: xxx

qui s'ouvrira pour éditer tout fichier qui est différent du dépôt.

et Ceci: xxx

s'ouvrira pour supprimer tout fichier supprimé localement.


0 commentaires

0
votes

Je crois que la commande que vous recherchez est P4 propre.

de: http://www.perforce.com/ Perforce / R14.2 / Manuels / CMDREF / P4_CLEAN.HTML

"Les fichiers présents dans l'espace de travail, mais manquant du dépôt sont supprimés de l'espace de travail. Fichiers présents dans le dépôt, mais manquant de votre espace de travail. La version des fichiers synchronisée du dépôt est ajoutée à votre espace de travail. Les fichiers modifiés dans votre espace de travail qui n'ont pas été vérifiés sont restaurés à la dernière version synchronisée du dépôt. "


1 commentaires

P4 Clean effectuera définitivement le travail, mais sur un très grand projet, il est extrêmement lent (les montants se rapprochent avec une manipulation automatisée de cas conçus en faveur du serveur). Le meilleur cas pour le OP est d'effectuer des opérations de fichiers bien que perforce (suppression, déplacement, modification, etc.). La vérification occasionnelle doit toujours être effectuée pour voir si rien n'a glissé dans les fissures.