version-controlAan de slag met versiebeheer


Opmerkingen

Deze sectie geeft een overzicht van wat versiebeheer is en waarom een ontwikkelaar het misschien wil gebruiken.

Het moet ook grote onderwerpen binnen versiebeheer vermelden en een link naar de gerelateerde onderwerpen bevatten. Aangezien de documentatie voor versiebeheer nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.

Selectie, installatie en configuratie

Selectie van een versiebeheersysteem

Natuurlijk hebben veel organisaties of projecten al een voorkeurs- of geselecteerd versiebeheersysteem als dit het geval is, ga je gewoon door naar de clientinstallatie.

Er zijn een aantal dingen waarmee rekening moet worden gehouden bij het selecteren van het te gebruiken versiebeheersysteem, gegeven niet geordend omdat iedereen verschillende prioriteiten zal hebben :

  • Kosten ranges tot bijna niets om grote sommen valt uiteen in
    • Initiële kosten (niet-recurrente)
      • Eerste aanschafprijs van serversoftware - varieert van nul tot vele duizenden
      • Serverhardware & operationele voorzieningenkosten
    • Kosten voor doorlopend gebruik (server) (herhaald)
      • Jaarlijkse of maandelijkse licentie- en / of onderhoudskosten voor serversoftware - varieert van nul tot vele duizenden
      • Mogelijke serveropslagkosten gehoste services hebben vaak een soort opslagkosten
      • Voor gehoste oplossingen kunt u ook kijken naar CPU-tijdkosten, bandbreedtekosten, enz.
      • Beheer & onderhoudskosten Voor sommige high-end versiebeheersystemen zijn meerdere fulltime beheerders nodig
    • Instellingskosten per ontwikkelaar / stoel alleen bij toevoegen van nieuw teamlid of platform
      • Aankoopprijs van clientsoftware - varieert van nul tot duizenden
      • (Her) training van ontwikkelaars
    • Lopende kosten per ontwikkelaar / stoel
      • Jaarlijkse vernieuwing / onderhoudskosten voor clientsoftware - varieert van nul tot duizenden
      • Eventuele kosten voor klantgebruik
      • Ontwikkelaar re-training na belangrijke updates van de VCS of de procedures
  • Beschikbare platforms (server) - welk platform (en) kan als uw server fungeren als er persoonlijk een vereist is wanneer mij wordt meegedeeld dat de server slechts op één specifiek besturingssysteem draait, soms op een specifiek servicepack of hardwareplatform dat alarm afgaat
  • Beschikbare platforms (client (s)) - welk platform of platforms kunnen uw ontwikkelaars gebruiken? Ben je beperkt tot een enkele klant? Nogmaals, een persoonlijke voorkeur is voor meerdere klanten op meerdere platforms
  • Beschikbaarheid
  • Mogelijk offline gebruik

Installatie van VCS Server

Dit is specifiek voor de hierboven geselecteerde VCS.

Installatie van VCS Client (s)

Dit zal specifiek zijn voor de VCS-clients die overeenkomen met de bovenstaande server, maar waar enkele gemeenschappelijke punten bestaan:

Wat is versiebeheer en waarom zou u het gebruiken?

Een versiebeheersysteem geeft een ontwikkelaar of ontwikkelteam toegang tot in wezen I tijdmachine. Als de broncode, instellingen, enz. Die werden gebruikt om een programma of systeem te bouwen, onder versiebeheer staan, kunnen de ontwikkelaars teruggaan in de tijd om verloren functionaliteit te herstellen, te achterhalen hoe fouten werden geïntroduceerd, gebruikers van oudere versies van de software te ondersteunen die om de een of andere reden nog niet klaar zijn of kunnen upgraden naar de nieuwste versie.

De oudste versies van versiebeheer maakten op een bepaald moment een momentopname van de broncode en bewaarden ze op een veilige plek met een label erop, in sommige gevallen waren dit letterlijk vol ponskaarten.

Momenteel zijn er talloze versiebeheerprogramma's die deze taak vereenvoudigen en die in een aantal verschillende categorieën vallen:

  • Eenvoudige back-upoplossingen niet echt versiebeheer, maar soms als zodanig geclaimd
  • Lokaal wijzigen traking in bestanden zoals in MS-Word
  • Gecentraliseerde versiebeheersystemen vergrendelen zoals SCCS, CVS, Perforce, etc.
  • Toegestane gecentraliseerde versiebeheersystemen zoals SVN
  • Gedistribueerde versiecontrole, zoals git & mercurial

Met alle versiebeheersystemen moet u:

  • Zet de broncode terug naar een bepaald tijdstip == oneindig ongedaan maken
  • Wijzigingen bijhouden die in het systeem zijn gepost
  • Upgrade naar een latere versie van de tool zonder informatie te verliezen

De meeste versiebeheersystemen omvatten ook:

  • Vergelijking van wijzigingen
  • Traceren wie een bepaalde wijziging heeft aangebracht
  • Machtigingen voor wie wijzigingen kan aanbrengen
  • Integratie met bug tracking
  • Off-machine, Off-site of online back-up van al uw toegewijde werk wat u een warm gevoel geeft en in het geval van gedistribueerde VCS-tools heeft elke ontwikkelaar een complete back-up van de hele geschiedenis van het project.

Veel versiebeheertools bevatten of bieden mechanismen voor extra functies zoals:

  • Geef de schuld aan wie voor het laatst welke regel bij welke revisie heeft gewijzigd
  • Maak, distribueer en pas patches toe en verstuur gewoon uw wijzigingen
  • Samenwerking via e-mail
  • Automatische controle van inkomende bestanden / wijzigingen om ervoor te zorgen dat ze aan bepaalde regels voldoen
  • Code / Wijzig beoordeling & / of goedkeuring
  • Automatische invoeging van de versiestatus in bestanden voor insluiting in uw programma
  • Experimentele, functiespecifieke of klantspecifieke versies van de code die meestal branches worden genoemd
  • Werken met tools voor continue integratie en / of continue tests
  • Release- en / of implementatiemechanismen
  • Release Note generatie
  • Tijdelijke opslag van wijzigingen die u nog niet helemaal hebt voltooid, terwijl u overschakelt naar een andere versie / tak om iets anders te doen.
  • Binaire zoekopdracht om de locatie toe te laten van welke versie een specifieke bug introduceerde

Ter afsluiting van dit gedeelte worden de meeste professionele of serieuze code- ontwikkelaars die aan iets anders werken dan de meest triviale code verliefd op versiebeheer zodra ze de gewoonte hebben om het te gebruiken. Zelfs jaren later kunnen zeggen wat er precies is veranderd tussen versie 1.3.1 en versie 1.3.1.1 kan een grote hulp zijn. Mensen zoals auditors zijn dol op goede versiebeheersystemen en -praktijken omdat het traceerbaarheid geeft wanneer het is geïntegreerd met een probleemvolgsysteem - kunnen zeggen: " dit probleem is opgelost door deze wijzigingen die door deze persoon zijn geproduceerd" of " deze wijziging is hierop aangebracht datum om dit probleem aan te pakken "maakt ze een stuk gelukkiger. Het hebben van, mogelijk meerdere, off-machine & / of off-site back-ups van al uw werk betekent dat als uw machine kapot gaat of uw kantoor wordt vernietigd, u het werk in korte volgorde kunt hervatten. Als u werkt op open source projecten van de VCS is waarschijnlijk uw belangrijkste samenwerking en beoordeling hulpmiddel zijn, in een poging om te werken zonder dat de ene krijgt u niet serieus genomen door uw collega's, genomen (GitHub, BitBucket, enz. Zijn gebouwd rond versie controle-instrumenten) . De gebruikers van je laatste programma zullen waarschijnlijk niet merken dat je een versiebeheertool gebruikt, maar ze zullen het geweldig vinden als je kunt zeggen "dat probleem is opgelost in versie XYZ als je een upgrade uitvoert, zou je het probleem moeten zien verdwijnen" .