Comment gérez-vous les fichiers .vcproj dans le contrôle de source qui sont modifiés par plusieurs développeurs?

StackOverflow https://stackoverflow.com/questions/166796

  •  03-07-2019
  •  | 
  •  

Question

Nous utilisons Subversion comme système de contrôle de code source et stockons les fichiers de projet VisualStudio (vcproj) dans le système de contrôle de code source, comme d’habitude, à mon avis. Avec Subversion, nous n’utilisons aucune forme de verrouillage de fichier. Par conséquent, si deux développeurs travaillent sur le même projet en même temps et qu’ils ajoutent des fichiers au projet ou modifient les paramètres, le second à valider doit fusionner les modifications.

Comment fusionnez-vous ces changements?

Les fichiers vcproj ne sont que des fichiers texte. Il est donc possible de les éditer à la main, mais ils ne sont pas très faciles à éditer, en particulier par les développeurs débutants.

Les façons dont je peux penser sont

  • Obtenir la dernière version de svn et rajouter manuellement toutes les modifications locales
  • Modifiez le fichier à la main pour résoudre les conflits résultant d'une fusion automatique
  • Implémentez une forme de schéma de verrouillage pour empêcher les modifications simultanées
  • Disposez d'un accord entre les développeurs pour qu'ils n'effectuent pas de modifications simultanées

Nous utilisons actuellement la première option permettant de ré-ajouter manuellement toutes les modifications, mais cela prend beaucoup de temps et je me demandais s'il existait un meilleur moyen.

Avec les fichiers source, la fonction de fusion automatique fonctionne la plupart du temps et nous n’obtenons pas beaucoup de conflits.

Était-ce utile?

La solution

J'ai trouvé que l'option 2 (éditer les fichiers à la main) fonctionne généralement assez bien, tant que vous utilisez un bon outil de diff (j'utilise WinMerge ). Le problème principal que j'ai rencontré est que Visual Studio réorganise parfois le fichier. Toutefois, si vous disposez d'un bon outil de comparaison / fusion, il devrait être en mesure de différencier le contenu modifié du contenu déplacé. Cela peut aider beaucoup.

Autres conseils

C’est un problème difficile à résoudre et je pense qu’une faiblesse de l’architecture Visual Studio Nous l’avons trouvé de ne pas inclure les fichiers proj dans le contrôle de source et d’avoir un script de construction qui gère les paramètres de configuration.

L’alternative était très confuse et nous ne pouvions pas garantir la cohérence des versions ou des environnements entre développeurs. Cela a conduit à un grand nombre de problèmes d'intégration en aval et nous avons finalement pris la mesure draconienne de supprimer les fichiers de projet du contrôle de source.

Les environnements de développement peuvent toujours être mal alignés, mais cela s’est manifesté lorsqu’ils ont essayé de construire eux-mêmes.

Utiliser TFS ici, mais je ne pense pas que cela fasse une différence.
Nous ne verrouillons pas non plus et devons parfois fusionner des fichiers de projet. Je n'ai jamais trouvé cela aussi complexe ni aussi problématique. Nous rencontrons rarement des problèmes qui ne peuvent pas être fusionnés automatiquement, et le processus de fusion manuelle est relativement simple.

Il n'y a qu'un avertissement à cela: vérifiez souvent! Si vous apportez des modifications majeures à la structure du projet et que vous ne les archivez pas immédiatement, ces modifications peuvent commencer à aggraver la complexité des fusions ultérieures. Si j'apporte un changement majeur à la structure d'un projet, je préviens généralement tout le monde. Je leur demanderai à tous de vérifier leur travail actuel, puis de me charger moi-même de la fusion.

J'ai récemment découvert ceci: http://www.codeproject.com/KB/macros /vcproj_formatter.aspx Si vous exécutez cet outil sur un fichier vcproj et sur une version modifiée de celui-ci, vous pouvez les fusionner facilement avec votre outil de fusion de texte préféré. De plus, le résultat est un fichier vcproj plus compact et plus joli.

Les options 1 et 2 ne sont pas mutuellement exclusives - si le développeur est au niveau junior, laissez-le utiliser l'option 1 (récupérez le fichier de projet et refaites les modifications) si cela vous convient mieux. Pour les développeurs plus expérimentés, l'option 2 (fusionner à l'aide d'un outil de fusion) convient parfaitement.

Je pense que c'est une situation qui n'a actuellement pas de solution miracle - parfois, fusionner est une douleur.

Nous utilisons un outil de différenciation ( WinMerge ) pour fusionner les modifications. Les fichiers de projet sont (pour la plupart) des fichiers XML très simples. La clé ici est cependant qu’il ne devrait jamais y avoir de surprises lors de la fusion, car une bonne communication fait partie intégrante du contrôle efficace des sources.

Les modifications simultanées du projet conviennent parfaitement tant que les personnes communiquent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top