Après un premier message posté il y a plus d'un an ici
Me voila de retour pour poster ici...
Les librairies :
- Le code source en vrac est devenu une librairie avec plein de fonctions...
- Une librairie d'arbre a été développé, bien pratique pour afficher un arbre dans un navigateur IE.
L'outils :
Je travaille depuis des années avec Visual SourceSafe comme gestionnaire de source, c'est un outils pas très puissant mais très simple à utiliser.
Le problème est le suivant : Lorsqu'un logiciel est livré et qu'une nouvelle version est développé, on fait un Share puis un Branch afin que jusqu'à la sortie de la version, l'historique de chaque fichier soit le même mais qu'ensuite, chacun vive sa vie propre.
Le problème arrive ensuite lorsqu'on modifie un fichier dans la branche source et que l'on veut faire des reports dans la nouvelles branche... pour un fichier ça va mais pour une équipe et des développements importants ça devient vite fastidieux et source de buggs.
Je n'ai trouvé à ce jour aucun outils pour faire ce report... sauf SourceSafe lui-même :
- Une interface minable, pas intuitive où l'on a du mal à comprendre les différentes branches sources d'un fichier
- Aucun historique des reports
- Aucune détection des versions à merger
- Il faut le faire, sur chaque fichier, un par un, projet par projet !
Que fait ce script ?
On choisi une base SourceSafe, un login, un mot de passe.
Puis, on choisi une branche source et une branche destination où il faut merger les fichiers.
Ensuite, le script analyse la branche destination afin de créer l'arborescence SourceSafe.
Il analyse ensuite chaque fichier :
- Il recherche alors l'ancètre commun entre le fichier dans la branche destination et la branche source.
- Si une nouvelle version a été archivée dans la branche source depuis la branche, il faut alors fusionner ce fichier, il apparait alors en rouge.
- Le logiciel détecte kdiff car il a besoin d'un logiciel de merge automatique qui sait faire du merge à 3 fichiers et résoudre les conflits graphiquement. Il faudra donc l'installer, c'est gratuit !
- Lorsque l'on clic sur Merge, le logiciel ouvre KDiff et merge (qui peut être automatique s'il n'y a pas de conflit), l'icône passe alors jaune avec une check rouge (indiquant que le fichier est extrait).
- Lorsque le fichier est mis en check in par le programmeur (non fait par le script) le logiciel écrit ces informations dans des fichiers lui permettant par la suite de ne pas considérer ce fichier comme devant être mergé.
Quelques images...
Login sur la base SourceSafe :
Il faut choisir le chemin de la base SourceSafe, le login, le mot de passe.
Choix de la branche :
L'ouverture de noeuds est dynamique afin de ne pas descendre tout l'arbre de SourceSafe dans l'IHM
Arbre de merge :
2 fichiers rouges à merger, 1 fichier vert (à jour) qui est extrait, des fichiers verts à jour, non extrait par moi.
0 / 2 => 0 fichiers fusionnés
0 => Nombre de fichiers fusionnés
2 => Nombre de fichier qu'il faut fusionner
0 => Nombre de fichier fusionné et check-in (report de branche)
Une fois mergé :
Ici, il y a deux fichiers jaunes indiquant que le merge a été effectué :
- Un avec une check bleu : il a été mergé puis check-in
- Un avec une check rouge : il a été mergé mais pas encore archivé (check-in), le logiciel attend donc que l'utilisateur archive ce fichier.
Pour le lancer : décompresser le zip
SSMergeBranchs_2.2.zip (123Ko)
Installer KDiff3 (utilisé que lors du merge)
Double clic sur SSMergeBranchs_2.1.vbs
Quelques informations :
Le script génère et utilise quatre fichiers :
- Merge_Branchs_Lasts.ini: situé à côté de srcsafe.ini dans le répertoire de SourceSafe, il permet de mémoriser quels sont les derniers reports faient sur chaque fichier, sur chaque branche fin de ne pas redemander toujours les mêmes merge, information que SourceSafe ne mémorise hélas pas.
- Merge_Branchs_History.ini: situé à côté de srcsafe.ini dans le répertoire de SourceSafe, il permet de mémoriser quels reports ont déja été faient efin de constituer un historique. Pour cette version, ce fichier est généré mais pas exploité pour le moment. J'envisage d'ajouter une commande afin de remplir dans l'arbre, sur demande de l'utilisateur, affin d'afficher les historiques sur chaque fichier.
- SSMergeBranchs_2.1.ini: Situé au même endroit que le script, il mémorise le chemin de la base SourceSafe, le login, le mot de passe (crypté)et les branches pour pas que l'on soit obliger de tout renseigner à chaque lancement.
- CurrentMerging.ini: Situé au même endroit que le script, il mémorise quels sont les fichiers actuellement mergé et les réimporte lors du lancement du script. La version 2.0 n'est pas exploitable du fait de l'abscence de ce fichier. En effet il fallait ne pas quitter le script jusqu'au checkin des fichiers mergé pour qu'il puisse générer les fichiers (Merge_Branchs_Lasts.ini et Merge_Branchs_History..ini), or pour des reports massifs cela dure plusieurs jours, les reports sont faient dans beaucoup de branches différentes, il est impensable de lancer ce script sur 20000 fichiers simultanément et de le laisser ouvert 10 jours !
Beaucoup d'autres choses à expliquer mais il est tard et je vais attendre des retours pour voir si ça intéresse du monde ou pas.
[edit]
25/03/2009 mise à jour version 2.2
Partager