Je commence avec SVN et de nombreuses sources disent que la fusion est très difficile dans SVN par rapport aux outils DVCS. Les questions les plus récentes que j'ai pu trouver ici sur SE datent de 2012.
Parfois, il est mentionné que la raison en est que SVN avant la v1.5 n'avait pas de métadonnées, mais SVN est maintenant à la version 1.8.9.
Étant donné que SVN est maintenant beaucoup plus mature que v1.5, et en particulier le fait que nous n'avons pas utilisé SVN 1.5 afin de ne pas souffrir du manque de métadonnées mentionné - y a-t-il encore beaucoup de validité dans ces arguments contre SVN?
Je comprends que DVCS a une approche complètement différente qui est souvent plus souhaitable, mais pour ceux qui "doivent" utiliser SVN pour une raison quelconque, la fusion n'est plus vraiment "l'enfer", n'est-ce pas?
la source
Réponses:
Cela fonctionne bien si vous vous en tenez aux cas simples , mais il y en a des complexes qui ne le font pas.
Les limites auxquelles je peux penser:
Il ne peut trouver l'ancêtre le plus récent que s'il se trouve sur l'une des branches impliquées. Donc, si vous créez
branches/this
et lesbranches/that
deux à partir detrunk
, puis essayez de fusionnerbranches/this
versbranches/that
, il ne saura pas quoi faire. Ce qui signifie que vous ne pouvez fusionner que la branche vers ou depuis son parent. Vous pouvez rencontrer cela si vous démarrez deux branches de fonctionnalités et réalisez plus tard que les fonctionnalités sont interdépendantes et doivent les combiner.Bien qu'il affirme qu'il peut suivre les renommages, la fusion de branches lorsque des fichiers ont été déplacés d'un côté et modifiés de l'autre ne trouve pas toujours les bons fichiers à fusionner et les réparer manuellement est quelque peu fastidieux car il ne laisse pas les informations nécessaires n'importe où dans main.
Les fichiers ajoutés provoquent parfois de faux conflits lors de fusions ultérieures.
Étant donné que la subversion n'a pas de concept de branche distinct, vous ne pouvez fusionner qu'un sous-arbre d'un projet et cela peut conduire à de gros dégâts assez rapidement. Il est fortement recommandé de prendre soin de toujours fusionner les branches complètes. Malheureusement, pour une raison ou une autre, les propriétés des informations de fusion apparaissent parfois dans les sous-répertoires même si elles semblent superflues et que la fusion a été correctement effectuée pour toute la branche.
Enfin et surtout, il est lent . Les fusions sur un projet de n'importe quelle taille sérieuse prennent souvent des minutes où la plupart des DVCS peuvent le faire en moins d' une seconde.
la source
D'après mon expérience, la fusion dans SVN a été «corrigée» dans la version 1.6. Je travaille à la fois dans Mercurial et SVN, et depuis la version 1.6 de SVN, la fusion semble être à peu près la même quantité de travail sur les deux plates-formes. La seule exception pourrait être que vous devez vous rappeler de fournir l'
--reintegrate
option lors de la fusion d'une branche dans le tronc à l'aide de SVN.Ce n'est que mon expérience opérationnelle. Je ne sais rien des internes de SVN.
la source