2010-03-23 29 views
2

J'ai un grand fichier source dans Perforce qui a été divisé en plusieurs petits fichiers dans une branche. Je veux créer une vue de branche qui peut gérer cela, mais perforce (2009.1) ne voit que le dernier des multiples fichiers. Par exemple, j'ai créé:Vue de branche pour un fichier qui a été divisé en plusieurs fichiers

p4 integrate //depot/original/huge_file.c //depot/new/huge_file.c 

Plus tard, je divisé le fichier énorme en plus petits:

p4 integrate //depot/new/huge_file.c //depot/new/small_file_one.c 
p4 integrate //depot/new/huge_file.c //depot/new/small_file_two.c 
p4 integrate //depot/new/huge_file.c //depot/new/small_file_three.c 

Vous pouvez alors modifier chacun de ces (y compris //depot/new/huge_file.c) et soumettre.

Maintenant, je fais des changements à //depot/original/huge_file.c et je veux intégrer ces changements à //depot/new. Si je le fais manuellement, il fonctionne très bien:

p4 integrate //depot/original/huge_file.c //depot/new/huge_file.c 
p4 integrate //depot/original/huge_file.c //depot/new/small_file_one.c 
p4 integrate //depot/original/huge_file.c //depot/new/small_file_two.c 
p4 integrate //depot/original/huge_file.c //depot/new/small_file_three.c 

Mais je ne veux pas le faire à chaque fois que j'intègre - ce genre de chose appartient à une vue branche. Malheureusement, si la vue de la branche contient plusieurs fois le même fichier source, les lignes suivantes remplacent les précédentes. Comment puis-je créer une vue branche comme ceci:

//depot/original/huge_file.c //depot/new/huge_file.c 
//depot/original/huge_file.c //depot/new/small_file_one.c 
//depot/original/huge_file.c //depot/new/small_file_two.c 
//depot/original/huge_file.c //depot/new/small_file_three.c 

Quand j'intégrons en utilisant cette spécification de branche, je ne reçois que small_file_three.c intégré.

Répondre

3

je vais suggérer que vous utilisez un overlay mapping (un moyen de forcer toutes les lignes de la spécification à traiter), mais une lecture rapide de la page mettre le holà sur ce point:

Overlay Les mappages sont uniquement autorisés sur les vues client et ne fonctionnent pas avec les vues de succursale .

Il semble que vous deviez le programmer. This page a plus d'informations qui pourraient vous être utiles (et souligne le fait que cela ne peut être fait, "Perforce ne supporte pas 1: beaucoup de mappages de fichiers.").

+0

Une autre solution possible, que j'ai utilisée avec Perforce, consiste à avoir plusieurs vues de branches pour spécifier chacun des différents nouveaux fichiers. C'est maladroit, mais quand je faisais beaucoup de fractionnement similaire, ça fonctionnait assez bien, car vous pouvez réutiliser les mêmes spécifications de branche avec différents fichiers source. –

0

Juste un sujet d'intérêt, mais pourquoi? Pourquoi ne pas avoir le fichier huge_file.c dans Perforce, puis modifier votre système de construction pour l'assembler à partir des trois fichiers source plus petits, contrôlés par la source. Ou même juste #include eux si vous vouliez la vraie simplicité. En d'autres termes, je me demande si vous essayez d'utiliser le mauvais outil pour la tâche que vous voulez faire?

+0

Le fichier source huge_file.c était déjà dans Perforce, et était devenu un conglomérat de plusieurs choses indépendantes qui appartenaient réellement à des unités de compilation séparées. Je l'ai divisé comme un moyen de nettoyer le code source. Maintenant, chacun des fichiers sources est beaucoup plus petit et plus gérable. – ScottJ

+0

Je devrais également expliquer que // depot/original est une ancienne version du produit, et aucun nouveau développement ne se produit sur cette branche, seulement des corrections de bogues. Le nouveau développement est dans // depot/new. D'où la nécessité d'une intégration entre les deux en P4. – ScottJ