Scénario: J'ai « hérité » d'un programme, maintenu sous Mercurial, qui ne fonctionne que sur mon système avec quelques réglages spécifiques à certains fichiers qui sont sélectionnés dans je ne suis pas veulent vérifier ces réglages dansEst-ce que Mercurial peut faire un reverse-patch?
.. Ma solution la plus récente à cela est de créer un fichier correctif mercurial (hg diff> patchfile) contenant ces réglages; Lorsque j'ai besoin de vérifier mes modifications, je vais simplement appliquer le correctif, valider et réappliquer le correctif. (Si j'avais le contrôle total de la source, je déplacerais tous ces petits réglages dans un seul fichier de configuration qui n'est pas sous contrôle de version, en plaçant un fichier de configuration "sample" sous le contrôle de version)
Malheureusement, il semble que tandis que la commande GNU patch
supporte l'indicateur --reverse
, il ne supporte pas le format diff multi-fichiers de hg comme un seul fichier patch (ou peut-être le fait, et je ne connais pas les commutateurs pour cela?). OTOH, hg a sa propre commande patch
qui peut appliquer le diff, mais qui ne supporte aucun type de drapeau reverse
.
Donc, ma question est double:
- Comment devrait cela soit fait dans Mercurial? Sûrement accroché à un "patch tweak" n'est pas le seul moyen de gérer cette situation. Peut-être que mercurial a un plugin ou quelque chose de intégré pour de tels changements temporaires, incommutables.
- Mis à part la façon dont devrait être fait, est-il possible d'inverser l'application d'un tel patch diff mercurial à un repo mercurial comme ceci? Il existe d'autres situations où une telle fonctionnalité serait utile.
Cela ressemble à ce que je veux (je dois admettre que je ne prenais jamais l'effort d'apprendre MQ jusqu'à présent). Cependant, maintenant que j'ai ajouté mon patch au mq et apporté les modifications que je veux commettre, 'hg ci' se plaint que je" ne peux pas commettre sur un patch mq appliqué ". Je ne peux pas "qpop" le patch avant de le commettre, car il y a des changements locaux dans le repo. Cela semble être une impasse qui empêche de façon décisive MQ de résoudre le problème, à moins que je ne manque quelque chose. – eternicode
@eternicode: Vous ne pouvez pas 'hg commit' un patch, mais vous pouvez le' hg qfinish'. – robert
@robert Relisez ma question. Je * ne veux * pas commettre le patch, jamais. Je veux * valider * les modifications que j'ai faites après que le correctif soit dans la file d'attente, mais sans les changements introduits par ce correctif. Il semble que MQ n'est pas le bon outil pour cela, juste pour cette raison. – eternicode