Premiers pas avec le contrôle de version

Sélection, installation et configuration

Sélection d’un système de contrôle de version

Bien sûr, de nombreuses organisations ou projets ont déjà un système de contrôle de version préféré ou sélectionné si tel est le cas pour vous, passez simplement à l’installation du client.

Il y a un certain nombre de choses à considérer lors de la sélection du système de contrôle de version à utiliser, non ordonnées car tout le monde aura des priorités différentes :

  • Les coûts vont de presque rien à des sommes énormes se décomposent en
  • Coûts initiaux (non récurrents)
    • Server Software Initial Purchase price - ranges from zero to many thousands
    • Server hardware & operating provision costs
  • Frais d’utilisation continus (serveur) (récurrent)
    • Any Server Software annual or monthly licence &/or maintenance fees - ranges from zero to many thousands
    • Possible server storage fees hosted services often have some sort of storage fees
    • For hosted solutions you may also be looking at CPU time charges, bandwidth charges, etc.
    • Administration & Maintenance costs some high end version control systems require multiple full time administrators
    • Per developer/seat setup charges only when adding new team member or platform
      • Client software purchase price - ranges from zero to thousands
      • Developer (re-)training
    • Per developer/seat ongoing charges
      • Client software annual renewal/maintainace fees - ranges from zero to thousands
      • Any client usage fees
      • Developer re-training after any major updates to the VCS or the procedures
  • Plateformes disponibles (Serveur) - quelle(s) plate(s)-forme(s) peuvent agir comme votre serveur si nécessaire personnellement lorsque je suis informé que le serveur ne fonctionne que sur un OS spécifique, parfois sur un spécifique service pack ou plate-forme matérielle, cela sonne l’alarme
  • Plateformes disponibles (Client(s)) - quelle(s) plate-forme(s) vos développeurs peuvent-ils utiliser ? Êtes-vous limité à un seul client ? * Encore une fois, une préférence personnelle est pour plusieurs clients sur plusieurs plates-formes *
  • Disponibilité
  • Utilisation hors ligne possible

Configuration du serveur VCS

Cela sera spécifique au VCS sélectionné ci-dessus.

Configuration des clients VCS

Cela sera spécifique aux clients VCS qui correspondent au serveur ci-dessus mais qui ont des points communs :

Qu’est-ce que le contrôle de version et pourquoi l’utiliser ?

Un système de contrôle de version permet à un développeur ou à une équipe de développement d’accéder essentiellement à I time machine. Si le code source, les paramètres, etc., qui ont été utilisés pour créer un programme ou un système sont sous contrôle de version, les développeurs peuvent remonter dans le temps pour récupérer les fonctionnalités perdues, retracer comment les erreurs ont été introduites, prendre en charge les utilisateurs des anciennes versions du logiciel. qui, pour une raison ou une autre, ne sont pas encore prêts ou capables de passer à la dernière version.

Les instances les plus anciennes de contrôle de version prenaient un instantané du code source à un moment précis et le mettaient dans un endroit sûr avec une étiquette, dans certains cas, il s’agissait littéralement de tirages pleins de cartes perforées.

Il existe actuellement de nombreux programmes de contrôle de version qui simplifient cette tâche et qui se répartissent en plusieurs catégories distinctes :

  • Solutions de sauvegarde simples * pas vraiment de contrôle de version mais parfois revendiquées comme telles *
  • Suivi des modifications locales dans les fichiers * comme dans MS-Word *
  • Verrouillage des systèmes de contrôle de version centralisés tels que SCCS, CVS, Perforce, etc.
  • Systèmes de contrôle de version centralisés permissifs * tels que SVN *
  • Contrôle de version distribué, comme git & mercurial

Tous les systèmes de contrôle de version devraient vous permettre :

  • Rétablir le code source à un instant donné == annulation infinie
  • Suivre les modifications qui ont été publiées sur le système
  • Passez à une version ultérieure de l’outil sans perdre aucune information

La plupart des systèmes de contrôle de version incluent également :

  • Comparaison des changements
  • Trace qui a fait un changement donné
  • Autorisations sur qui peut apporter des modifications
  • Intégration avec le suivi des bogues
  • Sauvegarde hors machine, hors site ou en ligne de tout votre travail engagé * ce qui vous donne une sensation chaleureuse * et dans le cas des outils VCS distribués, chaque développeur dispose d’une sauvegarde complète de l’historique complet du projet.

De nombreux outils de contrôle de version incluent, ou fournissent des mécanismes pour, des fonctionnalités supplémentaires telles que :

  • Blame qui a changé pour la dernière fois quelle ligne à quelle révision
  • Créez, distribuez et appliquez des correctifs * envoyez simplement vos modifications *
  • Collaboration par e-mail
  • Vérification automatique des fichiers/modifications entrants pour s’assurer qu’ils respectent les règles données
  • Examen et/ou approbation du code/changement
  • Insertion automatique de l’état de la version dans les fichiers pour intégration dans votre programme
  • Versions expérimentales, spécifiques à une fonctionnalité ou spécifiques au client du code généralement appelées branches
  • Travailler avec des outils d’intégration continue et/ou de test continu
  • Mécanismes de libération et/ou de déploiement
  • Génération de notes de version
  • Stockage temporaire des modifications que vous n’avez pas tout à fait terminées pendant que vous passez à une autre version/branche pour faire autre chose.
  • Recherche binaire pour permettre l’emplacement de la version qui a introduit un bogue spécifique

Pour conclure cette section, la plupart des développeurs de code professionnels ou sérieux travaillant sur tout sauf le code le plus trivial tombent amoureux du contrôle de version une fois qu’ils ont pris l’habitude de l’utiliser. Être capable de dire, même des années plus tard, ce qui a ** exactement ** changé entre la version 1.3.1 et la version 1.3.1.1 peut être d’une grande aide. Les personnes telles que les auditeurs adorent les bons systèmes et pratiques de contrôle de version car ils offrent une traçabilité lorsqu’ils sont intégrés à un système de suivi des problèmes - être en mesure de dire “ce problème a été résolu par ces modifications produites par cette personne” ou “ce changement a été effectué à cette date pour résoudre ce problème” les rend beaucoup plus heureux. Le fait d’avoir éventuellement plusieurs sauvegardes hors machine et/ou hors site de tout votre travail signifie que si votre machine tombe en panne ou si votre bureau est détruit, vous pouvez reprendre le travail rapidement. Si vous travaillez sur des projets open source, le VCS sera probablement votre principal outil de collaboration et de révision. Si vous essayez de travailler sans, vous ne serez pas pris au sérieux par vos pairs, (github , bitbucket, etc. sont construits autour d’outils de contrôle de version). Les utilisateurs de votre programme final ne remarqueront probablement pas que vous utilisez un outil de contrôle de version, mais ils adoreront quand vous pourrez dire “ce problème a été résolu dans la version X.Y.Z si vous mettez à niveau vers cela, vous devriez voir le le problème disparaît”.