Quelle est l'approche GIT pour publier une file d'attente de patch?
-
14-11-2019 - |
Question
Je suis habitué au mercurial mq
extension Pour maintenir un ensemble de correctifs personnalisés sur l'amont. Ils peuvent être publiés en tant que référentiel distinct en dehors de l'amont. Maintenant, en git, j'utilise des succursales privées et rebase
, et cela fonctionne bien jusqu'à ce que je veuille partager mes correctifs avec quelqu'un d'autre.
Dans Mercurial, la file d'attente de patch est un référentiel indépendant et peut être publié comme d'habitude. BitBucket propose même une fonction de file d'attente de correctifs pour le lier au référentiel parent. Dans GIT, si je publie une branche privée avec mes correctifs, je perds la possibilité de les réprimander (à moins que je ne casse les fusions), mais les correctifs doivent être mis à jour de temps en temps.
De une autre question si J'ai trouvé que dans le monde git stgit est proposé comme un équivalent pour mq
. Il est similaire à mq
, mais comment publier une file d'attente de patch avec STGIT?
(stg publish
Semble être imprégné de créer une nouvelle succursale «Fust Friendly», de ne pas publier les patchs eux-mêmes)
Quelles sont les autres approches pour publier des files d'attente de patch dans GIT?
La solution
Pour résumer les réponses et les commentaires. Avec git
Il existe deux approches pour publier de petites modifications personnalisées sur la distance en amont:
- Oubliez
rebase
, publier une succursale et de nouvelles fusions si nécessaire - Déclarez qu'une branche reprend, rébase et publie (Pro: Clean History, Contra: peut être une douleur à utiliser en continu par quelqu'un d'autre, exemple: Linux-next)
Jusqu'à présent, le flux de travail de la file d'attente de patch pure ne semble pas être faisable avec Git, mais culpabilité semble être très proche de mq
, même les noms des commandes. Il ne permet pas une file d'attente de correctifs contrôlée (et publiable).
Autres conseils
Compte tenu des commentaires donnés, il semble qu'une approche soit plus ou moins équivalente au MQ de Mercurial utiliserait la culpabilité. Contrairement à MQ, la culpabilité ne fournit pas directement une interface pour un "référentiel de patch", mais vous pouvez tourner le .git/patches/<branch>
dans un référentiel .git manuellement.
Il y a une extension git appelée git-series
qui utilise GIT pour maintenir une file d'attente de patch versionnée. Il permet aux fonctionnalités similaires de mq
En ce que vous pouvez maintenir plusieurs séries (équivalent à plusieurs files d'attente HG), des correctifs de refactor basés sur la rétroaction et commettre la série à Git. C'est le plus proche de mq
, mais c'est suffisamment différent pour que vous vous attendiez à une prise de vue du pied.
AFAICT D'après le lien fourni sur MQ, il a à peu près les mêmes problèmes de publication que Git Rebase?
Dans l'ensemble, je pense que la publication de votre succursale, avec l'avertissement qu'il s'agit d'une succursale rebasquée est votre meilleure option. Par exemple, c'est ainsi que la branche Linux-Next est maintenue.