2010-09-25 10 views
1

Dites-lui que vous avez cloné un dépôt et que son travail principal est de l'éditer localement. Quelle est la bonne opération à suivre pour qu'il puisse juste fusionner avec l'amont initial tout en gardant ses changements? c'est-à-dire comme "Update" dans TortoiseSVN.Question simple sur TortoiseHg

Répondre

2

La réponse courte est "tirer". De là, vous avez deux options

Vous pouvez simplement mettre à jour, exactement comme vous le feriez avec svn, et vos changements resteront locaux et non versionnés, ou vous pouvez valider et fusionner vos changements avec la tête que vous avez tirée. Si vous ne repoussez pas, ces fusions n'apparaîtront jamais sur le dépôt central, et vous aurez l'avantage supplémentaire d'avoir vos modifications versionnées et faciles à suivre. La deuxième méthode est beaucoup plus dans l'esprit de DVCS.

1

Les deux méthodes de @Axelle Ziegler's answer sont le vieux duel «rebase vs. merge».

La première méthode nécessite plus d'explications. Pour commencer, tous les DVCS encouragent la validation fréquente, ce qui est un avantage majeur sur CVCS comme svn, donc vos changements locaux sont (devraient) probablement déjà engagés lorsque vous voulez synchroniser avec le flux amont. Si vous ne validez pas, hg update par défaut essaiera de fusionner vos modifications dans la révision que vous mettez à jour. Voir hg help update pour plus de détails (note: soyez très prudent avec -C).

Maintenant, si vous avez des changesets locaux lorsque vous tirez en amont, vous obtiendrez deux têtes (non , mais votre référentiel). Ensuite, vous devez décider de fusionner ou de rebaser. Hg préfère et encourage la fusion, donc le rebasage n'est pas fourni dans le noyau, mais avec une extension groupée que vous devez activer pour obtenir la commande. Il y a eu beaucoup de bonnes questions and answers ici sur le sujet. Si vous aimez couper à la chasse, lisez les liens dans this blog pour voir ce que les Créateurs ont dit.

Il n'y a guère "simple" question quand il s'agit de DVCS :)

0

Je vois une troisième solution avec l'extension "mq" ("Mercurial Patch file d'attente"). En utilisant ce que vous ne commettriez pas, mais juste créez et actualisez votre ou vos patchs de vos changements locaux. Après avoir tiré sur une base régulière et avant de mettre à jour votre copie de travail, vous devez détacher votre (vos) patch (s), mettre à jour, puis réattacher le (s) patch (s). De cette façon, vous pourrez gérer vos propres changements complètement isolés dans la file d'attente Patch, tout en gardant le contact avec les changements du monde.