[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
subversion [2007/09/28 02:45]
bojar zkraslil markup
subversion [2013/04/02 09:56] (current)
ufal
Line 1: Line 1:
-====== Subversion ======+====== Subversion & Git ======
  
 Subversion (''svn'') je nástroj pro archivaci (a v případě potřeby obnovu) starších verzí softwaru, který vyvíjíte. Pokud se vás v jednom projektu hrabe víc, Subversion vám pomůže ohlídat, abyste si vzájemně neničili práci. Subversion (''svn'') je nástroj pro archivaci (a v případě potřeby obnovu) starších verzí softwaru, který vyvíjíte. Pokud se vás v jednom projektu hrabe víc, Subversion vám pomůže ohlídat, abyste si vzájemně neničili práci.
  
-Pro projekty ÚFALu, na nichž chcete spolupracovat i s lidmi zvenkupoužijte vyhrazený stroj [[internal:svn.ms.mff.cuni.cz]].+Subversion vám poskytuje různé možnosti, kde založit tzv. **repozitář** (tedy archív verzí vašeho projektu), a různé možnosti, jak k němu přistupovat. **Lokální repozitář** vám stačí, používáte-li Subversion pro archivaci projektu, na kterém pracujete pouze vy, případně i další členové ÚFALu, ale všem vám stačí přistupovat k repozitáři z terminálu či skriptů běžících na linuxových počítačích na ÚFALu. Lokální repozitář je prostě podstrom adresářové struktury na síťových discích (konkrétně v ''/net/work/public/SVN'', ale můžete si ho vytvořit jinde). Když chcete lokálním repozitářem pracovatmusíte mít na dané místo souborový přístup. **Serverový repozitář** využijete, jestliže potřebujete s repozitářem pracovat z počítače, ze kterého není přímo vidět disk, na kterém je repozitář uložen (napřz Windows, z domova) nebo pokud s vámi na projektu spolupracují lidé vně ÚFALu, kteří ani úplný přístup do naší sítě nemajíU serverového repozitáře je potřeba nakonfigurovat metody, jakými se k němu bude po síti přistupovat, a také přístupová práva uživatelůOd určité doby (2007?) už prakticky všechny nové repozitáře na ÚFALu vznikají jako serverovéZakládání lokálních repozitářů je možná i nadále technicky možné, ale není nijak zvlášť doporučeno ani podporováno.
  
 +Pro projekty ÚFALu, na nichž chcete spolupracovat i s lidmi zvenku, (serverové repozitáře) použijte vyhrazený stroj [[internal:svn.ms.mff.cuni.cz]]. Návod na konfiguraci najdete níže v kapitole [[#Subversion Server]]. Návod na vytvoření jednoduchého lokálního repozitáře najdete níže v kapitole [[#Lokální Subversion]].
  
-===== Nové Milanovo shrnutí (26.9.2007) =====+===== Subversion/Git Server (po přestavbě 08/2011) =====
  
-Mili kolegove,  +Server ''svn.ms.mff.cuni.cz''. Celé řešení běží na systému Debian 6 Squeeze.
- po diskusi s Ondrou Bojarem a drobnem vylepseni naseho serveru svn jeste jednou sepisuji co je potreba si projit a nastavit pri konfiguraci noveho projektu:+
  
-  - nalogujete se na svn.ufal.ms.mff.cuni.cz (= svn.ms.mff.cuni.cz) (ucty byly preneseny z ufal.mff.cuni.cz) +Co bylo zachováno stejné jako před přestavbou: 
-  pro vytvoreni projektu pouzijete skript (kteremu date jeste jmeno projektu):<code>/home/howto/create_new_project.sh <jmeno_projektu></code> +  * uživatelské účty a hesla pro ssh přístup do systému 
-  - pak se rozhodnete kterymi cestami budete s projektem pracovat - nejlepsi je asi nakonfigurovat vsechny (viz. nize) - tedy svnwebovy pristup do svn Trac (take webovy). Vsude jsou prednastaveny nejake zakladni ucty, ale nejlepsi je tyto veci upravit podle vlastnich potreb. Napriklad nemusite chtit, aby ufal/maly... mel rw prava ve vasem projektu, jak tomu defaultne je!+  * uživatelské účtyzavedené pro https autentizaci 
 +  * účty systém práv pro přístup přes svnserve a websvn 
 +  * veškerá data systému Trac a stav repozitářů
  
-==== Konfigurace webového rozhraní SVN ====+Co je změněno: 
 +  * soubor s účty a hesly pro https autentizaci je nyní: ''/home/DATA/repository_passwords'' 
 +  * soubor pro nastavení práv v&nbsp;svn repozitářích je: ''/home/DATA/svnauthz.conf'' 
 +  * staré cesty jsou nalinkovány na novou strukturu: 
 +    * ''/home/DATA/svn'' (repozitáře svn) 
 +    * ''/home/DATA/git'' (repozitáře git) 
 +    * ''/home/DATA/trac'' (data Tracu pro obě verze repozitářů)
  
-Toto rozhraní je užíváno SVN klienty, kteří dostanou repository udanou ve tvaru ''http(s)://svn.ms.mff.cuni.cz/svn/PROJEKT'', tj. např.: +Co je nové: 
-    svn --username ufal checkout https://svn.ms.mff.cuni.cz/$PROJEKT+  * podpora založení repozitáře git 
 +  * podpora propojení systému Trac git repozitářem 
 +  * přístup ke git repozitáři přes https a ssh
  
 +===== Založení nového projektu =====
  
-Co se tyce svn weboveho rozhrani, tak ten modul ma nasledujici konfiguraky (viz. /etc/httpd/conf.d/subversion.conf)+Podívejme se, co je potřeba si projít a nastavit při konfiguraci nového projektu svn/git
-  * uzivatele: ''AuthUserFile /home/svn/users/passwords'' (Ondrej tomu laicky rika .htaccess) +  * přihlásíte se přes ssh na ''svn.ms.mff.cuni.cz'' 
-  * jejich opravneni: ''AuthzSVNAccessFile /home/svn/permissions/svnauthz.conf'' (zde se rika, zda RO nebo RW) +  * rozhodnete se, zda budete vytvářet repozitář SVN, nebo GIT 
-O zbytek se stara webovy modul subversion - ja mu jen rikam tohle.+  * pro vytvoření projektu použijete skript (kterému dáte ještě jméno projektu):
  
-Konfiguraky jsou globalni, tj. pro vsechny projekty spolecne.+     SVN: /home/howto/Setup_svn-trac_repository.sh <jmeno_projektu>
  
-==== Konfigurace protokolu SVN ====+     GIT: /home/howto/Setup_git-trac_repository.sh <jmeno_projektu> 
 + 
 +Repozitáře se vždy vytvoří i s rozhraním Trac; pokud ho vyloženě nechcete, smažte struktury Tracu: 
 + 
 +     rm -rf /home/DATA/trac/<jmeno_projektu> 
 + 
 +Pak se rozhodnete, kterými cestami budete s&nbsp;projektem pracovat — nejlepší je asi nakonfigurovat všechny (viz níže) — tedy svn, webový přístup do svn/gitu a Trac (také webový). Všude jsou přednastavené nějaké základní účty, ale nejlepší je tyto věci upravit podle vlastních potřeb. Například nemusíte chtít, aby ''ufal/maly...'' měl ''rw'' práva ve vašem projektu, jak tomu defaultně je! Podrobnosti jsou uvedené níže. Autentifikační soubory, které jsou uložené přímo u vašeho repozitáře ve složce ''conf'', jsou určené pro přístup protokolem ''svn'', zatímco soubory uložené na centrálních místech ''/home/DATA/'' jsou určené pro přístup protokolem ''https''
 + 
 +==== Konfigurace webového rozhraní SVN (preferováno) ==== 
 + 
 +Toto rozhraní je užíváno SVN klienty, kteří dostanou repository udanou ve tvaru ''https://svn.ms.mff.cuni.cz/svn/PROJEKT'', tj. např.: 
 +<code>    svn --username ufal checkout https://svn.ms.mff.cuni.cz/svn/$PROJEKT</code> 
 + 
 +Co se tyce svn weboveho rozhrani, modul ma nasledujici konfiguracni soubory: 
 +  * uzivatele: ''AuthUserFile /home/DATA/repository_passwords'' (Ondrej tomu laicky rika .htaccess) 
 +  * jejich opravneni: ''AuthzSVNAccessFile /home/DATA/svnauthz.conf'' (zde se rika, zda RO nebo RW) 
 +O zbytek se stara webovy modul subversion. 
 + 
 +Nyní už můžeme pro daného uživatele nastavit přístupová práva k&nbsp;jednotlivým projektům, a to v&nbsp;tomto souboru: 
 + 
 +<code>/home/DATA/svnauthz.conf</code> 
 + 
 +Konfiguráky jsou globální, tj. pro všechny projekty společné, v&nbsp;''svnauthz.conf'' jsou pro jednotlivé projekty sekce. 
 + 
 +=== Přidávání vlastních uživatelů pro webové přístupy (SVN, GIT i Trac) === 
 + 
 +Vlastni uzivatele pro webove pristupy pridate do centralniho souboru webovych hesel v ''/home/DATA/repository_passwords'' (na coz prava mate) pomoci: 
 + 
 +    htpasswd -bs /home/DATA/repository_passwords <uzivatelske_jmeno> <heslo> 
 +nebo 
 +    htpasswd -s /home/DATA/repository_passwords <uzivatelske_jmeno> 
 +    # na heslo budete dotázáni, heslo se nezobrazí ani na terminálu 
 + 
 +==== Konfigurace pristupu ke Git repozitari ==== 
 + 
 +Ke Git repozitarum je mozne v principu pristupovat dvema zpusoby: 
 + 
 +   * nahledem pres Gitweb rozhrani: https://svn.ms.mff.cuni.cz/git (standardni webove overovani) 
 + 
 +   * git klientem pres https: <code> git clone https://svn.ms.mff.cuni.cz/git/<repository_name.git> </code> 
 + 
 +   * pres ssh: <code> git clone user@svn.ms.mff.cuni.cz:/home/DATA/git/<repository_name>.git </code> 
 + 
 +V teto konfiguraci git neumi rozlisovat RO a RW uzivatele (jedine pres ssh a ACL prava). Pri pristupu pres https 
 +je pouzivan autentizacni soubor /home/DATA/repository_passwords, ale alternativa /home/DATA/svnauthz.conf chybi. 
 +Tuto funkcionalitu castecne doplnuje opt system Gitosis, ale prozatim jsem ho neinstaloval. Komunikace pri jeho pouziti probiha pres ssh, na serveru bezi Gitosis server pod uzivatelem Gitosis a uzivatele jsou rozlisovani diky certifikatum pro ssh, ktere 
 +jsou pro ne po jednom vygenerovany. 
 + 
 +==== Konfigurace protokolu SVN (raději nepoužívat, nešifrovaný přenos) ==== 
 + 
 +Toto rozhraní je užíváno SVN klienty, kteří dostanou repository udanou ve tvaru ''svn...'', tj. např.:
  
-Toto rozhraní je užíváno SVN klienty, kteří dostanou repository udanou ve tvaru ''svn://svn.ms.mff.cuni.cz/svn/PROJEKT'', tj. např.: 
     svn --username ufal checkout svn://svn.ms.mff.cuni.cz/$PROJEKT     svn --username ufal checkout svn://svn.ms.mff.cuni.cz/$PROJEKT
  
 Pristupova prava pro svn protokol se urcuji pro kazdy projekt nezavisle, v adresari conf v dane repository (jak je vytvorena mym skriptem), tj. napr.: Pristupova prava pro svn protokol se urcuji pro kazdy projekt nezavisle, v adresari conf v dane repository (jak je vytvorena mym skriptem), tj. napr.:
-    vim /home/svn/repos/$PROJEKT/conf/passwd  # vytvořit uživatele +    vim /home/DATA/svn/$PROJEKT/conf/passwd  # vytvořit uživatele 
-    vim /home/svn/repos/$PROJEKT/conf/authz   # nastavit jim práva +    vim /home/DATA/svn/$PROJEKT/conf/authz   # nastavit jim práva
  
-Vzory nastaveni pristupu jsou zde: ''/home/svn/repos/default/conf''+Vzory nastaveni pristupu jsou zde: ''/home/DATA/svn/default/conf''
  
 Pozor - hesla se tu nastavuji jako textove retezce, neni to htaccess! Po siti tedy tecou nekryptovane! Pozor - hesla se tu nastavuji jako textove retezce, neni to htaccess! Po siti tedy tecou nekryptovane!
Line 44: Line 103:
 ==== Konfigurace přístupu k systému Trac ==== ==== Konfigurace přístupu k systému Trac ====
  
-Trac - pouziva take overovani vuci: +Trac poskytuje webové rozhraní k repozitáři a dalším službám kolem správy projektu. Používá tutéž evidenci uživatelů a hesel jako webový (''https'') přístup k svn, tedy:
-    AuthUserFile /home/svn/users/passwords+
  
-Trac ma navic vlastni system prav. Trac vas rozpozna podle loginu, se kterym jste se prihlasili pri http autentizaci, ktera je pri pristupu vynucena. Pokud v danem projektu nejste zavedeni, tak se k nemu dostanete nejakymi default pravy.+    AuthUserFile /home/DATA/repository_passwords 
 + 
 +Při přístupu k webovému rozhraní Trac vyžaduje http autentizaci (zde tedy zadáte jméno a heslokteré máte zavedené v souboru ''/home/DATA/repository_passwords''). Systém práv (na rozdíl od autentizace) má Trac vlastní a můžete ho upravovat přes webové rozhraní nebo příkazem ''trac-admin''. Pokud v daném projektu nejste zavedeni, dostanete se k němu nějakými výchozími právy.
  
 Takto spustíte konfigurační skript pro Trac vašeho projektu: Takto spustíte konfigurační skript pro Trac vašeho projektu:
-    trac-admin /home/trac/$PROJEKT+    trac-admin /home/DATA/trac/$PROJEKT
  
-==== Přidávání vlastních uživatelů pro webové přístupy (SVN i Trac====+Chcete-li mít přístup k nastavení Tracu pro tento projekt i přes webové rozhraní Tracu, uvnitř ''trac-admin'' zadejte tento íkaz (nahraďte ''$USER'' svým uživatelským jménem v Tracu):
  
-Vlastni uzivatele pro webove pristupy pridate do centralniho souboru webovych hesel v ''/home/svn/users/passwords'' (na coz prava mate) pomoci:+<code>permission add $USER TRAC_ADMIN</code>
  
-    htpasswd -bs /home/svn/users/passwords <uzivatelske_jmeno> <heslo>+Ve webovém rozhraní (https://svn.ms.mff.cuni.cz/projects/$PROJEKT) se pak objeví tlačítko //Admin//. V něm ještě klikněte na //Plugins//, pak na doplněk //IniAdmin0.2// a povolte ho. Tím se na administrátorské stránce zpřístupní i všechna nastavení z ''trac.ini''.
  
------------------------------------------------------------------------------------------------------------+**Upozornění:** V sekci //Permissions// vidíte a můžete měnit práva uživatelů k jednotlivým operacím v Tracu. Nějaká práva mohou mít (a defaultně mají) i anonymní uživatelé, ale vzhledem k tomu, že naše instalace Tracu si vynucuje přihlášení, žádný uživatel by neměl být anonymní. Pokud někomu sdělíte uživatelské jméno ''ufalr'' (a heslo, které k němu uvidíte v konfiguračním souboru ''passwd'' vašeho projektu po jeho založení), dali jste mu read-only přístup do repozitáře svn (přes protokol svn), ale v Tracu může některé věci i měnit (libovolný neanonymní uživatel defaultně může psát do tracové wiki, zakládat a měnit tickety). To proto, že pro Trac už to není anonym, nýbrž "authenticated user".
  
-Doufam, ze timto shrnutim zajistime optimalni vyuziti  :) +=== Časté problémy ===
  
-  Milan+== V tracu chybí tlačítko Browse Source ==
  
-===== Setting Up an Archive =====+Ověřte, že v souboru ''/home/trac/PROJEKT/conf/trac.ini'' máte nastavenu proměnnou ''repository_dir'' na ''/home/DATA/svn/PROJEKT''
 + 
 +== V prohlížení kódu se neukazuje Unicode == 
 + 
 +Ověřte, že v souboru ''/home/trac/PROJEKT/conf/trac.ini'' máte nastavenu proměnnou ''default_charset'' na ''utf-8''. **Default je chybný, iso-8859-15.** 
 + 
 +==== Přístup k repozitáři z Microsoft Windows ==== 
 + 
 +Pracovní kopii projektu můžete mít i ve Windows. Tím se nemá na mysli, že vybalíte kopii pomocí ''svn checkout'' někde na Linuxu a pak si ji přenesete do Windows třeba pomocí SFTP. Můžete mít plnohodnotnou a synchronizovanou pracovní kopii, jestliže použijete windowsového klienta svn. Takovým klientem je [[http://tortoisesvn.net/|Tortoise SVN]]. Funguje jako rozšíření shellu Windows, to znamená, že se vám plně integruje do Průzkumníka Windows. Příkazy pro práci s repozitářem pak vyvoláváte pomocí kontextové nabídky, která se zobrazí, když kliknete na soubor nebo adresář pravým tlačítkem myši. 
 + 
 +===== Lokální Subversion ===== 
 + 
 +//(Z návodu ve wiki University of Maryland převzal a upravil Dan Zeman.)// 
 + 
 +Tento návod se týká lokálních repozitářů SVN, tedy takových, ke kterým budete přistupovat pouze z linuxových počítačů v síti ÚFALu.
  
 You can use svn to keep track of your own code. You can use svn to keep track of your own code.
Line 71: Line 145:
 <code>svnadmin create /net/work/public/SVN/$MY_PROJECT</code> where obviously ''$MY_PROJECT'' should be replaced by the desired name for your project. <code>svnadmin create /net/work/public/SVN/$MY_PROJECT</code> where obviously ''$MY_PROJECT'' should be replaced by the desired name for your project.
  
-**Beware!** Do not use older versions (e.g. 1.1.4) of Subversion to create a repository! By default, they will use the Berkeley DB backend, which is not recommended. You may be able to "successfully" finish the repository creation but things are likely to get broken later! Check your version by running ''svn --version''Version 1.3.1 and above should work fine.+**Beware!** Do not use older versions (e.g. 1.1.4) of Subversion to create a repository! By default, they will use the Berkeley DB backend, which is not recommended. You may be able to "successfully" finish the repository creation but things are likely to get broken later! Check your version by running <code>svn --version</code> Version 1.3.1 and above should work fine.
  
 Let's say you want to archive the directory ''/home/$USER/proj'' and all its subdirectories. The following code puts your project in the ''proj'' folder under version control. After executing the commands, your ''proj'' folder will become a working copy of the files stored in the repository. Let's say you want to archive the directory ''/home/$USER/proj'' and all its subdirectories. The following code puts your project in the ''proj'' folder under version control. After executing the commands, your ''proj'' folder will become a working copy of the files stored in the repository.
Line 91: Line 165:
 rm -rf proj.old rm -rf proj.old
 </code> </code>
 +
 +Výše uvedený postup je možné po úpravách použít i pro vzdálený repozitář na serveru SVN. Předpokládáme, že jste si už vytvořili repozitář ''$REP'' podle návodu uvedeného dříve, a že jste k&nbsp;němu nakonfigurovali přístupová práva. Řádek ''svnadmin create ...'' zde tedy vynecháváme.
 +
 +<code>cd /home/$USER
 +mv $PROJ $PROJ.old
 +mkdir tmp
 +cd tmp
 +mkdir $PROJ
 +cp -r /home/$USER/$PROJ.old $PROJ/trunk
 +mkdir $PROJ/branches
 +mkdir $PROJ/tags
 +svn --username $USER import $PROJ https:///svn.ms.mff.cuni.cz/svn/$REP/$PROJ --message 'Initial import'
 +cd ..
 +svn checkout -q https:///svn.ms.mff.cuni.cz/svn/$REP/$PROJ/trunk $PROJ
 +rm -rf tmp
 +rm -rf $PROJ.old</code>
 +
 +Pokud jste si jisti, že pro tento projekt nebudete nikdy potřebovat větve ani otagované verze, můžete pravděpodobně vynechat vytváření podsložek ''branches'' a ''tags'' a celý projekt posunout o patro výš. To jsem ale nezkoušel.
 +
 +
 +===== Přechod z lokálního repozitáře na serverový =====
 +
 +Nepamatujete si, kde vlastně leží repozitář vašeho projektu? Nacházíte-li se ve své pracovní kopii projektu, příkazem ''svn info'' to zjistíte:
 +
 +<code>10:58 zen:/export/home/zeman/projekty/interset> svn info
 +Path: .
 +URL: file:///net/work/public/SVN/interset/trunk
 +Repository Root: file:///net/work/public/SVN/interset
 +Repository UUID: 9edd2012-306b-417f-90a6-873db92f1308
 +Revision: 7
 +Node Kind: directory
 +Schedule: normal
 +Last Changed Author: zeman
 +Last Changed Rev: 7
 +Last Changed Date: 2009-02-19 10:58:20 +0100 (Thu, 19 Feb 2009)</code>
 +
 +Vzhledem k tomu, že URL ve výše uvedeném hlášení začíná <nowiki>"file://",</nowiki> jde o lokální repozitář. Nyní je tedy potřeba založit prázdný serverový repozitář podle postupu uvedeného výše.
 +
 +<code>ssh svn.ms.mff.cuni.cz
 +/home/howto/create_new_project.sh interset
 +cd /home/svn/repos/interset/conf
 +# Přístup k svn přes protokol svn (nešifrovaně!)
 +vi authz
 +vi passwd
 +# Přístup k svn a tracu přes protokol https
 +vi /home/svn/users/passwords
 +# Pokud jsem se tam ještě nenašel, můžu své heslo nastavit takto:
 +htpasswd -s /home/svn/users/passwords zeman
 +# Přístupová práva k svn repozitáři prostřednictvím https (obecně i specificky pro tento projekt)
 +vi /home/svn/permissions/svnauthz.conf
 +# Přístupová práva ke správě projektu v tracu
 +# Mělo by jít též editovat ve webovém rozhraní
 +trac-admin /home/trac/interset</code>
 +
 +Serverový projekt a repozitář jsou založené a přístupová práva doufejme správně nastavena. Teď se tedy můžeme pustit do vlastního přenosu dat projektu. Samozřejmě předpokládáme, že chceme zachovat historii revizí, jinak by stačilo prostě ze zdrojového repozitáře vybalit pracovní kopii a na server ji naimportovat jako nový dosud neverzovaný projekt. K přenosu projektu včetně historie je potřeba použít příkazy nástroje ''svnadmin''. Podrobnější návod si lze přečíst [[http://svnbook.red-bean.com/nightly/en/svn.reposadmin.maint.html#svn.reposadmin.maint.migrate|tady]]. Důležité je vědět, že na rozdíl od klienta ''svn'', který může přistupovat k repozitáři vzdáleně přes síťové protokoly, ''svnadmin'' musí běžet na stroji, na kterém je repozitář fyzicky uložen.
 +
 +<code>svnadmin dump /net/work/public/SVN/interset > interset.svndump
 +scp interset.svndump svn.ms.mff.cuni.cz:/home/zeman
 +rm interset.svndump
 +ssh svn.ms.mff.cuni.cz
 +svnadmin load /home/svn/repos/interset < interset.svndump
 +rm interset.svndump
 +trac-admin /home/trac/interset
 +# This happens inside trac-admin: resynchronize its history with svn.
 +Trac [/home/trac/interset]> resync
 +Trac [/home/trac/interset]> exit
 +# Log off svn server, continue on local machine
 +exit
 +# Replace the working copy of local project by a working copy of the server project
 +cd ..
 +mv interset interset.localwc
 +svn --username zeman checkout https://svn.ms.mff.cuni.cz/svn/interset/trunk
 +mv trunk interset
 +cd interset</code>
  
 ===== Přechod z CVS pod SVN ===== ===== Přechod z CVS pod SVN =====
 +
 +//(Za kopii poznámek děkuji Edovi Bejčkovi.)//
 +
 +  * [[http://www.pushok.com/soft_svn_vscvs.php|Srovnání výhod a nevýhod CVS a SVN]]
 +  * [[http://svn.collab.net/repos/svn/trunk/doc/user/cvs-crossover-guide.html|Jak zacházet s SVN, jestliže umím CVS]]
 +  * [[http://svnbook.red-bean.com/en/1.4/index.html|SVN book]]
 +
 +Existuje pythonovský skript, ktery převod provádí. Je nastavitelné, jak kompletně to má převádět staré revize. Stáhl jsem cvs2svn z&nbsp;webu, tutoriálek zde: http://www.onlamp.com/pub/a/onlamp/2005/10/03/cvs-to-subversion-with-cvs2svn.html. Potom kopie CVS repository, oprava dvou chyb, překlopení do SVN a
 +nahrání na úfalí SVN server (heslo stejne jako na stroj ufal):
 +
 +<code bash>$ cp -r /net/data/CVS-CKL/vallex-group vallex-cvs
 +$ rm vallex-cvs/data/VALLEX-m/CNK-sentences/701.html,v
 +$ rm vallex-cvs/backup-pred-prohozenim-poli/data/VALLEX-m/CNK-sentences/701.html,v
 +$ cvs2svn -s vallex --encoding=cp1250 --encoding=L2 --encoding=utf8
 +vallex-cvs/ | tee logfile.txt
 +$ scp -r vallex bejcek@svn:/home/svn/repos</code>
 +
 +Danovy poznámky:
 +
 +Poslední krok s&nbsp;kopírováním repozitáře SVN na server se mi nepovedl. Repozitář na serveru už existoval (byť prázdný), založil ho někdo jiný a u některých souborů nebo složek byl problém s&nbsp;přístupovými právy. Zkouším tedy jinou cestu. Nejdříve vyrobím pouze "dump" SVN:
 +
 +<code>cvs2svn-2.2.0/cvs2svn --dumpfile biblio.svndump --encoding=cp1250 --encoding=L2 --encoding=utf8 \
 +    biblio-cvs/ | tee logfile.txt</code>
 +
 +Potom budu postupovat podobně jako při stěhování lokálního repozitáře SVN na server popsaném výše.
 +
 +<code>scp biblio.svndump svn.ms.mff.cuni.cz:/home/zeman
 +rm biblio.svndump
 +ssh svn.ms.mff.cuni.cz
 +svnadmin load /home/svn/repos/biblio < biblio.svndump
 +rm biblio.svndump</code>
 +
 +==== Zastaralý a velmi amatérský návod ====
  
 Rozmyslete si, zda chcete zachovat pouze aktuální verzi vašeho projektu, nebo i některé starší. Pokud chcete zachovat pouze aktuální verzi, vybalte si ji do nějaké pracovní složky pomocí ''cvs checkout'' a postupujte podle výše uvedeného návodu pro přidání projektu pod SVN. Rozmyslete si, zda chcete zachovat pouze aktuální verzi vašeho projektu, nebo i některé starší. Pokud chcete zachovat pouze aktuální verzi, vybalte si ji do nějaké pracovní složky pomocí ''cvs checkout'' a postupujte podle výše uvedeného návodu pro přidání projektu pod SVN.
Line 346: Line 527:
  
 This command takes the differences between the alopez branch from rev. 250 to 271, and applies them to the working copy.  Note that this may create conflicts!  (To preview these, I can use the ''--dry-run'' flag to ''svn merge'').  Once I've successfully resolved any conflicts, merged the files, and run regression tests as described above, I can commit the files to the development trunk. This command takes the differences between the alopez branch from rev. 250 to 271, and applies them to the working copy.  Note that this may create conflicts!  (To preview these, I can use the ''--dry-run'' flag to ''svn merge'').  Once I've successfully resolved any conflicts, merged the files, and run regression tests as described above, I can commit the files to the development trunk.
 +
  
 ===== Tags ===== ===== Tags =====
Line 366: Line 548:
 </code> </code>
  
-=== [[VersionControlTags|Current Tags and Branches]] === 
  
-=== Rolling Back Versions ===+ 
 + 
 + 
 + 
 +===== Rolling Back Versions =====
  
 What do you do if something is broken that wasn't broken before?  You can simply check out a copy of the file (or the entire project) from a point before the problem arose.  In order to see the revisions in which a particular file changed, you can run What do you do if something is broken that wasn't broken before?  You can simply check out a copy of the file (or the entire project) from a point before the problem arose.  In order to see the revisions in which a particular file changed, you can run
  
-''svn log &lt;file&gt;''+''svn log $FILE''
  
 This will show you the change log.  Hopefully, this will be sufficiently informative as to when particular changes occurred, but if you aren't sure what happened in a particular revision, you can always run This will show you the change log.  Hopefully, this will be sufficiently informative as to when particular changes occurred, but if you aren't sure what happened in a particular revision, you can always run
  
-''svn diff &lt;file&gt; -r &lt;revision&gt;''+''svn diff $FILE -r $REVISION''
  
 To see the changes that have been made.  Once you figure out which version you need, you can restore your working copy to that revision using  To see the changes that have been made.  Once you figure out which version you need, you can restore your working copy to that revision using 
  
-''svn update &lt;file&gt; -r &lt;revision&gt;''+''svn update $FILE -r $REVISION''
  
-=== Setting Up an Archive ===+Warning: If you update the whole project (''svn update .'' in the root of the working copy) this way, svn will behave as if the revisions after the one you rolled back to did not exist. For instance, it will not show you the renewed files as changed when you call ''svn status''. If you call ''svn log'', it will show only revisions up to the one you rolled back to. If you call ''svn commit'' without making additional changes, nothing will happen. However, ''svn diff -r HEAD:BASE'' **will** show the differences between your current (rolled-back) version and the most recent one in the repository. So how do we force svn to store the restored old revision as the newest one in the repository? 
 + 
 +The following chapters from the SVN book have some answers: 
 +  * http://svnbook.red-bean.com/nightly/en/svn.tour.history.html#svn.tour.history.snapshots 
 +  * http://svnbook.red-bean.com/nightly/en/svn.branchmerge.basicmerging.html#svn.branchmerge.basicmerging.resurrect 
 +  * http://svnbook.red-bean.com/nightly/en/svn.branchmerge.basicmerging.html#svn.branchmerge.basicmerging.undo 
 + 
 +The following code should undo the changes between the revisions 302 and 303 (note the minus sign before 303, meaning negative change) while keeping the other changes between 303 and HEAD. 
 + 
 +<code>svn merge -c -303 https://svn.ms.mff.cuni.cz/svn/$REPOSITORY/$PROJECT/trunk 
 +# alternatively: svn merge -r 303:302 https://svn.ms.mff.cuni.cz/svn/$REPOSITORY/$PROJECT/trunk 
 +svn status 
 +svn diff 
 +svn commit -m "Undoing change committed in r303."</code> 
 + 
 +===== Setting Up an Archive =====
  
 You can use svn to keep track of your own code.  Let's say you want to archive the directory ''/nfshomes/$USER/proj'' and all its subdirectories.  You can do so with the following commands. You can use svn to keep track of your own code.  Let's say you want to archive the directory ''/nfshomes/$USER/proj'' and all its subdirectories.  You can do so with the following commands.
Line 407: Line 607:
 See [[VersionControlSetup|VersionControlSetup]] for the series of commands used to set up the MTEval archive. See [[VersionControlSetup|VersionControlSetup]] for the series of commands used to set up the MTEval archive.
  
-=== Stupid Repository Tricks ===+ 
 +===== Stupid Repository Tricks =====
  
 You can accomplish virtually anything you can imagine with the repository, although it may not be immediately obvious how.  For instance: You can accomplish virtually anything you can imagine with the repository, although it may not be immediately obvious how.  For instance:
  
-: $ Get the latest revision number of your current branch (wine cluster only).: ''svn info -r HEAD''  +  * Get the latest revision number of your current branch: ''svn info -r HEAD''You can also try ''svn log | head -2'' 
-:You can also try ''svn log | head -2''+  * View the logs of all changes to your current branch since you last updated: ''svn log -r HEAD:BASE'' 
 +  * View all the differences between your working copy and the latest revision of your current branch: ''svn diff -r HEAD .'' 
 +  * Merge into your current working copy the bug fixes checked in to r475 of the bittorrent branch (even if that's not your working branch): ''<nowiki>svn merge -r 474:475 file:///fs/clip-mteval/svn/Programs/branches/bittorrent .</nowiki>'' 
 +  * Change your mind when you realize those bug fixes did more harm than good: ''<nowiki>svn merge -r 475:474 file:///fs/clip-mteval/svn/Programs/branches/bittorrent .</nowiki>''
  
-: $ View the logs of all changes to your current branch since you last updated.: ''svn log -r HEAD:BASE''+===== Troubleshooting =====
  
-: $ View all the differences between your working copy and the latest revision of your current branch.: ''svn diff -r HEAD .''+==== Password for GNOME keyring ====
  
-: $ Merge into your current working copy the bug fixes checked in to r475 of the bittorrent branch (even if that'not your working branch).: ''svn merge -r 474:475 file:///fs/clip-mteval/svn/Programs/branches/bittorrent .''+I had this issue on my workstation (''zen'') when Gnome was running. At the same time svn ran seamlessly on e.g. the ''lrc2'' machine because it is not a workstationThe issuewhen in a working copy, type ''svn update''. The following prompt may pop up (and the following line is the result of typing something I thought might be set up as my password for the svn server):
  
-: $ Change your mind when you realize those bug fixes did more harm than good.: ''svn merge -r 475:474 file:///fs/clip-mteval/svn/Programs/branches/bittorrent .''+<code bash>zeman@zen:~/projekty/statmtsvn update 
 +Password for '(null)GNOME keyring:  
 +svn: OPTIONS of 'https://svn.ms.mff.cuni.cz/svn/statmt/trunk': authorization failed: Could not authenticate to server: rejected Basic challenge (https://svn.ms.mff.cuni.cz)</code>
  
 +First, what is the Gnome keyring? According to [[http://en.wikipedia.org/wiki/GNOME_Keyring|Wikipedia]], it is a daemon application designed to take care of the user's security credentials, such as user names and passwords. The sensitive data is encrypted and stored in a keyring file in the user's home folder. The default keyring uses the login password for encryption, so users don't need to remember yet another password.
  
 +Unfortunately, I do not seem to be able to get along with my login password either. Also, it is not clear why Subversion wants to consult the keyring when it apparently can work without it (on non-workstation machines, it probably uses its own copy of the credentials stored somewhere in the working copy). Milan lists the following possibilities:
 +  * set empty password for the keyring
 +  * remove the keyring
 +  * change the setting of Subversion
  
-=== Troubleshooting ===+One on-line forum suggests removing the keyring file. This sounds like a good idea because I do not think I use it otherwise. 
 + 
 +<code bash>rm ~/.gnome2/keyrings/login.keyring</code> 
 + 
 +This solution worked for me. For the sake of completeness: other fora suggest editing the svn configuration file and enable password storing: 
 + 
 +<code bash># Edit the file and add the following line in the [Auth] section (uncommented!): 
 +# password-stores = 
 +# Note that the line may already be there, commented, and/or with the value no. 
 +vim ~/.subversion/config</code> 
 + 
 +==== Working copy path does not exist in repository ====
  
 If you get the message: If you get the message:
Line 441: Line 663:
 * pray * pray
  
-=== Further Reading === 
  
-All of the information in this tutorial comes directly from the online [http://svnbook.red-bean.com/ Subversion book].  It is not necessary to read the entire book to get a good idea of how subversion works.  In general, if you only have a limited period of time in which to get acquainted, you will get the most mileage out of the following parts of the book: 
  
-* [http://svnbook.red-bean.com/nightly/en/svn.basic.html Chapter 2: Basic Concepts].  This is an intro to version control concepts; if you are familiar with the basic ideas, you can probably skip this chapter.  Covers concepts such as repositories, working copies, and copy-modify-merge version control. +===== Further Reading =====
-* [http://svnbook.red-bean.com/nightly/en/svn.tour.cycle.html Section 3.5: Basic Work Cycle].  Covers 90% of what you will need to know about using subversion, in about fifteen minutes.  If you don't read anything else, read this section, and you'll be able to get started very quickly. +
-* [http://svnbook.red-bean.com/nightly/en/svn.tour.html Chapter 3: Guided Tour].  Includes the above (Section 3.5) as well as some additional details.  This is 95% of what you need to know. +
-* [http://svnbook.red-bean.com/nightly/en/svn.branchmerge.html Chapter 4: Branching and Merging]. This is the other 5%.  If you are working on merging changes into the main branch of code, look here. +
-* [http://svnbook.red-bean.com/nightly/en/svn.ref.html Chapter 9: Subversion Complete Reference].  Compact documentation on all of the command-line tools and their options.  This isn't something you need to read front-to-back, but rather, where you should look if you can't remember a particular command-line option.+
  
-Most likely, this is all you will need to look at to do most of your work.  Most of this material comes from Section 3.5.+All of the information in this tutorial comes directly from the online [[http://svnbook.red-bean.com/|Subversion book]].  It is not necessary to read the entire book to get a good idea of how subversion works.  In general, if you only have a limited period of time in which to get acquainted, you will get the most mileage out of the following parts of the book:
  
-[[Category:Resources]]+  * Nečíslovaný seznam [[http://svnbook.red-bean.com/nightly/en/svn.basic.html|Chapter 2: Basic Concepts]].  This is an intro to version control concepts; if you are familiar with the basic ideas, you can probably skip this chapter.  Covers concepts such as repositories, working copies, and copy-modify-merge version control. 
 +  * [[http://svnbook.red-bean.com/nightly/en/svn.tour.cycle.html|Section 3.5: Basic Work Cycle]].  Covers 90% of what you will need to know about using subversion, in about fifteen minutes.  If you don't read anything else, read this section, and you'll be able to get started very quickly. 
 +  * [[http://svnbook.red-bean.com/nightly/en/svn.tour.html|Chapter 3: Guided Tour]].  Includes the above (Section 3.5) as well as some additional details.  This is 95% of what you need to know. 
 +  * [[http://svnbook.red-bean.com/nightly/en/svn.branchmerge.html|Chapter 4: Branching and Merging]]. This is the other 5%.  If you are working on merging changes into the main branch of code, look here. 
 +  * [[http://svnbook.red-bean.com/nightly/en/svn.ref.html|Chapter 9: Subversion Complete Reference]].  Compact documentation on all of the command-line tools and their options.  This isn't something you need to read front-to-back, but rather, where you should look if you can't remember a particular command-line option. 
 + 
 +Most likely, this is all you will need to look at to do most of your work.  Most of this material comes from Section 3.5.

[ Back to the navigation ] [ Back to the content ]