Both sides previous revision
Previous revision
Next revision
|
Previous revision
Next revision
Both sides next revision
|
subversion [2009/02/19 14:26] zeman Přeskládáno, aby si člověk nekladl otázky, které jsou zodpovězené níže. |
subversion [2009/11/19 17:14] zeman resync |
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 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/svn/users/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: |
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/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): |
| |
| <code>permission add $USER TRAC_ADMIN</code> |
| |
| 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. |
| |
| |
| |
| |
/home/howto/create_new_project.sh interset | /home/howto/create_new_project.sh interset |
cd /home/svn/repos/interset/conf | cd /home/svn/repos/interset/conf |
| # Přístup k svn přes protokol svn (nešifrovaně!) |
vi authz | vi authz |
vi passwd</code> | 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> |
| |
Poznámka: systém přidělování práv je složitý a nezdokumentovaný. Ještě existuje centrální přehled uživatelů a jejich hesel pro všechny repozitáře na serveru SVN. Leží v ''/home/svn/users/passwords''. Hesla jsou zde zašifrovaná a nejsem si teď jist, jakým způsobem se nastavují. Snad nějaký příkaz ''svnpasswd''? Nebo ''htpasswd''? Pak také existuje centrální evidence práv uživatelů v souboru ''/home/svn/permissions/svnauthz.conf''. V ní lze nastavovat jednak výchozí práva, jednak práva pro jednotlivé projekty. Není mi ale jasné, kdo dostane přednost, když jsou pro konkrétní projekt nastavena práva jak tady, tak přímo u daného projektu v ''/home/svn/repos/PROJEKT/conf''. | |
| |
===== 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. |