Both sides previous revision
Previous revision
Next revision
|
Previous revision
Next revision
Both sides next revision
|
subversion [2009/02/19 15:14] zeman trac.ini |
subversion [2011/08/22 14:54] fucik |
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. |
| |
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 i jinde). Když chcete s lokálním repozitářem pracovat, musí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ů. | 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 i jinde). Když chcete s lokálním repozitářem pracovat, musí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]]. | 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]]. |
| |
===== Subversion Server ===== | ===== Subversion/Git Server (po prestavbe 08/2011) ===== |
| |
Toto je Milanovo e-mailové shrnutí z 26.9.2007. Týká se konfigurace serverových repozitářů na serveru svn.ms.mff.cuni.cz. | Server svn.ms.mff.cuni.cz |
| |
Mili kolegove, | Mili kolegove, |
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: | po ctyrech letech provozu jsem reimplementoval sluzby naseho svn serveru na novem HW i SW. Nyni mame k dispozici vice prostoru |
| a cele reseni bezi na systemu Debian 6 Squeeze. Doslo k drobnym zmenam v konfiguraci novych repozitaru, nicmene prechod |
| by mel byt temer transparentni. |
| |
| Co jsem zachoval: |
| - uzivatelske ucty a hesla v systemu (pro ssh pristup) |
| - uzivatelske ucty, zavedene pro https autentizaci |
| - ucty a system prav pro pristup pres svnserve a websvn |
| - veskera data systemu Trac a stav repozitaru |
| |
| Co je zmeneno: |
| - soubor s ucty a hesly pro https autentizaci je nyni: /home/DATA/repository_passwords |
| - soubor pro nastaveni prav v svn repozitarich je: /home/DATA/svnauthz.conf |
| - stare cesty jsou nalinkovany na novou strukturu: |
| - /home/DATA/svn (repozitare svn) |
| - /home/DATA/git (repozitare git) |
| - /home/DATA/trac (data Tracu pro obe verze repozitaru) |
| |
- nalogujete se na svn.ufal.ms.mff.cuni.cz (= svn.ms.mff.cuni.cz) (ucty byly preneseny z ufal.mff.cuni.cz) | |
- pro vytvoreni projektu pouzijete skript (kteremu date jeste jmeno projektu):<code>/home/howto/create_new_project.sh <jmeno_projektu></code> | Podivejme se, co je potreba potreba si projit a nastavit pri konfiguraci noveho projektu svn/git: |
- pak se rozhodnete kterymi cestami budete s projektem pracovat - nejlepsi je asi nakonfigurovat vsechny (viz. nize) - tedy svn, webovy pristup do svn a 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! Podrobnosti jsou uvedené níže. Autentikač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/svn'' jsou určené pro přístup protokolem ''https''. | |
| - nalogujete se na svn.ufal.ms.mff.cuni.cz (= svn.ms.mff.cuni.cz) |
| - rozhodnete se, zda budete vytvaret SVN nebo GIT repozitar |
| - pro vytvoreni projektu pouzijete skript (kteremu date jeste jmeno projektu): |
| |
| SVN <code> /home/howto/Setup_svn-trac_repository.sh <jmeno_projektu> </code> |
| |
| GIT <code> /home/howto/Setup_git-trac_repository.sh <jmeno_projektu> </code> |
| |
| Repozitare se vzdy vytvori i s Trac rozhranim; pokud ho vylozene nechcete, smazte struktury Tracu: |
| |
| <code> rm -rf /home/DATA/trac/<jmeno_projektu> </code> |
| |
| Pak se rozhodnete kterymi cestami budete s projektem pracovat - nejlepsi je asi nakonfigurovat vsechny (viz. nize) - tedy svn, webovy pristup do svn/gitu a 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! 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) ==== | ==== Konfigurace webového rozhraní SVN (preferováno) ==== |
<code> svn --username ufal checkout https://svn.ms.mff.cuni.cz/svn/$PROJEKT</code> | <code> svn --username ufal checkout https://svn.ms.mff.cuni.cz/svn/$PROJEKT</code> |
| |
Co se tyce svn weboveho rozhrani, tak ten modul ma nasledujici konfiguraky (viz. /etc/httpd/conf.d/subversion.conf): | Co se tyce svn weboveho rozhrani, modul ma nasledujici konfiguracni soubory: |
* uzivatele: ''AuthUserFile /home/svn/users/passwords'' (Ondrej tomu laicky rika .htaccess) | * uzivatele: ''AuthUserFile /home/DATA/repository_passwords'' (Ondrej tomu laicky rika .htaccess) |
* jejich opravneni: ''AuthzSVNAccessFile /home/svn/permissions/svnauthz.conf'' (zde se rika, zda RO nebo RW) | * jejich opravneni: ''AuthzSVNAccessFile /home/DATA/svnauthz.conf'' (zde se rika, zda RO nebo RW) |
O zbytek se stara webovy modul subversion - ja mu jen rikam tohle. | O zbytek se stara webovy modul subversion. |
| |
Konfiguraky jsou globalni, tj. pro vsechny projekty spolecne. | Konfiguraky jsou globalni, tj. pro vsechny projekty spolecne, v svnauthz.conf jsou pro jednotlive projekty sekce. |
| |
O přidávání uživatelů a hesel viz níže. | O přidávání uživatelů a hesel viz níže. |
| |
| === Přidávání vlastních uživatelů pro webové přístupy (SVN, GIT i Trac) === |
| |
=== Přidávání vlastních uživatelů pro webové přístupy (SVN i Trac) === | Vlastni uzivatele pro webove pristupy pridate do centralniho souboru webovych hesel v ''/home/DATA/repository_passwords'' (na coz prava mate) pomoci: |
| |
Vlastni uzivatele pro webove pristupy pridate do centralniho souboru webovych hesel v ''/home/svn/users/passwords'' (na coz prava mate) pomoci: | |
| |
htpasswd -bs /home/svn/users/passwords <uzivatelske_jmeno> <heslo> | htpasswd -bs /home/DATA/repository_passwords <uzivatelske_jmeno> <heslo> |
nebo | nebo |
htpasswd -s /home/svn/users/passwords <uzivatelske_jmeno> | htpasswd -s /home/DATA/repository_passwords <uzivatelske_jmeno> |
# na heslo budete dotázáni, heslo se nezobrazí ani na terminálu | # na heslo budete dotázáni, heslo se nezobrazí ani na terminálu |
| |
| |
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! |
| |
| |
| |
==== Konfigurace přístupu k systému Trac ==== | ==== Konfigurace přístupu k systému Trac ==== |
| |
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''. | 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". |
| |
=== Časté problémy === | === Časté problémy === |
| |
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.** | 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 ===== | ===== Lokální Subversion ===== |
| |
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. | 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. |
| |
| |
| |
| |
| |
| |
| |
svnadmin load /home/svn/repos/interset < interset.svndump | svnadmin load /home/svn/repos/interset < interset.svndump |
rm 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 | # Log off svn server, continue on local machine |
exit | exit |
cd .. | cd .. |
mv interset interset.localwc | mv interset interset.localwc |
mkdir interset | svn --username zeman checkout https://svn.ms.mff.cuni.cz/svn/interset/trunk |
cd interset | mv trunk interset |
svn --username zeman checkout https://svn.ms.mff.cuni.cz/svn/interset/trunk</code> | 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 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 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 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. |