Both sides previous revision
Previous revision
Next revision
|
Previous revision
Next revision
Both sides next revision
|
subversion [2009/02/19 16:42] zeman Přístup z Windows. |
subversion [2012/05/10 15:31] zeman Úprava. |
====== 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. |
| |
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 přestavbě 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''. Celé řešení běží na systému Debian 6 Squeeze. |
| |
Mili kolegove, | Co bylo zachováno stejné jako před přestavbou: |
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: | * uživatelské účty a hesla pro ssh přístup do systému |
| * uživatelské účty, zavedené pro https autentizaci |
| * účty a systém práv pro přístup přes svnserve a websvn |
| * veškerá data systému Trac a stav repozitářů |
| |
- nalogujete se na svn.ufal.ms.mff.cuni.cz (= svn.ms.mff.cuni.cz) (ucty byly preneseny z ufal.mff.cuni.cz) | Co je změněno: |
- pro vytvoreni projektu pouzijete skript (kteremu date jeste jmeno projektu):<code>/home/howto/create_new_project.sh <jmeno_projektu></code> | * soubor s účty a hesly pro https autentizaci je nyní: ''/home/DATA/repository_passwords'' |
- 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''. | * soubor pro nastavení práv v 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ářů) |
| |
| Co je nové: |
| * podpora založení repozitáře git |
| * podpora propojení systému Trac s git repozitářem |
| * přístup ke git repozitáři přes https a ssh |
| |
| ===== Založení nového projektu ===== |
| |
| Podívejme se, co je potřeba si projít a nastavit při konfiguraci nového projektu svn/git: |
| * přihlásíte se přes ssh na ''svn.ms.mff.cuni.cz'' |
| * rozhodnete se, zda budete vytvářet repozitář SVN, nebo GIT |
| * pro vytvoření projektu použijete skript (kterému dáte ještě jméno projektu): |
| |
| SVN: /home/howto/Setup_svn-trac_repository.sh <jmeno_projektu> |
| |
| 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 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) ==== | ==== 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. | Nyní už můžeme pro daného uživatele nastavit přístupová práva k jednotlivým projektům, a to v tomto souboru: |
| |
O přidávání uživatelů a hesel viz níže. | <code>/home/DATA/svnauthz.conf</code> |
| |
=== Přidávání vlastních uživatelů pro webové přístupy (SVN i Trac) === | Konfiguráky jsou globální, tj. pro všechny projekty společné, v ''svnauthz.conf'' jsou pro jednotlivé projekty sekce. |
| |
Vlastni uzivatele pro webove pristupy pridate do centralniho souboru webovych hesel v ''/home/svn/users/passwords'' (na coz prava mate) pomoci: | === Přidávání vlastních uživatelů pro webové přístupy (SVN, GIT i Trac) === |
| |
htpasswd -bs /home/svn/users/passwords <uzivatelske_jmeno> <heslo> | 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 | 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 |
| |
==== Konfigurace protokolu SVN (raději nepoužívat, nekryptovaný přenos) ==== | ==== 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.ufal.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...'', tj. např.: |
| |
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! |
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: | 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 | 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 heslo, které máte zavedené v souboru ''/home/svn/users/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 s nějakými výchozími právy. | Při přístupu k webovému rozhraní Trac vyžaduje http autentizaci (zde tedy zadáte jméno a heslo, které 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 s 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 |
| |
Chcete-li mít přístup k nastavení Tracu pro tento projekt i přes webové rozhraní Tracu, uvnitř ''trac-admin'' zadejte tento příkaz (nahraďte ''$USER'' svým uživatelským jménem v Tracu): | Chcete-li mít přístup k nastavení Tracu pro tento projekt i přes webové rozhraní Tracu, uvnitř ''trac-admin'' zadejte tento příkaz (nahraďte ''$USER'' svým uživatelským jménem v Tracu): |
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é, kteří přeskočí autentikaci https. 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 (defaultně: psát do tracové wiki, zakládat a měnit tickety). To proto, že pro Trac už to není anonym, nýbrž "authenticated user". | **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 === |
== V tracu chybí tlačítko Browse Source == | == V tracu chybí tlačítko Browse Source == |
| |
Ověřte, že v souboru ''/home/trac/PROJEKT/conf/trac.ini'' máte nastavenu proměnnou ''repository_dir'' na ''/home/svn/repos/PROJEKT''. | 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 == | == V prohlížení kódu se neukazuje Unicode == |
| |
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 |
| |
===== 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. |
| |
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. | 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. |
| |