Perforce: Évitez d'utiliser le même chemin local absolu sur toutes les machines de dev?
-
09-10-2019 - |
Question
Je suis nouveau à Perforce (mais je suis assez expérimenté avec d'autres systèmes, la plupart du temps SVN).
Maintenant, je suis en train de faire un script des fenêtres simples de chauve-souris de construction qui a besoin de vérifier dans certains résultats de construction (controversés à certains, je sais, mais s'il vous plaît essayer de ne pas tenir compte car il est un autre débat). J'utilise p4 pour cela. Le problème est que je semble qu'il soit:
- Utilisez le même "client" que sur d'autres machines (l'option -c). Cela aura une « racine », qui ressemble à elle spécifie le chemin absolu où la copie de travail va localement. Semble plutôt « wtf? » pour moi ...
- créer interactivement un « client » pour chaque machine (correspondant à la configuration du système de fichiers local). L'interactivité est évidemment un deal-breaker pour un script automatisé.
Puis-je en quelque sorte il suffit d'utiliser le répertoire courant, comme je peux avec SVN?
Y at-il une meilleure option?
La solution
Créer un espace de travail avec une racine de null et la carte du dépôt à ce client. Voici une spécification client exemple:
Client: client_name Update: 2010/10/20 14:18:23 Access: 2010/10/20 14:20:53 Owner: raven Host: ravens-pc Description: Created by raven. Root: null Options: noallwrite noclobber nocompress unlocked modtime rmdir SubmitOptions: leaveunchanged LineEnd: local View: //depot/... //client_name/...
La première chose que votre script doit faire est de passer à ce client en définissant la P4CLIENT de $ variable d'environnement $:
p4 set p4client=client_name
script va maintenant travailler dans le cadre de ce client. En vertu du fait que vous avez spécifié une racine de null, une synchronisation que vous faites sera par rapport au répertoire courant . Donc, si vous synchronisez // dépôt / foo / ... tandis que dans C: \ bar, vos fichiers apparaîtront dans C:. \ Bar \ foo
La dernière chose que votre script doit faire est clair que la variable P4CLIENT pour restaurer le système à la spécification du client par défaut:
p4 set p4client=
Autres conseils
Je vous suggère de créer un nouveau client chaque fois avec un modèle de client. Tout d'abord, créer manuellement un client en vue que vous le souhaitez dans les clients de construction réels. Ne spécifiez pas le propriétaire, le client ou les champs racine. Ensuite, chaque fois que vous voulez un nouveau client l'ont procédez comme suit:
p4 client -t my-client-template-name -o my-unique-client-name >clientspec.txt
p4 client -i <clientspec.txt
Où my-client-template-name
est le client que vous avez créé dans la première étape. Bien sûr, quand vous avez terminé assurez-vous de faire ce qui suit:
p4 client -d my-unique-client-name
Vous pouvez créer de manière interactive un client sans éditeur en utilisant p4 client -i
:
Le drapeau -i provoque une spécification du client doit être lu à partir de la entrée standard. L'éditeur de l'utilisateur n'a pas invoqué
Dans votre builtscript vous auriez un modèle pour la vue du client, que vous modifiez à la volée pour la machine de construction en cours et passer à p4 client -i
.
Apparemment, vous pouvez pré-créer un espace de travail client avec un répertoire racine de « null », ce qui entraînera Perforce à utiliser le répertoire de travail actuel en tant que root.