svn
Obsah
SVN: subversion na nfsen
základy
- Pojmy
- repozitář - adresář na serveru, ke kterému je připojena databáze změn (správa verzí) a nastavena práva uživatelů
- pracovní kopie - lokálně uložená kopie adresářů/souborů a lokální databáze změn
- databáze změn se ukládá jako adresář .svn do každého adresáře
- kromě změn obsahuje i URL vzdáleného repozitáře a použité uživatelské jméno, takže jej už není nutné uvádět
- pro používání svn je zapotřebí nejprve nainstalovat svn. Na systému Linux/Debian lze provést následovně:
apt-get install subversion
- základní syntax svn klienta je:
svn command [options] [args]
- nejpoužívanější typy commands:
- add - přidá soubory/adresáře pod lokální správu verzí
- import - přidá nový soubor/strom do vzdáleného ropozitáře
- delete
- pokud se zadá cesta - odstraní soubory/adresáře z lokální správy verzí
- pokud se zadá url - odstraní soubory/adresáře ze vzdáleného repozitáře
- copy
- pokud se zadají cesty - zkopíruje soubory/adresáře v lokální správě verzí
- pokud se zadají url - zkopíruje soubory/adresáře ve vzdáleném repozitáři
- move - ekvivaletní k copy + delete
- commit
- odešle změny pracovní kopie do vzdáleného repozitáře, tj synchronizace lokální → vzdálený
- pokud se provedou nějaké lokální změny a někdo jiný provede commit stejného souboru, vznikne při našem pokusu o provedení commitu konflikt.
- update
- přenese změny ze vzdáleného repozitáře do lokální pracovní kopie, synchronizace vzdálený → lokální
- checkout - stáhne soubor/strom ze vzdáleného repozitáře, vytvoří lokální databázi pro správu verzí
- více detailních informací na svn help [command]
- repozitář nfsen je umístěn na url: https://projekty.ics.muni.cz/nfsen/svn/
- uživatel a heslo je stejné jako pro přihlášení do tracu
přidání nového projektu do repozitáře
- přidání můžeme provést dvěma způsoby:
- a) provedeme import a následně checkout
- b) provedeme checkout a následně add
přidání pomocí import a checkout
- na lokálním disku si připravíme adresářovou strukturu projektu, kterou chceme umístit do repositáře
- spustíme příkaz:
svn -m "My first import" --username <UCO> import <PROJECT_ADDR> https://projekty.ics.muni.cz/nfsen/svn/<MY_PROJECT>
- parametry:
- -m - obsahuje zprávu popisujicí provedené změny, pokud není zadána, otevře se default textový editor pro zadání
- –username - obsahuje uživatelské jméno odpovídající loginu do trac
- import - příkaz, který má svn provést
- !https://... - adresa repozitáře zakončena novým adresářem pro vkládaný projekt
- nový adresář <MY_PROJECT> by měl být tvaru DP-prijmeni nebo BP-prijmeni
- soubory jsou importovány do repozitáře, ale originální strom neni pod správou verzí, musíme navíc provést checkout
svn --username <UCO> checkout https://projekty.ics.muni.cz/nfsen/svn/<MY_PROJECT>
- pokud provádíme checkout do stejného adresáře, objeví se nám varování:
Failed to add file 'test/a': an unversioned file of the same name already exists
- chybu můžeme ignorovat pomocí parametru –force, ale opatrně :)
svn --username <UCO> checkout --force https://projekty.ics.muni.cz/nfsen/svn/<MY_PROJECT>
přidání pomocí checkout a add
- abychom nemuseli stahovat všechny existujíci soubory v repozitáři, vytvoříme si v root repozitáře nejprve svůj prázdný adresář
svn -m "preparing directory" --username <UCO> mkdir https://projekty.ics.muni.cz/nfsen/svn/<MY_PROJECT>
- otevřeme adresář, kde chceme mít pracovní kopii a provedeme checkout:
cd /tmp/ svn --username <UCO> checkout https://projekty.ics.muni.cz/nfsen/svn/<MY_PROJECT>
- nyní je vytvořen adresář /tmp/<MY_PROJECT>, který je pod správou verzí
- nakopírujeme do něj nachystanou strukturu projektu a zavoláme add
cp -r <PROJECT_SOURCE_DIR>/* /tmp/<MY_PROJECT>/ svn add /tmp/<MY_PROJECT>/*
- nyní je lokálně vše v pořádku a potřebujeme změny odeslat na server:
svn -m "My first adding files" commit /tmp/<MY_PROJECT>
commit - odeslání změn pracovní kopie do repozitáře
- v pracovní kopii mohou nastat následující změny:
- a) přidání nového souboru/adresáře
- b) smazání souboru/adresáře
- c) modifikace souboru
- před provedením commitu je třeba aktualizovat lokální správu verzí
- lokální změny adresářové struktury zobrzíme pomocí
svn status <MY_PROJECT>
- ad a)
- na všechny nové soubory/adresáře které chceme přidat do repozitáře provedeme svn add
svn add <MY_PROJECT>/newfile svn add <MY_PROJECT>/newdirectory svn add <MY_PROJECT>/new_file_or_dir_1 .. <MY_PROJECT>/new_file_or_dir_X
- ad b)
- pokud jsme soubor ještě nesmazali, provedeme svn delete na požadované lokální soubory/adresáře
svn delete <MY_PROJECT>/file_to_remove svn delete <MY_PROJECT>/dir_to_remove svn delete <MY_PROJECT>/new_file_or_dir_1 .. <MY_PROJECT>/new_file_or_dir_X
- pokud jsme soubor už smazali, vymažeme jej přimo na repozitáři (automatický commit)
svn -m "delete file example" delete https://projekty.ics.muni.cz/nfsen/svn/<MY_PROJECT>/file_to_remove
- ad c)
- modifikované soubory jsou rozpoznané automaticky a nemusíme je nikterak označovat
- vlastní commit provedeme příkazem
svn -m "my first changes example" commit <MY_PROJECT>
delete
svn -m "delete file example" --username 143248 delete https://projekty.ics.muni.cz/nfsen/svn/tools svn -m "structure changes" --username 143248 delete https://projekty.ics.muni.cz/nfsen/svn/src https://projekty.ics.muni.cz/nfsen/svn/doc
move
http://svnbook.red-bean.com/en/1.0/re18.html
- je to vlastne delete a add
checkout
svn --username 143248 co https://projekty.ics.muni.cz/nfsen/svn/DP-bariencik djbuldog@Pharaon:~/skola/Mgr 4.semestr/SDIPR diplomka$ svn --username 143248 co https://projekty.ics.muni.cz/nfsen/svn/DP-bariencik svn: Failed to add directory 'DP-bariencik/tools': an unversioned directory of the same name already exists
djbuldog@Pharaon:~/skola/Mgr 4.semestr/SDIPR diplomka$ svn --username 143248 co https://projekty.ics.muni.cz/nfsen/svn/DP-bariencik Checked out revision 26.
* jak checkoutnotu urcitou cestu do urciteho dir? :)
update
mkdir
commit
djbuldog@Pharaon:~/Desktop/SDIPR diplomka/DP-bariencik/src$ svn commit -m "asus_exe bash script - replace dataCreator.c by hexdump" asusexe Sending asusexe/asus_exe Transmitting file data . Committed revision 27.
- commitoval modifikovaný soubor, ale neodstranil smazané :(
- soubory nesmi byt smazany normal.. ale pres svn delete :)
- tedy svn delete dataCreator.c dataCreator
- a pak svn commit -m „mazu mazu“
- když neuvedu parametr -m otevře se default textový editor pro vytvoření message
- pokud jsem je smazal uz normalne, tak muzu pouzit CO ke stazeni aktualniho :)
- commitoval jsem nějaké modifikované a nové soubory :) nové soubory se nepřidaly… musí se provést svn add
svn.txt · Poslední úprava: autor: 127.0.0.1
