2009-10-02 10 views
8

Nous avons actuellement 2 branches:svn rebasage et histoire perdue

/repo/branch/current_version 
/repo/branch/next_version 

CURRENT_VERSION est une branche où tous les développeurs travaille actuellement.

Nous commençons une nouvelle version et créons version suivante branchez à partir d'un point dans current_version, alors que le travail sur current_version continue toujours. Dans next_version nous faisons du développement et dans les prochains mois la branche deviendra notre principale, où tout le développement sera fait.

Comme il y a du développement sur current_branch, nous avons pensé périodiquement (disons une fois par 2 semaines) à rebaser next_version. Ceci afin de garder les deux branches synchronisées, donc quand tous les développeurs finiront par supprimer current_branch et passeront à next_release, next_release contiendra toutes les fonctionnalités de current_branch intégrées et testées.

Le problème est le rebasage. En fait, rebasing fusionne les dernières validations de current_branch à next_version. Donc, si je vais examiner l'historique des fichiers validés dans next_release, tout ce que je verrai, c'est les commits de fusion et non l'historique (commits/auteurs/annotations) de current_version.

Quelque chose me manque?

Répondre

20

Non, vous n'avez rien manqué. C'est un gros problème avec l'utilisation de SVN pour le contrôle de version. Je l'ai rencontré encore et encore lors de mon dernier emploi. Chaque fois que quelqu'un a validé quelque chose à current_branch (pour s'en tenir à votre terminologie), le message de commit devrait être copié manuellement afin qu'il puisse être utilisé dans le message de commit de fusion. Cela est rapidement devenu une énorme douleur. C'est pourquoi le nouveau logiciel de contrôle de version est sorti avec de meilleures capacités de fusion (Git, Mercurial, et Bazaar viennent à l'esprit).


EDIT: Apparemment SVN a résolu ce problème. SVN 1.5 et plus incorporent merge-sensitive logs and annotations. Utilisez le drapeau --use-merge-history (-g) avec svn merge et svn blame pour voir les messages de commit de la branche fusionnée.

+4

@ThisSuitIsBlackNot votre commentaire supprimé à propos de la fonction svn 1.6 "Merge-Sensitive Logs and Annotationscomment" est ce que je recherche. Utiliser flag -use-merge-history (-g) avec svn log/blame fera le travail. Je vois la fonctionnalité présente en 1.5 aussi. Mettez à jour votre réponse et je l'accepterai :) – dimba