CVS

CVS
Type centraliseret versionskontrolsystem [d]
Udvikler CVS-teamet [d]
Skrevet i C [4]
Operativ system Unix-lignende operativsystem
Første udgave 19. november 1990 [1]
nyeste version 1.11.23 [2] (8. maj 2008 ) ( 08-05-2008 )
beta version
Licens GNU General Public License, version 1.0 eller nyere [d] [5]
Internet side nongnu.org/cvs/ ​(  engelsk)

CVS ( eng.  Concurrent Versions System  - simultaneous versions system ) er et centraliseret versionskontrolsystem, der var populært i 1990'erne - begyndelsen af ​​2000'erne. Holder en historik over ændringer af et bestemt sæt filer, normalt softwarekildekode , og gør det nemmere for en gruppe mennesker at arbejde sammen om det samme projekt. Distribueret under betingelserne i GNU GPL .

Siden slutningen af ​​2000'erne er den aktive udvikling af systemet afbrudt (den seneste version blev udgivet i maj 2008 ), der foretages kun mindre rettelser i kildekoden [6] . Anses for forældet [7] [8] [9] system.

Grundlæggende begreber

CVS bruger en klient-server- arkitektur . Typisk er klienten og serveren forbundet over et lokalt netværk eller over internettet , men kan også køre på den samme maskine, hvis du vil beholde et lokalt projekts versionshistorik. Serversoftware kører normalt på Unix (selvom der er en CVS-server til Windows NT ), mens CVS-klienter er tilgængelige på alle populære operativsystemer .

Serveren gemmer de aktuelle versioner af projektet og historikken for ændringer i et særligt arkiv ( repository ), og klienten opretter forbindelse til det for at få den version, den har brug for, eller skrive en ny. Efter at have modtaget den påkrævede version fra serveren ( check-out ), opretter klienten en lokal kopi af projektet (eller en del af det) - den såkaldte arbejdskopi. Efter at de nødvendige ændringer er foretaget i filerne i arbejdskopien, sendes de til serveren ( check-in ).

Flere kunder kan arbejde på kopier af et projekt på samme tid. Når de indsender resultaterne, forsøger serveren at flette deres ændringer sammen i lageret. Hvis dette mislykkes, såsom når to klienter har ændret de samme linjer i en bestemt fil, vil serveren ikke acceptere ændringerne fra sidste check-in, og vil rapportere konflikten til klienten, som skal rettes manuelt. Hvis indtjekningen lykkes, øges versionsnumrene for alle berørte filer automatisk, og serveren skriver kommentaren, datoen og brugernavnet til sin log.

Kunder kan også sammenligne forskellige versioner af filer, anmode om en komplet ændringshistorik eller få et historisk billede af et projekt efter en bestemt dato eller versionsnummer. Mange open source- projekter tillader anonym læseadgang, som først blev introduceret i OpenBSD . Dette betyder, at klienter kan forespørge og sammenligne filversioner uden en adgangskode; kun indtjekningsoperationer, der ændrer data i depotet, kræver en adgangskode.

Klienter kan også bruge opdateringskommandoen til at synkronisere den lokale kopi af projektet med information på serveren , hvilket undgår at gendownloade hele projektet.

CVS kan også indeholde forskellige grene af et projekt. For eksempel kan en stabil version af et projekt være på en enkelt gren , der kun  indeholder fejlrettelser, mens aktiv udvikling kan være på en parallel gren, der inkluderer væsentlige forbedringer eller ændringer siden udgivelsen af ​​den stabile version.

CVS bruger delta-komprimering til effektivt at gemme forskellige versioner af den samme fil.

Grundlæggende begreber

Projekter i CVS gemmes som moduler, et modul er et sæt projektfiler. En CVS-server kan betjene flere moduler; alle moduler er gemt i depotet. En lokal kopi af et modul opnået med en CVS-klient kaldes en arbejdskopi.

check-out operation  - udtrækning af hele modulet fra CVS og oprettelse af en arbejdskopi; check-in  - begå lokale ændringer til depotet. Opdateringsoperationen opdaterer  det lokale projekt fra CVS.

Branch ( engelsk  branch ) - en uafhængig retning af projektmodifikation, som kan indeholde en række på hinanden følgende versioner; en gren kan udvikle sig parallelt med andre grene; hovedgrenen ( engelsk  hovedstamme eller HEAD ) er der altid.

Revision ( revision ) er en af ​​versionerne af en enkelt fil.

En af versionerne af hele produktet er en "udgivelse" ( udgivelse , udtrykket "version" bruges slet ikke i CVS). Et særligt tag ( tag ) er knyttet til versionen , et tag kan også tildeles en separat fil, men dette gøres sjældent, normalt er en samling filer af visse revisioner (versioner) markeret med et tag.

Historie og status

CVS er en udvikling af et tidligere versionskontrolsystem kaldet Revision Control System (RCS), som stadig bruges til at arbejde med individuelle filer, men ikke hele projekter. Dick Grun gav [10] en kort historisk baggrund om CVS på sin side:

CVS blev oprettet for at kunne arbejde med to af mine elever på C compiler ACK (Amsterdam Compiler Kit). Vi tre havde en næsten uforenelig tidsplan (en elev havde et fast job, den anden dukkede op uregelmæssigt, og jeg kunne kun arbejde på projektet om aftenen). Deres projekt varede fra juli 1984 til august 1985 . CVS blev oprindeligt kaldt cmt , på grund af det faktum, at det tillod os at begå versioner uafhængigt (fra det engelske commit  - fix, commit).

Koden så første gang dagens lys på mod.sources-konferencen den 23. juni 1986 .

Koden, der til sidst blev den nuværende version af CVS, blev startet med Brian Berliner i april 1989, med efterfølgende tilføjelser fra Jeff Polk og andre. Brian Berliner skrev [11] et dokument, der beskriver de forbedringer, CVS erhvervede under dets interne brug hos Prisma, en tredjepartsudvikler af SunOS -kernen , hvorefter Brian frigav det til offentligheden under GPL .

Projektet er støttet af en gruppe frivillige. Det er bemærkelsesværdigt, at versionen af ​​CVS til Microsoft Windows , opdelt i et separat CVSNT- projekt , aktivt udvider systemets muligheder, endda porterer ændringer tilbage til Unix under CVSNT-navnet.

Relationen mellem CVS og GNU-projektet kan være tvetydig: på én side distribuerer GNU-webstedet programmet som en "GNU-pakke", og på en anden er CVS'et opført under "et andet GPL-projekt". På FTP-serveren er programmet placeret i mappen /non-gnu/ .

Ulemper

Noter

  1. Indhold af /ccvs/NEWS
  2. NYHEDER 1.11.23 . Arkiveret fra originalen den 27. december 2021. Hentet 14. april 2022.
  3. Pris D.R. Concurrent Versions System - Nyheder CVS Feature Version 1.12.13 udgivet!  (engelsk) - 2005.
  4. cvs Open Source-projektet på Open Hub: Languages-side - 2006.
  5. https://cvs.savannah.nongnu.org/viewvc/cvs/ccvs/README?view=markup
  6. [https://web.archive.org/web/20181116130105/http://cvs.savannah.gnu.org/viewvc/cvs/ccvs/ChangeLog Arkiveret 16. november 2018 på Wayback Machine [kilder] Log af / cvs/ccvs/ChangeLog]
  7. CVS er ude, Subversion er i Arkiveret 25. marts 2010.  (engelsk) Red Hat magazine, august 2005
  8. CVS - sourceforge Arkiveret 10. juni 2010.
  9. CVS-versionskontrolsystem . Hentet 25. juli 2009. Arkiveret fra originalen 8. juli 2010.
  10. Samtidige versioner System CVS . Hentet 12. januar 2005. Arkiveret fra originalen 7. december 2006.
  11. CiteSeerX - CVS II: Parallelisering af softwareudvikling . Hentet 12. januar 2005. Arkiveret fra originalen 5. juni 2007.
  12. CVS-evaluering i Mercurial-bogen Arkiveret 7. september 2013 på Wayback Machine .

Links