[ 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 [2009/03/10 13:28]
zeman CVS na SVN přes dump.
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.
  
-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 drobnem vylepseni naseho serveru svn jeste jednou sepisuji co je potreba si projit nastavit pri konfiguraci noveho projektu:+  * uživatelské účty a hesla pro ssh přístup do systému 
 +  * uživatelské účtyzavedené pro https autentizaci 
 +  * účty systém práv pro přístup přes svnserve 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. nizetedy svn, webovy pristup do svn a Trac (take webovy). Vsude jsou prednastaveny nejake zakladni ucty, ale nejlepsi je tyto veci upravit podle vlastnich potrebNapriklad 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&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ářů) 
 + 
 +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&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řebNapří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) ====
Line 23: Line 52:
 <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&nbsp;jednotlivým projektům, a to v&nbsp;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&nbsp;''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 matepomoci:+=== 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.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ř.:
Line 48: Line 94:
  
 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 59: Line 105:
 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):
Line 78: Line 124:
 == 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 ==
Line 137: Line 183:
  
 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.
 +
  
 ===== Přechod z lokálního repozitáře na serverový ===== ===== Přechod z lokálního repozitáře na serverový =====
Line 180: Line 227:
 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
Line 211: Line 262:
 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: 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>+<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. Potom budu postupovat podobně jako při stěhování lokálního repozitáře SVN na server popsaném výše.
Line 567: Line 619:
  
 ===== Troubleshooting ===== ===== Troubleshooting =====
 +
 +==== Password for GNOME keyring ====
 +
 +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 workstation. The issue: when 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):
 +
 +<code bash>zeman@zen:~/projekty/statmt$ svn 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
 +
 +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 596: Line 676:
  
 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.
- 

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