SVN je centralizovaný systém správy verzí. Příkazy TortoiseSVN Svn linuxové příkazy

Tato série článků je věnována úvodu do používání SVN, z pohledu běžného uživatele. Článek byl napsán, aby pomohl mým kolegům rychle se naučit a používat SVN. Začněme tedy základy.

Úvod

Subversion ( SVN) je bezplatný a otevřený systém pro správu verzí. zdrojový kód. SVN umožňuje spravovat soubory a adresáře a také jejich změny v průběhu času. SVN poskytuje následující funkce:

  1. Kontrola změn v adresáři. SVN používá "virtuální" souborový systém s možností verzování, který je schopen sledovat změny v průběhu času v celých adresářových strukturách
  2. Skutečná historie verzí. SVN umožňuje přidávat, mazat, kopírovat a přejmenovávat soubory i adresáře. Navíc každý nově přidaný soubor začíná život od nuly a udržuje si vlastní historii změn
  3. Atomové odevzdání změn. Každá sada změn buď skončí v úložišti úplně, nebo tam neskončí vůbec. Tito. pokud při potvrzování změn projektu dojde při zpracování souboru k chybě, změny v celém projektu nebudou potvrzeny
  4. Metadata s verzemi. Každý soubor a adresář má svou vlastní sadu vlastností, kterou představuje název a hodnota. Můžete vytvořit a uložit všechny potřebné dvojice názvů vlastností a jejich hodnot. Vlastnosti souborů mají stejnou verzi jako jejich obsah
  5. Jednotný způsob práce s daty. SVN zjišťuje rozdíly mezi soubory pomocí speciálního binárního algoritmu, který pracuje stejně s textovými i binárními soubory. Soubory se do úložiště zapisují v komprimované podobě bez ohledu na jejich typ a rozdíly mezi jednotlivými verzemi lze přenášet po síti oběma směry
  6. Efektivní větve a značky. SVN vytváří větve a značky pouhým zkopírováním projektu pomocí mechanismu podobného pevným odkazům v souborových systémech. Díky tomu operace vytváření větví a značek zaberou málo času.


Seznam základních pojmů

  1. Úložiště(úložiště) je centralizované úložiště zdrojových kódů, pracovních materiálů a dokumentace. Libovolný počet klientů se připojí k úložišti a tyto soubory čtou nebo zapisují
  2. Pracovní kopie/pracovní kopie(WC) je běžný strom adresářů v počítači obsahující sadu souborů pro práci na projektu. Změny v pracovní kopii nejsou dostupné ostatním uživatelům úložiště, dokud nejsou potvrzeny.
  3. Kmen— hlavní směr vývoje
  4. Větev(„Pobočka“) je vývojový směr, který existuje nezávisle na jiném směru, ale má s ním společnou historii. Větev vždy začíná jako kopie něčeho a pohybuje se od tohoto bodu a vytváří svou vlastní historii
  5. Štítek(“Label”) je explicitně vybraná verze souborů projektu v určitém okamžiku vytvořením samostatné složky.
  6. Revize— číslo revize úložiště, v rámci úložiště je číslo revize jedinečnou hodnotou
  7. Překontrolovat- příkaz, který se provede prvotní příjem projekt z úložiště na WC.
  8. Spáchat- příkaz, který odesílá změny souborů projektu ve WC do úložiště.
  9. Aktualizace- příkaz, který aktualizuje soubory projektu ve WC z úložiště
  10. Vrátit zpět- příkaz, který zruší všechny změny v souborech projektu ve WC na základě čísla revize úložiště.
  11. Spojit- příkaz, který sloučí soubory z různých větví projektu a umístí výsledek sloučení do WC.
  12. Konflikt- situace, která nastává při provádění změn, kdy stejné soubory změnilo několik vývojářů.
  13. Odhodlání- soubor pravidel pro řešení vznikajících konfliktů.
  14. Import- příkaz pro rychlé zkopírování stromu souborů do úložiště.
  15. Vývozní- příkaz pro export projektu se liší od checkout v tom, že nevytváří servisní informace ve složkách projektu.
  16. Přepínač- příkaz, který přepne WC do jiné vývojové větve.
  17. Vytvořit, Přidat, Vymazat, kopírovat, Hýbat se, Přejmenovat- příkazy pro správu souborů a složek v úložišti nebo WC.

Software

Práce s úložištěm SVN přezkoumáno na základě softwaru TortoiseSVN

Úvod

Funkce nápovědy Subversion ( svn nápověda) poskytuje souhrn dostupných příkazů. Podrobnější informace jsou k dispozici v online knize Subversion, která je k dispozici na adrese http://svnbook.red-bean.com/en/1.2/index.html. Zvláště užitečná je kapitola 3.

Následuje základní sada příkazů, které budou všechny editory často používat. Některé příkazy mají dvě podoby, dlouhou a krátkou. Oba jsou uvedeny v popisu.

svn rozdíl. To je užitečné pro dva různé účely. Za prvé, ti, kteří nemají přístup k zápisu na server BLFS SVN, jej mohou použít ke generování záplat, které se odešlou do e-mailové konference BLFS-Dev. Chcete-li to provést, jednoduše upravte soubory ve vašem místním pískovišti a poté spusťte svn diff > FILE.patch z kořenového adresáře vašeho adresáře BLFS. Tento soubor pak můžete připojit ke zprávě do mailing listu BLFS-Dev, kde si jej může někdo s právy na úpravy vyzvednout a použít v knize. Druhé použití je zjistit, co se změnilo mezi dvěma revizemi pomocí: svn diff -r revize1:revize2 NÁZEV SOUBORU . Například: svn diff -r 168:169 index.xml vypíše rozdíl zobrazující změny mezi revizemi 168 a 169 index.xml.

Subversion (SVN - Concurrent Versions System) je centralizovaný systém správy verzí. Určeno jako náhrada za CVS, má stejnou funkcionalitu, ale postrádá mnoho svých nevýhod. Viz také: Kniha SVN.

Nastavení serveru SVN

Úložiště SVN, zcela jednoduše, v tomto příkladu adresář, /home/svn/, musí existovat: # svnadmin create --fs-type fsfs /home/svn/project1 K úložišti se můžete připojit následujícími způsoby:

  • soubor://- Přímý přístup pomocí souborového systému SVN klienta. V místním souborovém systému musí být správně nastavena oprávnění.
  • svn:// nebo svn+ssh://- Vzdálený přístup k SVN server (také podle protokolu SSH). Vyžaduje práva v místním systému souborů, výchozí port: 2690/tcp.
  • http:// Vzdálený přístup přes webdav použitím apache. Tato metoda nevyžaduje místní uživatele.
Importujte a zkontrolujte existující projekt prostřednictvím místního systému souborů. Není nutné chodit do pracovního adresáře, můžete jednoduše zadat úplnou cestu: # svn import /project1/ file:///home/svn/project1/trunk -m "Počáteční import" # svn checkout file:// /home/svn/project1

Vzdálený přístup přes protokol SSH

Vzdálený přístup přes protokol SSH nevyžaduje žádná další nastavení, stačí vyměnit soubor:// na svn+ssh/název hostitele. Například: # svn checkout svn+ssh://hostname/home/svn/project1 Stejně jako v případě místního přístupu musí mít uživatel účet pro přístup přes protokol SSH na server a správně nakonfigurovaná oprávnění pro čtení/zápis. Tato metoda může být vhodná pro malé skupiny uživatelů, uživatelé ve skupině jsou vlastníky úložiště, například: # groupadd subversion # groupmod -A user1 subversion # chown -R root:subversion /home/svn # chmod -R 770 /domů/svn

Vzdálený přístup přes HTTP (apache)

Vzdálený přístup přes HTTP(HTTPS), vhodné řešení pro vzdálené skupiny uživatelů. Tato metoda využívá autentizaci webového serveru Apache(nikoli místní účty). Zde je typická konfigurace: 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 # Pouze pro kontrolu přístupu DAV svn # URL "/svn/foo" bude mapováno na cestu k úložišti /home/svn/foo SVNParentPath /home/svn AuthType Basic AuthName "Subversion repository" AuthzSVNAccessFile /etc/apache2/svn.aclache2/AuthU svn- passwd Vyžadovat server platného uživatele Apache musí mít úplný přístup k úložišti: # chown -R www:www /home/svn Vytvořte uživatele pomocí htpasswd: # htpasswd -c /etc/svn-passwd uživatel1 #-C Vytvořit soubor

Příklad řízení přístupu svn.acl

# Výchozí přístup pro čtení. "* =" nebude mít ve výchozím nastavení přístup[/] * = r project1-developers = joe, jack, jane # Dejte vývojářům oprávnění k zápisu@project1-developers=rw

Některé příkazy pro správu úložiště SVN

Viz také Stručná referenční karta Subversion. Tortoise SVN, dobré rozhraní Windows.

Import

Importovat do úložiště nový projekt obsahující adresáře a soubory, můžete použít příkaz import. Stejný příkaz se také používá k přidání adresáře s jeho obsahem do již existujícího projektu. # svn pomůže importovat # Nápověda na příkaz # Přidejte nový adresář a jeho obsah do adresáře src projektu project1.# svn import /project1/newdir http://host.url/svn/project1/trunk/src -m "add newdir"

Typické příkazy SVN

# svn co http://host.url/svn/project1/trunk # Objednejte si nejnovější verzi # Tagy a větve se vytvářejí pomocí kopírování# svn mkdir http://host.url/svn/project1/tags/ # Vytvořte adresář značek# svn copy -m "Značka rc1 rel." http://host.url/svn/project1/trunk \ http://host.url/svn/project1/tags/1.0rc1 # svn status [--verbose] # Zkontrolujte stav souborů v pracovním adresáři# svn add src/file.h src/file.cpp # Přidejte dva soubory# svn commit -m "Přidán nový soubor třídy" # Odešlete změny zprávou# svn ls http://host.url/svn/project1/tags/ # Seznam všech značek# svn move foo.c bar.c # Přesunout (přejmenovat) soubory# svn delete some_old_file # Smazat soubory

Výpis

Svn pokladna [-depth ARG] [--ignore-externals] [-r rev] CESTA URL

Pokud je zaškrtávací políčko zaškrtnuto Přeskočit externí

Pokud načítáte konkrétní revizi, zadejte ji za URL pomocí parametru -r.

Aktualizace

Svn info URL_working_copy svn update [-r rev] PATH

Aktualizace více položek není v současné době v Subversion atomická operace. TortoiseSVN proto nejprve najde úvodní revizi (HEAD) v úložišti a poté aktualizuje všechny položky na tuto revizi, aby se zabránilo vytvoření pracovní kopie se smíšenými revizemi.

Pokud je k aktualizaci vybrána pouze jedna položka nebo vybrané položky nejsou všechny ze stejného úložiště, TortoiseSVN se jednoduše aktualizuje na hlavní revizi.

Nejsou zde použity žádné možnosti příkazového řádku. Aktualizace na revizi také implementuje příkaz update, ale nabízí více funkcí.

Aktualizace na revizi

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

Položky pole se seznamem hloubky souvisí s argumentem -depth.

Pokud je zaškrtávací políčko zaškrtnuto Přeskočit externí, použijte volbu --ignore-externals.

Opravit

V TortoiseSVN používá dialogové okno odevzdání několik příkazů Subversion. První fází je kontrola stavu, která identifikuje prvky vaší pracovní kopie, které by mohly být potenciálně potvrzeny. Tento seznam můžete procházet, porovnávat soubory s jejich základem a vybírat položky, které chcete zahrnout do odevzdání.

Stav Svn -v PATH

Pokud je zaškrtávací políčko zaškrtnuto

Pokud označíte nějaké soubory a složky bez verze, budou tyto položky přidány do vaší pracovní kopie jako první.

Svn přidat PATH...

Když kliknete na OK, Subversion začne provádět odevzdání. Pokud necháte všechna zaškrtávací políčka souborů v jejich výchozím stavu, TortoiseSVN použije jediné rekurzivní potvrzení pracovní kopie. Pokud jste zrušili označení některých souborů, musíte použít nerekurzivní odevzdání (-N) a každou cestu je nutné zadat samostatně na příkazovém řádku odevzdání.

Svn commit -m "Zpráva protokolu" [-depth ARG] [--no-unlock] CESTA...

LogMessage zde představuje obsah vstupního pole zprávy protokolu. Může být prázdný.

Rozdíl

Svn rozdíl PATH

Pokud použijete příkaz Rozdíl z hlavní kontextové nabídky, porovnáte upravený soubor s jeho základní revizí. Výstup z ICS výše uvedeného příkazu to také dělá a vytváří výstup ve formátu kombinovaných rozdílů. TortoiseSVN však toto nepoužívá. TortoiseSVN používá TortoiseMerge (nebo diff program dle vašeho výběru) k vizuálnímu zobrazení rozdílů mezi textovými soubory, takže neexistuje žádný přímý ekvivalent k SVN.

Můžete také porovnat libovolné dva soubory pomocí TortoiseSVN, bez ohledu na to, zda jsou pod kontrolou verzí. TortoiseSVN jednoduše vloží tyto dva soubory do zvoleného programu pro porovnání a nechá jej určit, kde jsou rozdíly.

Časopis

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

Ve výchozím nastavení se TortoiseSVN pokouší extrahovat 100 zpráv protokolu pomocí metody --limit. Pokud jsou instalace nuceny používat stará rozhraní API, pak se druhý formulář použije k načtení zpráv protokolu pro 100 revizí z úložiště.

Pokud je zaškrtávací políčko zaškrtnuto Zastavit u kopírování/přejmenování, použijte volbu --stop-on-copy.

Kontrola změn

Svn status -v PATH nebo svn status -u -v PATH

Počáteční kontrola stavu se dívá pouze na vaši pracovní kopii. Pokud kliknete na Zkontrolujte úložiště, pak se také zkontroluje úložiště, aby se zjistilo, které soubory se aktualizací změní, a to vyžaduje volbu -u.

Pokud je zaškrtávací políčko zaškrtnuto Zobrazit soubory bez verze, TortoiseSVN také zobrazí soubory a složky bez verze v hierarchii pracovních kopií, při respektování pravidel ignorování. Tato konkrétní vlastnost nemá v Subversion žádný přímý ekvivalent, protože příkaz svn status nejde do složek bez verze.

Graf revize

Graf revizí je funkce poskytovaná pouze TortoiseSVN. V klientovi příkazového řádku neexistuje žádný ekvivalent.

Co TortoiseSVN dělá:

Svn info URL_working_copy svn log -v URL

kde je URL vykořenitúložiště a poté analyzuje vrácená data.

Průzkumník úložiště

Svn info Working_copy URL svn list [-r rev] -v URL

Svn info můžete použít k definování kořenového adresáře úložiště: toto je nejvyšší úroveň zobrazená v prohlížeči úložiště. Nad tuto úroveň se nemůžete posunout. Tento příkaz také vrátí všechny informace o zámku zobrazené v Průzkumníku úložiště.

Volání svn list zobrazí obsah složky pro zadanou URL a revizi.

Upravit konflikty

Tento příkaz nemá v ICS ekvivalent. Volá TortoiseMerge nebo externí třícestný nástroj pro porovnání/sloučení, aby zobrazil soubory zapojené do konfliktu a vybral řádky, které by měly být použity.

Usazeno

Svn vyřešen PATH

Přejmenovat

Svn přejmenovat CURRENT_PATH NEW_PATH

Vymazat

Svn odstranit PATH

Odebrat změny

Stav Svn -v PATH

První fází je kontrola stavu, která identifikuje položky ve vaší pracovní kopii, z nichž by mohly být odstraněny změny. Můžete zobrazit seznam, porovnat soubory s databází a vybrat prvky, ve kterých chcete odstranit změny.

Když kliknete na OK, Subversion odstraní změny. Pokud ponecháte všechny příznaky výběru souborů v jejich výchozím stavu, TortoiseSVN použije jediné rekurzivní (-R) vrácení změn v pracovní kopii. Pokud zrušíte zaškrtnutí některých souborů, musí být každá cesta specifikována samostatně na příkazovém řádku, aby se změny odstranily.

Svn vrátit [-R] PATH...

Čištění

Čištění svn PATH

Blok

Stav Svn -v PATH

První fází je kontrola stavu, která identifikuje soubory ve vaší pracovní kopii, které by mohly být potenciálně uzamčeny. Můžete vybrat položky, které chcete zablokovat.

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

LockMessage je obsah pole zprávy zámku. Může být prázdný.

Pokud je zaškrtávací políčko zaškrtnuto Záchytné zámky, použijte volbu --force.

Odblokování

Svn odemknout PATH

Pobočka/štítek

Svn copy -m "Zpráva protokolu" URL URL nebo svn kopie -m "Zpráva protokolu" nebo svn kopie -m "Zpráva protokolu" PATH URL

Dialog Větev/štítek provede kopii do úložiště. K dispozici jsou 3 přepínatelná tlačítka:

  • Vedoucí revize v úložišti (HEAD)
  • Zadaná revize v úložišti
  • Pracovní kopie

které odpovídají třem výše uvedeným možnostem příkazového řádku.

add – Přidá soubory, adresáře a symbolické odkazy a označí je pro pozdější zařazení do úložiště. Jakmile jsou označeny, jsou staženy a přidány do úložiště při prvním potvrzení změn. Pokud jste něco přidali, ale poté jste si to rozmysleli, než to připnete, můžete značku přidání odstranit pomocí dílčího příkazu svn revert.
svn přidat PATH...
$svn přidat testdir

obviňovat (chválit, komentovat, ann) – Zobrazuje autora a editora řádek po řádku pro zadané soubory nebo adresy URL. Každý řádek textu začíná jménem autora (uživatelským jménem) a číslem revize. Označuje, kdo a kdy naposledy upravil tento řádek.
svn obviňovat TARGET[@REV]…
$ svn obviňovat http://svn.red-bean.com/repos/test/readme.txt

cat – Vytiskne obsah zadaných souborů nebo adres URL. Pro výpis obsahu adresářů použijte svn list.
svn cat TARGET[@REV]…
$ svn cat http://svn.red-bean.com/repos/test/readme.txt

checkout (co) – Vytvoří pracovní kopii na základě dat v úložišti. Pokud je PATH vynechán, bude základní název adresy URL použit jako název adresáře pracovní kopie. Pokud je zadáno více adres URL, budou v podadresáři PATH vytvořeny odpovídající kopie, každá ve svém vlastním adresáři odvozeném ze základního názvu adresy URL.
svn adresa URL pokladny[@REV]…
svn pokladna svn://svn.ru2web.ru/ru2web/branches/www-01/ /usr/home/vasia/ru2web.ru/app/

cleanup – Rekurzivně čistí pracovní kopii a odstraňuje zámky zbývající z nedokončených operací. Jakmile narazíte na chybu „pracovní kopie je uzamčena“, spusťte tento dílčí příkaz k odstranění starých zámků a uvedení pracovní kopie do funkčního stavu.

Pokud se z nějakého důvodu operace příkazu svn update nezdařila kvůli problémům se spuštěným externím programem diff (například jsem v něm kliknul na něco špatně nebo došlo k selhání sítě), musíte nastavit parametr –diff3-cmd na umožnit vyčištění kopie, aby se dokončila všechna spojení pomocí externího programu pro porovnání. Konfigurační adresář můžete zadat také pomocí volby –config-dir, ale dejte pozor, abyste tyto volby nepoužili.

commit (ci) – Odešle změny, které jste provedli v pracovní kopii, do úložiště, kde se uloží. Pokud nepoužijete volbu –file nebo –message, svn spustí externí editor, který vytvoří komentář. Přečtěte si popis parametru editor-cmd v "Config".
svn commit odešle všechny rekurzivně nalezené štítky zámků do úložiště a odemkne zdroje odpovídající těmto štítkům, pokud nebyl zadán parametr –no-unlock. „Oblast vyhledávání“ je specifikována zadáním PATH.
svn commit

copy (cp) – Zkopíruje soubor do pracovní kopie nebo do úložiště. SRC a DST mohou být cesty uvnitř pracovní kopie nebo adresy URL v úložišti.
svn kopie SRC DST

delete (del, remove, rm) – Odstranění položky z pracovní kopie nebo úložiště.
svn odstranit PATH...
svn odstranit URL...

diff (di) – Ukazuje rozdíly mezi pracovní kopií a úložištěm.
$ svn rozdíl http://svn.collab.net/repos/svn/trunk/COMMITTERS@3000 http://svn.collab.net/repos/svn/trunk/COMMITTERS@3500

export – Exportuje čistý adresářový strom (bez složek .svn).

pomoc (?, h) – Pomoc.

import – Odešle soubor nebo strom bez verze do úložiště.
svn import URL

info – Zobrazí informace o místním nebo vzdáleném prvku.
svn info

list (ls) – Seznam adresářů v úložišti.
svnlist...]
$ svn seznam http://svn.red-bean.com/repos/test/support

lock – Uzamčení pracovní kopie v úložišti, aby žádný jiný uživatel nemohl provádět změny v dané cestě.
svn lock TARGET…
$ svn zámek strom.jpg dům.jpg

protokol – zobrazí zprávy protokolu.
svnlog
URL protokolu svn
$svnlog

sloučit – Použití rozdílů mezi dvěma zdroji.
$ svn merge -r 250:HEAD http://svn.red-bean.com/repos/branches/my-branch

mkdir – Vytvořte adresář v úložišti s řízenou verzí.
$svn mkdir newdir

move (mv, rename, ren) – Přesune soubor nebo adresář.
svn move SRC DST

propdel (pdel, pd) – Odebere vlastnosti ze souborů, adresářů nebo revizí.
svn propdel PROPNAME
svn propdel PROPNAME –revprop -r REV

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

vyřešeno – Odstraňte „konflikty“ z pracovní kopie souborů nebo adresářů.
svn vyřešen PATH…

vrátit – vrátí všechny místní změny.
$ svn vrátit zpět myprj.phtml

status (stat, st) – Stav pracovní kopie souborů nebo adresářů.
$svn status wc

switch (sw) – Aktualizujte pracovní kopii na jinou URL.

odemknout – Odemkne pracovní kopii.

update (up) – Aktualizace vaší pracovní kopie.

Pokud najdete chybu, vyberte část textu a stiskněte Ctrl+Enter.