[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

Přechod na nové úložiště Redmine/git

ÚFALí server Redmine je na adrese https://redmine.ms.mff.cuni.cz/projects. Ondra na něj v říjnu 2012 přestěhoval podstatnou část repozitáře StatMT z svn/trac (https://svn.ms.mff.cuni.cz/trac/statmt). Konkrétně jsou tu teď projekty ufal-smt-playground a eman (na něj se z playgroundu odkazuje jako na podmodul).

Pro vybalení hřiště Ondra doporučil studentům následující příkaz. Předpokládám, že studenti, neznajíce Ondrovo heslo, to museli volat bez toho ondrej.bojar@ na začátku a získali nějaký read-only přístup. A já na rozdíl od nich můžu použít daniel.zeman a získám přístup i pro zápis.

git clone https://ondrej.bojar@redmine.ms.mff.cuni.cz/ufal-smt-playground.git jmeno_pracovni_kopie
# Raději pracovat na 64bitovém stroji kvůli kompilacím.
ssh sol12
cd /net/cluster/TMP/zeman
git clone https://daniel.zeman@redmine.ms.mff.cuni.cz/ufal-smt-playground.git redplayground

Eman jako podmodul se asi neaktualizuje sám. Nějakou verzi k nějakému datu zřejmě získám automaticky s hřištěm, ale pokud chci mít jistotu, že budu mít ten aktuální, můžu/měl bych? udělat

cd redplayground
git submodule init
git submodule update

Další Ondrova doporučení (ale to druhé, vizualizace commitů, bude asi fungovat jen v ixech):

git svn crashcourse
gitk -a

Dokumentace ke gitu je například tady.

Strategie přechodu

# Zkusit si, zda lze repozitář git jen tak kopírovat a on nadále funguje.
ssh sol12
cd /net/cluster/TMP/zeman
cp -R redplayground gitplayground
cd gitplayground
# Sesynchronizovat můj git. Tím dostanu všechny revize až do současnosti.
git pull origin
# Vrátit se mezi commity přenesené z svn k poslednímu mému.
# Označit to jako novou větev dansvn.
git checkout -b dansvn dfcb57a2
# Někde vedle si vyrobit čistý checkout nejnovější verze v svn, bez těch neverzovaných bumbrlíčků.
cd ..
svn --username zeman checkout https://svn.ms.mff.cuni.cz/svn/statmt/trunk cleansvnplayground
# Zkopírovat poslední verze souborů v relevantních složkách z svn do gitu.
cd cleansvnplayground
cp -R playground ../gitplayground
cp -R scripts ../gitplayground
cp -R src ../gitplayground
cd ../gitplayground
# Odstranit pomocné složky .svn ze všech složek ve zkopírovaném stromu.
find -type d -regex '.*\.svn' -print -exec rm -rf '{}' \;
# Podívat se, které soubory se změnily a které mám teď navíc.
# Těch navíc se Ondřej při stěhování zbavil a já je chci nejspíš taky ručně smazat.
# Výjimkou jsou soubory, které jsem si do svn přidal sám a chci je zachovat. Ty nemazat, svezou se s git add.
git status
rm ...
# Označit všechny změny v existujících souborech v svn, + případně přidané nesmazané soubory, ke commitu.
git add .
# Zapamatovat si změny a uložit je v místním repozitáři.
git commit -m 'Danovy změny v svn po odštěpení git verze.'
# Vyrobit protějšek nové větve i na serveru.
git push origin dansvn
# Slít změny z obou větví. Součástí musí být vyřešení konfliktů.
# V tomto případě byl navíc soubor scripts/eman vyčleněn do samostatného repozitáře git, to ošetřil Aleš.
# Po vyřešení konfliktů promítnout změnu na server.
git checkout master
git merge dansvn
git push origin master
# Po slití už větev dansvn nepotřebujeme, smazat u nás i na serveru.
# (Neměníme tím rozvětvenou historii, pouze zapomínáme pojmenovanou záložku, která do ní ukazuje.)
git branch -d dansvn
git push origin :dansvn
# Naroubovat nové hřiště verzované gitem na to staré, které navíc obsahuje složky s pokusy.
cd ../statmt/playground
# Chceme zachovat neverzované složky s experimenty. Jejich název začíná "s.".
# Vše ostatní je buď verzované, nebo jsou to pomocné soubory, které lze vyhodit.
for i in `ls -A1 | grep -vP '^s\.'` ; do rm -rf $i ; done
cd ..
rm -rf .svn addicter addicter-experiments joshua-scripts papers perl projects scripts src
cp -R ../gitplayground/.git ../gitplayground/scripts ../gitplayground/src ../gitplayground/.git* .
cd playground
cp -R ../../gitplayground/playground/* .
cp ../../gitplayground/.gitignore .
cp ../../gitplayground/.vimrc .
cd ..
git status
# Vybalit Emana, je teď v samostatném repozitáři.
cd /home/zeman/nastroje
git clone https://daniel.zeman@redmine.ms.mff.cuni.cz/eman.git
# Nakonec si dát do .bashrc, resp. u mne do path.pl cestu
# /home/zeman/nastroje/eman/bin
vim ~/bin/path.pl

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