Gérer Un Tronc Commun De Fichiers Entre Deux Projets

Bonjour,

je développe depuis quelques années maintenant sur Yii, j’ai par exemple un site catalogue classique que je personnalise selon les demandes du client.

A chaque nouveau projet je duplique le site et modifie les fichiers au cours du développement.

Mon problème c’est qu’à chaque fois que je modifie un fichier commun à tous ces catalogues (le modèle Catégorie par exemple), je dois l’actualiser dans les répertoires des autres catalogues/projets. Alors forcément j’en oublie, je me trompe de répertoire… bref c’est galère et au final je n’ai jamais un site possédant les derniers changements.

Je suis allé voir du côté des systèmes de versions comme GIT et autres, mais je n’ai pas compris s’ils permettent de partager certains fichiers / répertoires entre projets ou s’ils permettent seulement de partager un répertoire entre utilisateurs, avec historique etc.

Peut-être pouvez-vous m’éclairer un peu plus là dessus, et me dire comment vous feriez!

Merci d’avance, bonne journée

Clem

Salut Clem,

de ce que j’en comprends, un système comme GIT (ou bien au autre système de gestion de sources style SVN) pourrait t’être utile.

GIT te permet de sauvegarder toutes tes sources dans la branche principale (le “tronc commun”). Ensuite, pour chaque client, tu peux créer une branche particulière qui te permettrait notamment de conserver la version exacte installée chez ce client (ainsi que l’historique des modifications).

Ensuite, quand tu le souhaites (par exemple une fois que la version du client est stabilisée) tu peux reporter certaines modifications spécifiques à ce client, vers la branche principale, qui représente le “tronc commun”. Bien sûr l’intérêt de cette opération de “fusion” (en anglais 'merge") c’est qu’elle s’applique aux modifications qui apportent une valeur ajoutée au tronc commun, et qui sont suffisamment générique pour en faire partie. A toi de les choisir …

Lorsqu’un nouveau client se présente, c’est reparti ! Tu créé une branche pour ce client, depuis le tronc commun, enrichi par le ou les projets des clients précédents. De cette façon, ton tronc commun évolue et s’améliore et toi tu garde l’historique de toutes les versions installées chez tous tes clients.

GIT permet aussi de partager du code et de permettre à d’autres développeurs de proposer des modifications de code… mais bon, là on est plutôt dans le domaine “open Source”.

Enfin, c’est comme cela que je gérerai ce problème et j’espère avoir éclairé ta lanterne ;)

ciao

B)

Merci pour cette réponse détaillée.

C’est bien ce que j’avais compris en creusant un peu le sujet.

Mais ça me parait compliqué à mettre en place et utiliser, j’ai pas encore bien compris les mécanismes et automatismes de GIT. Qu’est-ce qui se passe physiquement sur le disque quand j’ajoute une branche?

Je manque de temps pour apprendre en tâtonnant… Personne ne propose de formation sur le sujet?

Utiliser la console à longueur de journée me parait un peu austère, est-ce que vous utilisez des outils plus automatisés? Genre qui demande quoi faire avec chaque fichier ajouté / modifié dans un répertoire? Le but c’est quand même de gagner du temps!

Je garde sous le coude l’idée d’une branche par nouveau client (ça peut être dans des dossiers séparés je suppose?).

Encore merci Raoul pour ta participation.

A bientôt

Bonjour,

J’ai le même genre de problème récurrent, et je vais le résoudre par 2 scripts PHP.

Un 1er script constitue la liste de tous les fichiers dans l’arborescence Yii, la liste des tables et des champs dans la base de données, et la liste des données système dans la base de données (= les données qui sont maintenues par l’équipe projet, et qui doivent rester intactes). Ce 1er script doit être lancé sur le site de référence et aussi sur le site audité.

Une fois les 2 listes récupérées, le 2nd script compare les 2 listes et met en évidence les différences.

Il ne reste plus qu’à analyser humainement ces différences, et à agir en conséquence …

Ce n’est pas encore au point, mais ça commence à me donner des résultats encourageants.

Je communiquerai ces scripts quand ils seront présentables.

a+