Použití SVN

  • Na tvorbě tohoto tutoriálu se podíleli (díky moc všem):
    • Eva Kučírková
    • Tomáš Brukner
    • Petr Švenda
Motivace použití software pro verzování

V předchozích semestrech se odevzdávání řešilo jiným způsobem, co se týče souborů. Tehdy si je člověk ručně kopíroval do odevzdávací složky. Teď už to není potřeba, protože si odevzdávací program soubory stáhne kontrolní program sám, takže vy toto řešit nemusíte.

Pro vás má SVN i další výhody:

  • nemusíte řešit zálohu souborů (soubory jsou mimo váš počítač, v případě fakultního SVN navíc zálohované pravidelně na pásku)
  • nemusíte řešit to, že jste si přepsali něco, co jste nechtěli (zálohují se všechny verze, které chcete a lze se k nim později vrátit)
  • můžete se vrátit zpět na starší verzi (která fungovala, která obsahovala neúmyslně smazané soubory…)
  • soubory máte k dispozici na více místech naráz (školní PC, notebook, domácí PC…)
  • naučíte se používat něco, co se v praxi (a ve velkém) používá

Velké výhody má používání verzovacího software ve skupině:

  • souběžné práce více lidí nad stejnými zdrojáky
  • práce vždy nad aktuálními zdrojáky (nemusíte zjišťovat mailem, kdo má aktuální verzi a kdo dělal poslední změny)
  • možnost práce “offline” (na týden můžete odjet a pracovat bez nahrání aktuálních zdrojáků na server a zároveň neblokujete ostatní vývojáře - později se změněné zdrojové soubory zesynchronizují)
  • vytváření nezávislých vývojových větví

Použití v případě odevzdávání domácích úloh

Jako první budete potřebovat veřejně dostupný SVN repozitář. Pro potřeby odevdávání domácích úloh využijeme SVN server nabízený na FI. Odevzdávací program bude právě v něm v repozitáři se jménem vaslogin_pb071.

Vytvoření fakultního SVN repozitáře
  • Přejděte do nastavení SVN na stránkách Fakultní administrativy.
  • Vytvořte repozitář (v následujícím textu budu předpokládat jméno repozitáře pb071, který budete využívat pro odevzdávání domácích úloh. Obecně pro své jiné soukromé projekty ale můžete samořejmě zvolit jakékoli jiné.
  • Na té samé stránce dole přidejte uživateli kontr právo pro čtení

Gratuluji, máte vytvořený repozitář! 1)

Jak pracovat s SVN

Protože prázdný repozitář je poněkud k ničemu, musíme se naučit s ním pracovat. Následuje diagram, který popisuje pracovní postup:
Následující postup je pro Linux. Přečtěte si jej, ať víte, jak se vůbec s SVN pracuje. Dole jsou pak obrázky, které popisují práci ve Windows. Pracovní postup používání SVN Pro odevzdávání je potřeba vytvořit adresáře hw01 až hw05.
Pokud následující příkazy nepouštíte na Aise, změňte `whoami` za vaše uživatelské jméno na Aise.
Pojďme je tedy vytvořit na Aise:

  • Protože nemáme zatím lokální kopii repozitáře, vytvoříme ji:
    • Následující příkaz přímo pro vaše uživatelské jméno získáte též na výše zmiňované stránce nastavení SVN nahoře.
    • Tento příkaz vytvoří adresář se jménem repozitáře.
svn co --username `whoami` https://svn.fi.muni.cz/fi/`whoami`_pb071
  • Následně vytvoříme adresáře pro jednotlivé úlohy a přidáme je i do repozitáře.
    • Před přidáním je potřeba se přepnout do adresáře s repozitářem (který vytvořil předchozí příkaz).
    • Všimněte si hvězdičky za příkazem svn add. Ta určuje, které soubory či adresáře se přidají. Pokud tedy budete chtít přidat soubory v nějakém adresáři, tak se do něj nejdříve musíte přepnout. (Tj vždy musíte soubory vybrat a přidat ručně.)
    • Výstupem je seznam položek, které se přidaly.
cd `whoami`_pb071
mkdir hw01 hw02 hw03 hw04 hw05
svn add *
  • Teď je potřeba přidat změny i do hlavního repozitáře („commitnout“).
    • Toto dělejte vždy, když provedete nějakou významnější změnu (i třeba jen ve zdrojáku). K těmto změnám se totiž můžete kdykoliv vrátit, takže pokud budete chtít si zobrazit rozdíl mezi verzemi, nebo se vrátit k funkční verzi, tak to půjde.
    • Je vhodné přidat komentáře, abyste snadněji pak nalezli to, co potřebujete.
    • Když spustíte následující příkaz, tak se vám otevře defaultně nastavený textový editor, který vám umožní přidat komentář. Proto napište třeba Pridani odevzdavacich adresaru. a uložte změny. (Pokud byste chtěli udělat commit bez zprávy, nechte soubor prázdný.) Pokud nechcete spouštět editor a předat zprávu rovnou, přidejte argument --message zprava.
svn commit

Nyní můžete normálně pracovat. Až příště budete chtít pracovat s repozitářem, je potřeba nejdřív stáhnout změny do lokální kopie (tento příkaz není potřeba, pokud se mezitím nestaly žádné změny v repozitáři; takže pokud programujete a pravidelně commitujete, tak update volat nemusíte):

svn update

Ako sa vrátiť k predošlej revízii

  • Ak by ste sa potrebovali vrátiť k predchádzajúcej verzii súboru v repozitári, použijete príkaz update (skratkou up) s prepínačom -r [--revision] a argumentom ARG.
    • Tento argument ARG môže byť číslo revízie (revision number) alebo prakticky využiteľný PREV, ktorý nám vráti verziu pred posledným commitnutím.
    • (možnosti pre ARG sú však bohatšie, dá sa zadať napr. aj dátum)
svn up -r ARG (resp. svn update -r ARG)
  • Ak neviete k akej verzii sa vrátiť a robíte si dôkladnú dokumentáciu (pridávanie komentárov pri commitnutí), nápomocný bude príkaz
svn log https://svn.fi.muni.cz/fi/`whoami`_pb071

ktorý Vám vypíše zoznam všetkých revízií aj s komentármi.

  • Za predpokladu väčšieho počtu revízií (stovky, tisíce a pod.) bude efektívne použiť aj napr. prepínač na ohraničenie výpisu (dátumovo, od istej revízie, posledných niekoľko verzií, etc.) - napr.
svn log https://svn.fi.muni.cz/fi/`whoami`_pb071 -l 5

(prepínačom -l [--limit] s argumentom 5 vypíšete posledných 5 revízií)

alebo

svn log https://svn.fi.muni.cz/fi/`whoami`_pb071 -r N:M

(prepínačom -r [--revision] s argumentom N:M vypíšete revízie od revizného čísla N až po číslo revízie M)

  • Ak nepomáha ani takýto log, zachrániť môže príkaz status (stat, st) s prepínačom -v [--verbose], ktorý vypíše kompletné revizné informácie o každej položke vo Vašej lokálnej kópii
svn stat -v

kde vo výpise sú v prvom stĺpci akési kódy, z ktorých najznámejšie sú:

? položka nie je pod verzovacou kontrolou
A položka čaká na pridanie pod správu verzovacieho systému
C položka je v konflikte
D položka čaká na odstránenie spod správy verzovacieho systému
M položka bola modifikovaná

alebo tam nemusí byť uvedený žiaden kód. V druhom stĺpci nájdeme číslo pracovnej revízie položky, v ďalších dvoch zase číslo revízie v ktorej bola položka naposledy zmenená a kto túto zmenu vykonal.

Položka je "out of date"

Pri práci s predošlou revíziou a následným commitnutím tejto lokálnej verzie do repozitára sa možno stretnúť s chybovým hlásením file/item is out of date.
Riešenie tejto situácie je nasledovné:

    - svn up
      - (m) merge
      - riadiť sa pokynmi tak, aby sme spojili súbor ako chceme
      - (r) mark resolved
    - svn commit

Instalace a použití SVN - Windows

  • Stáhněte si a nainstalujte TortoiseSVN klienta. Lze samozřejmě použít i jiné klienty něž TortoiseSVN.
  • Pokud chcete provozovat vlastní SVN server, tak můžete vyzkoušet VisualSVN Server.

Ekvivalent příkazů ve Windows

Dále následují obrázky, jak se jednotlivé věci dělají na Windows. Následující postup používá program TortoiseSVN, který je grafický, takže je pro použití ve Windows ideální ;-), ale můžete používat jakýkoliv jiný.

Vytvoření lokální kopie repozitáře (checkout)

* Po instalaci SVN klienta si vytvořte na vhodném místě adresář (na windows stroji, nikoli na Aise) s názvem např. PB071_spring2010. Do tohoto adresáře si stáhneme pomocí kroků popsaných níže zdrojové kódy (a jakékoli další soubory), které jsou součástí projektu, na kterém budete pracovat.

  • Pravým myšítkem klikneme na adresář PB071_spring2010 a vyberte volbu SVN Checkout…

  • Do kolonky URL of repository vyplňte URL adresu cílového repozitáře, ve kterém je uložen váš projekt. Tuto adresu musíte získat od vlastníka/zakladatele repozitáře. V případě fakultního SVN serveru je to https://svn.fi.muni.cz/fi/login_jménoRepozitáře.
  • Typicky potřebujete stáhnout nejaktuálnější verzi, ponechte tedy volbu HEAD revision. Pomocí Show log lze získat informace o starších verzích a stáhnout jinou něž nejaktuálnější, pokud je to potřeba (typicky ale není). Stiskem OK se spustí stahování souborů. Pokud je přístup k repozitáři projektu autentizovaný, tak musíte vyplnit jméno a heslo pro daný projekt. V případě SourceForge.net může kdokoli číst soubory z repozitáře bez autentizace, zapisovat nové soubory mohou pouze vývojáři projektu po autentizaci.

  • Informativní okno zobrazuje průběh a výsledek stahování včetně čísla revize. Na disku jsou nyní v cílovém adresáři (PB071_spring2010) staženy soubory projektu.

  • Všimněte si zelené ikony na adresáři, která signalizuje, že je jeho obsah synchronizován s obsahem repozitáře a že nebyl od té doby měněn. Zároveň se změnila kontextová nabídka dostupná po pravým tlačítkem myši.
Přidání souborů/adresářů (add)

TODO - svn add

Přidání změn do hlavního repozitáře (commit)

Získání změn do lokálního repozitáře (update)

QR Code
QR Code public:svn (generated for current page)