2010-05-06 8 views
1

? et quel système de contrôle de version peut le faire en plus de Clearcase?Impossible de créer un seul fichier avec Mercurial? Est-ce possible avec Mercurial?

+0

pourquoi pensez-vous que vous avez besoin de branche un seul fichier? –

+0

@jk, la fonctionnalité de clearcase me manque, j'ai du mal à maintenir une version différente pour différents clients. – Benny

+0

Je ne sais pas si ça marchera pour vous, mais vous pourriez utiliser 'mq' pour faire ce que vous voulez. –

Répondre

1

Comment vous pouvez utiliser MQ:

 
$ hg qnew -m "Changes for client0" client0 
... change the file ... 
$ hg qref # update the client0 patch with the changes 
$ hg qpop # pop the changes off the queue stack 
... develop like normal ... 
... client0 asks for a build ... 
$ hg qpu # apply client0's patch 
$ make release 
$ hg qpop 

Il obtiendrait un peu tatillon si vous avez à traiter avec beaucoup de clients ... Mais il peut être utile d'envisager.

L'autre chose que vous pourriez faire, bien sûr, est engage juste un tas de fichiers .diff:

 
... make changes for client 0 ... 
$ hg diff > client0.diff 
$ hg revert --all 
$ hg add client0.diff 
$ hg ci -m "Adding client0 changes" 
... develop ... 
... client0 asks for a build ... 
$ patch -p1 < client0.diff 
$ make release 
$ hg revert --all 
+0

merci beaucoup, bon à apprendre – Benny

1

Non, ce n'est pas possible. Une branche dans Mercurial est un instantané de l'état du référentiel entier.

Vous pouvez le faire avec CVS, bien que, comme CVS suit les changements sur un fichier par fichier base :)

4

David est exact que vous ne pouvez pas avoir une branche qui existe sur un seul fichier, mais il est Il vaut la peine de souligner que les gens ont souvent des branches qui ne modifient qu'un seul fichier. Puisque les métadonnées de branche sont stockées dans le changeset, et puisque le changeset contient seulement un delta (changement), avoir une branche qui modifie seulement un seul fichier est presque instantané pour créer, mettre à jour, commettre, et fusionner, plus il prend presque espace sur le disque.

Par conséquent, il s'agit d'une manière très courante de gérer les configurations par client. Gardez le minuscule changement pour eux dans une branche, et fusionnez à partir de main, où le développement s'est produit, dans cette branche, chaque fois que vous voulez mettre à jour leur déploiement.

Questions connexes