Svn-afrekenparameters. SVN is een gecentraliseerd versiebeheersysteem. Toegang op afstand via SSH-protocol

Subversion (SVN - Concurrent Versions System) is een gecentraliseerd versiebeheersysteem. Ontworpen als vervanging voor CVS, heeft dezelfde functionaliteit, maar mist veel van zijn nadelen. Zie ook: SVN-boek.

Een SVN-server opzetten

SVN-repository, heel eenvoudig, in dit voorbeeld map, /home/svn/, moet bestaan: # svnadmin create --fs-type fsfs /home/svn/project1 U kunt op de volgende manieren verbinding maken met de repository:

  • bestand://- Directe toegang via het bestandssysteem met behulp van SVN cliënt. Rechten moeten correct zijn ingesteld op het lokale bestandssysteem.
  • svn:// of svn+ssh://- Toegang op afstand tot SVN server (ook volgens het protocol SSH). Vereist rechten in het lokale bestandssysteem, standaardpoort: 2690/tcp.
  • http:// Toegang op afstand via webdav gebruik makend van apache. Voor deze methode zijn geen lokale gebruikers vereist.
Importeer en controleer een bestaand project via het lokale bestandssysteem. Het is niet nodig om naar de werkmap te gaan, u kunt eenvoudigweg het volledige pad opgeven: # svn import /project1/ file:///home/svn/project1/trunk -m "Initial import" # svn checkout file:// /home/svn/project1

Toegang op afstand via SSH-protocol

Toegang op afstand via protocol SSH vereist geen extra instellingen, gewoon vervangen bestand:// op svn+ssh/hostnaam. Bijvoorbeeld: # svn checkout svn+ssh://hostnaam/home/svn/project1 Net als bij lokale toegang moet de gebruiker een account hebben om toegang te krijgen via het protocol SSH naar de server en correct geconfigureerde lees-/schrijfrechten. Deze methode kan geschikt zijn voor kleine groepen gebruikers, de gebruikers in de groep zijn de eigenaren van de repository, bijvoorbeeld: # groupadd subversion # groupmod -A user1 subversion # chown -R root:subversion /home/svn # chmod -R 770 /home/svn

Toegang op afstand via HTTP (apache)

Toegang op afstand via HTTP(HTTPS), een geschikte oplossing voor gebruikersgroepen op afstand. Deze methode maakt gebruik van webserververificatie Apache(geen lokale accounts). Hier is een typische configuratie: LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so # Alleen voor toegangscontrole DAV svn # URL "/svn/foo" wordt toegewezen aan het repositorypad /home/svn/foo SVNParentPath /home/svn AuthType Basic AuthName "Subversion repository" AuthzSVNAccessFile /etc/apache2/svn.acl AuthUserFile /etc/apache2/ svn-passwd Vereist een geldige gebruikersserver Apache moet volledige toegang hebben tot de repository: # chown -R www:www /home/svn Maak een gebruiker aan met htpasswd: # htpasswd -c /etc/svn-passwd gebruiker1 #-C Bestand maken

Toegangscontrole svn.acl voorbeeld

# Standaard leestoegang. "* = " heeft standaard geen toegang[/] * = r project1-developers = joe, jack, jane # Geef schrijfrechten aan ontwikkelaars@project1-ontwikkelaars=rw

Enkele opdrachten voor het beheren van de SVN-repository

Zie ook Subversion Snelle Referentiekaart. Tortoise SVN, een goede Windows-interface.

Importeren

Met de opdracht kunt u een nieuw project met mappen en bestanden in de repository importeren importeren. Hetzelfde commando wordt ook gebruikt om een ​​map met de inhoud ervan toe te voegen aan een reeds bestaand project. # svn hulp bij importeren # Hulp op commando # Voeg een nieuwe map en de inhoud ervan toe aan de src-map van project1.# svn import /project1/newdir http://host.url/svn/project1/trunk/src -m "nieuwe map toevoegen"

Typische SVN-opdrachten

# svn co http://host.url/svn/project1/trunk # Plaats uw bestelling voor de nieuwste versie # Tags en vertakkingen worden gemaakt door middel van kopiëren# svn mkdir http://host.url/svn/project1/tags/ # Maak een tagsmap# svn copy -m "Tag rc1 rel." http://host.url/svn/project1/trunk \ http://host.url/svn/project1/tags/1.0rc1 # svn-status [--verbose] # Controleer de status van bestanden in de werkmap# svn voeg src/bestand.h src/bestand.cpp toe # Voeg twee bestanden toe# svn commit -m "Nieuw klassenbestand toegevoegd" # Wijzigingen per bericht verzenden# svn ls http://host.url/svn/project1/tags/ # Lijst met alle tags# svn verplaats foo.c bar.c # Verplaats (hernoem) bestanden# svn verwijder een_oud_bestand # Verwijder bestanden

Extract

Svn-afrekenen [-diepte ARG] [--ignore-externals] [-r rev] URL PATH

Als het selectievakje is aangevinkt Extern overslaan

Als u een specifieke revisie ophaalt, geeft u deze op na de URL met behulp van de parameter -r.

Update

Svn-info URL_working_copy svn-update [-r rev] PATH

Het bijwerken van meerdere items is momenteel geen atomaire handeling in Subversion. Daarom vindt TortoiseSVN eerst de leidende revisie (HEAD) in de repository en werkt vervolgens alle items bij naar die revisie om te voorkomen dat er een werkkopie met gemengde revisies wordt gemaakt.

Als er slechts één item is geselecteerd om te updaten, of als de geselecteerde items niet allemaal uit dezelfde repository komen, wordt TortoiseSVN eenvoudigweg bijgewerkt naar de belangrijkste revisie.

Er worden hier geen opdrachtregelopties gebruikt. Update naar revisie implementeert ook het update-commando, maar biedt meer functionaliteit.

Update naar revisie

Svn-info URL_working_copy svn-update [-r rev] [-diepte ARG] [--ignore-externals] PATH

De dieptekeuzelijstitems hebben betrekking op het argument -diepte.

Als het selectievakje is aangevinkt Extern overslaan, gebruik dan de --ignore-externals optie.

Repareren

In TortoiseSVN gebruikt het commit-dialoogvenster verschillende Subversion-commando's. De eerste fase is een statuscontrole, waarbij elementen van uw werkkopie worden geïdentificeerd die mogelijk vastgelegd kunnen worden. U kunt door deze lijst bladeren, de bestanden met hun basis vergelijken en de items selecteren die u in de commit wilt opnemen.

Svn-status -v PATH

Als het selectievakje is aangevinkt

Als u bestanden en mappen zonder versiebeheer markeert, worden deze items eerst aan uw werkkopie toegevoegd.

Svn PATH toevoegen...

Wanneer u op OK klikt, begint Subversion met het uitvoeren van de commit. Als u alle bestandsaanvinkvakjes in hun standaardstatus laat staan, gebruikt TortoiseSVN een enkele recursieve commit van de werkkopie. Als je sommige bestanden hebt gedemarkeerd, moet niet-recursieve commit (-N) worden gebruikt en moet elk pad afzonderlijk worden opgegeven op de commit-opdrachtregel.

Svn commit -m "LogMessage" [-diepte ARG] [--no-unlock] PATH...

Het LogMessage vertegenwoordigt hier de inhoud van het invoerveld voor het logbericht. Het kan leeg zijn.

Verschil

Svn diff PAD

Als u de opdracht Diff uit het hoofdcontextmenu gebruikt, vergelijkt u het gewijzigde bestand met de basisrevisie. De uitvoer van de ICS van het bovenstaande commando doet dit ook en produceert uitvoer in de vorm van gecombineerde verschillen. TortoiseSVN maakt hier echter geen gebruik van. TortoiseSVN gebruikt TortoiseMerge (of een diff-programma naar keuze) om de verschillen tussen tekstbestanden visueel weer te geven, er is dus geen direct equivalent van SVN.

Je kunt ook twee willekeurige bestanden vergelijken met TortoiseSVN, ongeacht of ze onder versiebeheer staan. TortoiseSVN voert deze twee bestanden eenvoudig in het gekozen diff-programma in en laat het bepalen waar de verschillen zitten.

Tijdschrift

Svn log -v -r 0:N --limit 100 [--stop-on-copy] PATH of svn log -v -r M:N [--stop-on-copy] PATH

Standaard probeert TortoiseSVN 100 logberichten te extraheren met behulp van de --limit methode. Als installaties gedwongen worden de oude API's te gebruiken, wordt het tweede formulier gebruikt om logberichten voor 100 revisies uit de repository op te halen.

Als het selectievakje is aangevinkt Stop bij kopiëren/hernoemen, gebruik dan de optie --stop-on-copy.

Controleren op wijzigingen

Svn-status -v PATH of svn-status -u -v PATH

Bij de initiële statuscontrole wordt alleen naar uw werkkopie gekeken. Als u op klikt Controleer opslag, dan wordt de repository ook gecontroleerd om te zien welke bestanden door de update zullen worden gewijzigd, en hiervoor is de optie -u vereist.

Als het selectievakje is aangevinkt Bestanden zonder versiebeheer weergeven, zal TortoiseSVN ook bestanden en mappen zonder versiebeheer in de werkkopiehiërarchie weergeven, waarbij de negeerregels worden gerespecteerd. Deze specifieke eigenschap heeft geen direct equivalent in Subversion, omdat het svn-statuscommando niet in mappen zonder versiebeheer terechtkomt.

Revisiegrafiek

De revisiegrafiek is een functie die alleen door TortoiseSVN wordt aangeboden. Er is geen equivalent in de opdrachtregelclient.

Wat TortoiseSVN doet:

Svn-info URL_working_copy svn log -v URL

waar de URL is wortel opslag en parseert vervolgens de geretourneerde gegevens.

Opslagverkenner

Svn-info Werkkopie-URL svn-lijst [-r rev] -v URL

U kunt svn info gebruiken om de root van de repository te definiëren: dit is het hoogste niveau dat wordt weergegeven in de repositorybrowser. Je kunt niet boven dit niveau komen. Deze opdracht retourneert ook alle vergrendelingsinformatie die wordt weergegeven in de Storage Explorer.

Als u de svn-lijst aanroept, wordt de inhoud van de map weergegeven, voor de opgegeven URL en revisie.

Conflicten bewerken

Deze opdracht heeft geen equivalent in ICS. Het roept TortoiseMerge of een externe drieweg-diff/merge-tool aan om de bestanden te bekijken die betrokken zijn bij het conflict en de regels te selecteren die moeten worden gebruikt.

Gevestigd

Svn heeft PATH opgelost

Hernoemen

Svn hernoemen CURRENT_PATH NEW_PATH

Verwijderen

Svn verwijder PATH

Wijzigingen verwijderen

Svn-status -v PATH

De eerste fase is een statuscontrole, waarbij items in uw werkkopie worden geïdentificeerd waarvan mogelijk wijzigingen zijn verwijderd. U kunt de lijst bekijken, bestanden vergelijken met de database en elementen selecteren waarin u wijzigingen wilt verwijderen.

Wanneer u op OK klikt, zal Subversion de wijzigingen verwijderen. Als u alle bestandsselectievlaggen in hun standaardstatus laat staan, gebruikt TortoiseSVN een enkele recursieve (-R) ongedaanmaking van wijzigingen in de werkkopie. Als u bepaalde bestanden uitschakelt, moet elk pad afzonderlijk op de opdrachtregel worden opgegeven om de wijzigingen te verwijderen.

Svn terugzetten [-R] PATH...

Schoonmaak

Svn opschonen PATH

Blok

Svn-status -v PATH

De eerste fase is een statuscontrole, waarbij bestanden in uw werkkopie worden geïdentificeerd die mogelijk zijn vergrendeld. U kunt de items selecteren die u wilt blokkeren.

Svn lock -m "LockMessage" [--force] PATH...

LockMessage is de inhoud van het veld voor het vergrendelen van berichten. Het kan leeg zijn.

Als het selectievakje is aangevinkt Onderschep sluizen, gebruik dan de optie --force.

Deblokkeren

Svn ontgrendel PATH

Tak/Etiket

Svn copy -m "LogMessage" URL URL of svn copy -m "LogMessage" of svn copy -m "LogMessage" PATH URL

Het dialoogvenster Branch/Label voert een kopie naar de opslag uit. Er zijn 3 schakelbare knoppen:

  • Leidende revisie in de repository (HEAD)
  • De opgegeven revisie in de repository
  • Werkkopie

die overeenkomen met de drie bovenstaande opdrachtregelopties.

Deze serie artikelen is gewijd aan de introductie tot het gebruik SVN, vanuit het standpunt van een gewone gebruiker. Het artikel is geschreven om mijn collega's te helpen het snel te leren en te gebruiken SVN. Laten we dus beginnen met de basis.

Invoering

Subversie ( SVN) is een gratis en open source versiebeheersysteem. SVN Hiermee kunt u bestanden en mappen beheren, evenals wijzigingen die in de loop van de tijd daarin zijn aangebracht. SVN biedt de volgende functies:

  1. Controle van directorywijzigingen. SVN maakt gebruik van een "virtueel" bestandssysteem met versiebeheermogelijkheden dat in staat is om in de loop van de tijd wijzigingen in volledige mapstructuren bij te houden
  2. Echte versiegeschiedenis. SVN maakt het mogelijk om zowel bestanden als mappen toe te voegen, te verwijderen, te kopiëren en te hernoemen. Bovendien begint elk nieuw toegevoegd bestand helemaal opnieuw, met behoud van zijn eigen geschiedenis van veranderingen
  3. Atomaire commit van veranderingen. Elke reeks wijzigingen komt óf geheel in de repository terecht, óf komt daar helemaal niet terecht. Die. Als er bij het vastleggen van projectwijzigingen een fout is opgetreden tijdens de bestandsverwerking, worden de wijzigingen voor het hele project niet vastgelegd
  4. Metagegevens met versies. Elk bestand en elke map heeft zijn eigen set eigenschappen, weergegeven door een naam en een waarde. U kunt alle benodigde paren eigenschapsnamen en hun waarden maken en opslaan. Bestandseigenschappen hebben net zoveel versies als hun inhoud
  5. Een uniforme manier van werken met data. SVN detecteert verschillen tussen bestanden met behulp van een speciaal binair algoritme dat gelijk werkt met zowel tekst- als binaire bestanden. Bestanden worden in gecomprimeerde vorm naar de opslag geschreven, ongeacht hun type, en verschillen tussen individuele versies kunnen in beide richtingen via het netwerk worden verzonden
  6. Effectieve takken en tags. SVN creëert vertakkingen en tags door simpelweg een project te kopiëren, met behulp van een mechanisme dat lijkt op harde links in bestandssystemen. Hierdoor nemen de handelingen voor het maken van branches en tags weinig tijd in beslag.


Lijst met basistermen

  1. Opslagplaats(opslagplaats) is een gecentraliseerde opslagplaats van broncodes, werkmateriaal en documentatie. Een willekeurig aantal clients maakt verbinding met de opslag en leest of schrijft deze bestanden
  2. Werkkopie/werkkopie(WC) is een gewone boomstructuur van mappen op een computer die een reeks bestanden bevat om aan een project te werken. Wijzigingen in de werkkopie zijn pas beschikbaar voor andere gebruikers van de repository nadat ze zijn vastgelegd.
  3. Kofferbak— hoofdrichting van de ontwikkeling
  4. Tak(“Branch”) is een ontwikkelingsrichting die onafhankelijk van een andere richting bestaat, maar er wel een gemeenschappelijke geschiedenis mee heeft. Een tak begint altijd als een kopie van iets en beweegt vanaf dat punt verder, waardoor zijn eigen geschiedenis ontstaat
  5. Label(“Label”) is een expliciet geselecteerde versie van de projectbestanden op een bepaald moment, door het aanmaken van een aparte map.
  6. Herziening— het revisienummer van de repository; binnen de repository is het revisienummer een unieke waarde
  7. Uitchecken- een team dat de initiële ontvangst van het project vanuit de repository in WC uitvoert.
  8. Verbinden- een opdracht die wijzigingen aan projectbestanden in WC doorvoert naar de repository.
  9. Update- een opdracht die projectbestanden in WC bijwerkt vanuit de repository
  10. Terugdraaien- een commando dat alle wijzigingen aan projectbestanden in WC ongedaan maakt op basis van het revisienummer van de repository.
  11. Samenvoegen- een commando dat bestanden uit verschillende takken van het project samenvoegt en het samenvoegresultaat in WC plaatst.
  12. Conflict- een situatie die ontstaat bij het doorvoeren van wijzigingen, waarbij dezelfde bestanden door meerdere ontwikkelaars zijn gewijzigd.
  13. Oplossen- een reeks regels voor het oplossen van opkomende conflicten.
  14. Importeren- een commando om snel een boom met bestanden naar de repository te kopiëren.
  15. Exporteren- het commando voor het exporteren van een project verschilt van het afrekenen doordat er geen service-informatie in de projectmappen wordt aangemaakt.
  16. Schakelaar- een commando dat WC naar een andere ontwikkelingstak overschakelt.
  17. Creëren, Toevoegen, Verwijderen, Kopiëren, Beweging, Hernoemen- opdrachten voor het beheren van bestanden en mappen in de repository of WC.

Software

Werken met de repository SVN beoordeeld op basis van software SchildpadSVN

Invoering

De helpfunctie van Subversion ( svn hulp) geeft een samenvatting van de beschikbare opdrachten. Meer gedetailleerde informatie is beschikbaar in het online boek Subversion, beschikbaar op http://svnbook.red-bean.com/en/1.2/index.html. Vooral hoofdstuk 3 is nuttig.

Het volgende is een basisset met opdrachten die alle editors vaak zullen gebruiken. Sommige opdrachten hebben twee vormen: de lange en de korte. Beide staan ​​vermeld in de beschrijving.

svn verschil. Dit is nuttig voor twee verschillende doeleinden. Ten eerste kunnen degenen zonder schrijftoegang tot de BLFS SVN-server deze gebruiken om patches te genereren die naar de BLFS-Dev-mailinglijst kunnen worden verzonden. Om dit te doen, bewerkt u eenvoudigweg de bestanden in uw lokale sandbox en voert u deze uit svn diff > BESTAND.patch vanuit de hoofdmap van uw BLFS-directory. U kunt dit bestand vervolgens als bijlage toevoegen aan een bericht op de BLFS-Dev-mailinglijst, waar iemand met bewerkingsrechten het kan ophalen en op het boek kan toepassen. Het tweede gebruik is om erachter te komen wat er tussen twee revisies is veranderd met behulp van: svn diff -r revisie1:revisie2 BESTANDSNAAM . Bijvoorbeeld: svn diff -r 168:169 index.xml zal een diff uitvoeren die de veranderingen toont tussen revisies 168 en 169 van index.xml .

add – Voegt bestanden, mappen en symbolische links toe en markeert ze voor latere opname in de repository. Eenmaal gemarkeerd, worden ze gedownload en toegevoegd aan de repository wanneer de wijzigingen voor de eerste keer worden vastgelegd. Als u iets hebt toegevoegd, maar vervolgens van gedachten bent veranderd voordat u het vastzette, kunt u de toevoegingsmarkering verwijderen met behulp van het subcommando svn revert.
svn PATH toevoegen...
$svn testmap toevoegen

beschuldigen (lof, annoteren, ann) – Toont de auteur en redacteur regel voor regel voor de opgegeven bestanden of URL's. Elke tekstregel begint met de naam van de auteur (gebruikersnaam) en het revisienummer. Dit geeft aan wie en wanneer deze regel voor het laatst heeft gewijzigd.
svn geef TARGET de schuld[@REV]…
$ svn schuld http://svn.red-bean.com/repos/test/readme.txt

cat – Drukt de inhoud van gespecificeerde bestanden of URL’s af. Gebruik svn list om de inhoud van mappen weer te geven.
svn cat TARGET[@REV]…
$ svn kat http://svn.red-bean.com/repos/test/readme.txt

checkout (co) – Creëert een werkkopie op basis van de gegevens in de repository. Als PATH wordt weggelaten, wordt de basisnaam van de URL gebruikt als de naam voor de werkkopiemap. Als er meerdere URL's worden opgegeven, worden overeenkomstige kopieën gemaakt in de PATH-submap, elk in zijn eigen map, afgeleid van de basisnaam van de URL.
svn-afreken-URL[@REV]…
svn afrekenen svn://svn.ru2web.ru/ru2web/branches/www-01/ /usr/home/vasia/ru2web.ru/app/

opschonen – Reinigt recursief de werkkopie, waarbij blokkeringen worden verwijderd die zijn overgebleven van onvoltooide bewerkingen. Zodra u de foutmelding "werkkopie is vergrendeld" tegenkomt, voert u dit subcommando uit om oude vergrendelingen te verwijderen en de werkkopie in een werkende staat te brengen.

Als om de een of andere reden de uitvoering van de opdracht svn update is mislukt vanwege problemen met het lopende externe diff-programma (ik heb bijvoorbeeld op iets verkeerd geklikt of er is een netwerkfout opgetreden), moet u de parameter –diff3-cmd instellen op sta toe dat de kopie wordt opgeschoond om alle joins te voltooien met behulp van een extern diff-programma. U kunt de configuratiemap ook opgeven met de optie –config-dir, maar pas op dat u deze opties niet te veel gebruikt.

commit (ci) – Stuurt de wijzigingen die u in de werkkopie hebt aangebracht naar de repository om daar te worden opgeslagen. Als u de opties –file of –message niet gebruikt, zal svn een externe editor starten om het commentaar samen te stellen. Lees de beschrijving van de editor-cmd parameter in "Config".
svn commit zal alle recursief gevonden lock-labels naar de opslagfaciliteit sturen en de bronnen ontgrendelen die overeenkomen met deze labels, als de parameter –no-unlock niet gespecificeerd was. Het “zoekgebied” wordt gespecificeerd door PATH op te geven.
svn commit

kopiëren (cp) – Kopieert een bestand naar een werkkopie of naar opslag. SRC en DST kunnen paden zijn binnen de werkkopie of URL's binnen de repository.
svn kopieer SRC DST

delete (del, remove, rm) – Een item verwijderen uit een werkkopie of repository.
svn verwijder PATH...
svn URL verwijderen...

diff (di) – Toont de verschillen tussen de werkkopie en de repository.
$ svn diff http://svn.collab.net/repos/svn/trunk/COMMITTERS@3000 http://svn.collab.net/repos/svn/trunk/COMMITTERS@3500

export – Exporteer een schone mappenstructuur (zonder .svn-mappen).

hulp (?, h) - Hulp.

import – Legt een bestand of boomstructuur zonder versiebeheer vast in de repository.
svn import-URL

info – Geef informatie weer over een lokaal of extern element.
svn-info

list (ls) – Lijst met mappen in de repository.
svnlijst...]
$ svn-lijst http://svn.red-bean.com/repos/test/support

lock – Vergrendel de werkkopie in de repository zodat geen enkele andere gebruiker wijzigingen kan aanbrengen in het opgegeven pad.
svn slot DOEL…
$ svn lock tree.jpg huis.jpg

log – Toon logberichten.
svn-logboek
svn log-URL
$svnlog

samenvoegen – Pas verschillen tussen twee bronnen toe.
$ svn merge -r 250:HEAD http://svn.red-bean.com/repos/branches/my-branch

mkdir – Maak een map in een versiebeheerde repository.
$svn mkdir nieuwe map

move (mv, rename, ren) – Verplaats een bestand of map.
svn verplaats SRC DST

propdel (pdel, pd) – Verwijder eigenschappen uit bestanden, mappen of revisies.
svn propdel PROPNAAM
svn propdel PROPNAME –revprop -r REV

propedit (pedit, pe)
propget (pget, pg)
proplist (plist, pl)
propset (pset, ps)

opgelost – Verwijder “conflicten” uit de werkkopie van bestanden of mappen.
svn heeft PATH opgelost…

terugzetten: alle lokale wijzigingen ongedaan maken.
$ svn zet mijnprj.phtml terug

status (stat, st) – Status van de werkkopie van bestanden of mappen.
$svn-status wc

switch (sw) – Werk de werkkopie bij naar een andere URL.

ontgrendelen – Ontgrendelt de werkkopie.

update (omhoog) – Uw werkkopie bijwerken.