| Both sides previous revision
Previous revision
Next revision
|
Previous revision
|
subversion [2012/05/10 15:32] zeman |
subversion [2026/10/02 15:35] (current) fucik [Password for GNOME keyring] |
| 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. | 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.ufal.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/Git Server (po přestavbě 08/2011) ===== | ===== Subversion/Git Server (po přestavbě 08/2011) ===== |
| |
| Server ''svn.ms.mff.cuni.cz''. Celé řešení běží na systému Debian 6 Squeeze. | Server ''svn.ufal.mff.cuni.cz''. |
| |
| Co bylo zachováno stejné jako před přestavbou: | Co bylo zachováno stejné jako před přestavbou: |
| |
| Podívejme se, co je potřeba si projít a nastavit při konfiguraci nového projektu svn/git: | 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'' | * přihlásíte se přes ssh na ''svn.ufal.mff.cuni.cz'' |
| * rozhodnete se, zda budete vytvářet repozitář SVN, nebo GIT | * 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): | * pro vytvoření projektu použijete skript (kterému dáte ještě jméno projektu): |
| ==== Konfigurace webového rozhraní SVN (preferováno) ==== | ==== 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ř.: | Toto rozhraní je užíváno SVN klienty, kteří dostanou repository udanou ve tvaru ''https://svn.ufal.mff.cuni.cz/svn/PROJEKT'', tj. např.: |
| <code> svn --username ufal checkout https://svn.ms.mff.cuni.cz/svn/$PROJEKT</code> | <code> svn --username ufal checkout https://svn.ufal.mff.cuni.cz/svn/$PROJEKT</code> |
| |
| Co se tyce svn weboveho rozhrani, modul ma nasledujici konfiguracni soubory: | Co se tyce svn weboveho rozhrani, modul ma nasledujici konfiguracni soubory: |
| Ke Git repozitarum je mozne v principu pristupovat dvema zpusoby: | Ke Git repozitarum je mozne v principu pristupovat dvema zpusoby: |
| |
| * nahledem pres Gitweb rozhrani: https://svn.ms.mff.cuni.cz/git (standardni webove overovani) | * nahledem pres Gitweb rozhrani: https://svn.ufal.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> | * git klientem pres https: <code> git clone https://svn.ufal.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> | * pres ssh: <code> git clone user@svn.ufal.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 | V teto konfiguraci git neumi rozlisovat RO a RW uzivatele (jedine pres ssh a ACL prava). Pri pristupu pres https |
| 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ř.: |
| |
| svn --username ufal checkout svn://svn.ms.mff.cuni.cz/$PROJEKT | svn --username ufal checkout svn://svn.ufal.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.: |
| <code>permission add $USER TRAC_ADMIN</code> | <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''. | Ve webovém rozhraní (https://svn.ufal.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". | **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". |
| mkdir $PROJ/branches | mkdir $PROJ/branches |
| mkdir $PROJ/tags | mkdir $PROJ/tags |
| svn --username $USER import $PROJ https:///svn.ms.mff.cuni.cz/svn/$REP/$PROJ --message 'Initial import' | svn --username $USER import $PROJ https:///svn.ufal.mff.cuni.cz/svn/$REP/$PROJ --message 'Initial import' |
| cd .. | cd .. |
| svn checkout -q https:///svn.ms.mff.cuni.cz/svn/$REP/$PROJ/trunk $PROJ | svn checkout -q https:///svn.ufal.mff.cuni.cz/svn/$REP/$PROJ/trunk $PROJ |
| rm -rf tmp | rm -rf tmp |
| rm -rf $PROJ.old</code> | rm -rf $PROJ.old</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. | 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 | <code>ssh svn.ufal.mff.cuni.cz |
| /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 |
| |
| <code>svnadmin dump /net/work/public/SVN/interset > interset.svndump | <code>svnadmin dump /net/work/public/SVN/interset > interset.svndump |
| scp interset.svndump svn.ms.mff.cuni.cz:/home/zeman | scp interset.svndump svn.ufal.mff.cuni.cz:/home/zeman |
| rm interset.svndump | rm interset.svndump |
| ssh svn.ms.mff.cuni.cz | ssh svn.ufal.mff.cuni.cz |
| svnadmin load /home/svn/repos/interset < interset.svndump | svnadmin load /home/svn/repos/interset < interset.svndump |
| rm interset.svndump | rm interset.svndump |
| cd .. | cd .. |
| mv interset interset.localwc | mv interset interset.localwc |
| svn --username zeman checkout https://svn.ms.mff.cuni.cz/svn/interset/trunk | svn --username zeman checkout https://svn.ufal.mff.cuni.cz/svn/interset/trunk |
| mv trunk interset | mv trunk interset |
| cd interset</code> | cd interset</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. |
| |
| <code>scp biblio.svndump svn.ms.mff.cuni.cz:/home/zeman | <code>scp biblio.svndump svn.ufal.mff.cuni.cz:/home/zeman |
| rm biblio.svndump | rm biblio.svndump |
| ssh svn.ms.mff.cuni.cz | ssh svn.ufal.mff.cuni.cz |
| svnadmin load /home/svn/repos/biblio < biblio.svndump | svnadmin load /home/svn/repos/biblio < biblio.svndump |
| rm biblio.svndump</code> | rm biblio.svndump</code> |
| 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. | 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 | <code>svn merge -c -303 https://svn.ufal.mff.cuni.cz/svn/$REPOSITORY/$PROJECT/trunk |
| # alternatively: svn merge -r 303:302 https://svn.ms.mff.cuni.cz/svn/$REPOSITORY/$PROJECT/trunk | # alternatively: svn merge -r 303:302 https://svn.ufal.mff.cuni.cz/svn/$REPOSITORY/$PROJECT/trunk |
| svn status | svn status |
| svn diff | svn diff |
| |
| ===== 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.ufal.mff.cuni.cz/svn/statmt/trunk': authorization failed: Could not authenticate to server: rejected Basic challenge (https://svn.ufal.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: |