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 ) |
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.
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.
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.
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/ .
Versionskontrolsystemer ( kategori ) | |
---|---|
Kun lokalt | |
Klient-server | |
Uddelt | |
URI- ordninger | |
---|---|
Officiel | |
uofficiel |