Archív
Subversion a hook skripty pod Windows
Pokud pracujete s TSVN nebo přímo s repozitory pod Windows časem přijdete na to, že potřebujete občas nějakou operaci před commitem nebo commitem k tomu slouží hook skripty. Hook je program, který je spuštěn nějakým triggrem, každé repozitory obsahuje předdefinované skripty. Nutnou podmínkou je mít samozřejmě nainstalovaný i Subversion ne jenom TSVN.
Adresář repozitory: \path-to-repozitory\project-name
[conf] [dav] [hooks] [locks] format README.TXT
v adresáři hooks jsou skripty:
post-commit.tmpl
post-lock.tmpl
post-revprop-change.tmpl
post-unlock.tmpl
pre-commit.tmpl
pre-lock.tmpl
pre-revprop-change.tmpl
pre-unlock.tmpl
start-commit.tmpl
tyto skripty vám určují možné spouštěče, kdy se který skript vykoná. Já osobně používám jen post-commit a to tak, že jsem vytvořil post-commit.bat, který obsahuje tento kód, který přegeneruje changelog.
"c:\Program Files\Subversion\bin\svn.exe" log -v --xml svn://localhost/rep_testing/start_page/trunk >c:\rootwww\wc_testing\startpage_changelog.xml
ještě mě napadlo, že můžete např. udělat automatický export pro deploy na jiný stroj:
"c:\Program Files\Subversion\bin\svn.exe" export --force file:///rootwww/rep_cvut/akce/trunk c:/tmp/export/akce
a k němu vygenerovat příslušný textový changelog:
"c:\Program Files\Subversion\bin\svn.exe" log file:///rootwww/rep_cvut/akce/trunk >c:/tmp/export/akce/changelog.txt
Ty skripty samozřejmě mohou dělat mnohem více.
Generovat můžete diff soubory pro jednotlivé revize a někam je ukládat:
svn diff path-to-working-copy -c revision_number --no-diff-deleted >diff_revision_number.txt
Pokud potřebujete např. provést update a potom poslat mail doporučuju článek SVN post-commit for Windows, kde autor ve stejné době jako já řešil něco obdobného i když z jiného důvodu.
Commit monitor pro Subversion (SVN)
Stefan Küng vytvořil tuto šikovnou utilitu, která monituruje commity na repozitory, kde si nastavíte. Je to velmi užitečné pokud pracujete na více projektech a krásně se vám to zobrazí v taskbaru.
Náhled obrazovky monitoru.
Zobrazní v taskbaru potom co je detekován nový commit.
Nastavení repozitory, Commit Monitor (CM) používá SVNParentPath directivu z Apache a také dovoluje nastavit repozitory pomocí svnrobots.txt, kde můžete určit jak často se CM může připojovat k repozitory.
Takto vypádá svnrobots.txt, hledá se automaticky v web rootu, v repozitory root a trunk. První nalezený se použije.
# this is an example svnrobots.txt file
#
# the checkinterval line sets the minimum interval in minutes between
# update checks:
checkinterval = 90
# the disallowautodiff line if it's present forces the check apps
# to *not* do automatic diffs:
disallowautodiff
Doufám, že v další verzi přidá možnost spuštění po commitu nějakého batch souboru. Užil bych to pro aktualizaci logů ze SVN, které provádím zatím přes batch file.
TortoiseSVN 1.5.0-beta1
V nové verzi jsou toto hlavní novinky:
- Merge Tracking
- Cyrus SASL support for svnserve
- Sparse checkouts
- Changelist support
- Log message caching
- Repository browser
- Revision graph
- Client side hook scripts
- TortoiseMerge
Pro Cyrus SASL support for svnserve a Merge tracking bude potřeba i vlastní Subversion 1.5 pokud ho používate a nemáte TSVN zcela samostatně. Bude možný také opakovaný merge (Repeated Merge) a rozšíří se informace o každé Merge.
Sparse checkouts umožní checkout jen na část repozitory, což bude u velkých projektů hodně užitečné. K dipozici budou parametry podle kterých se provede volba.
- Fully recursive
- Immediate children, including folders
- Only file children
- Only this item
Changelist support mi docela chyběl, pokud pracujete na více problémech součastně a chcete je při commitu rozdělit do více části, které spolu souvisí, aby se dalo zpětně vysledovat, která změna patří ke které.
TSVN bude v nové verzi lokálně uchovávat kopii zpráv (Log message caching), u vetších repository dojde i urychlení načítání.
Repository browser starý
Repository browser v nové verzi, přibyl levý panel a umožňuje drag a drop operace.
![]()
Další věci mi nepřijdou tak důležité, vylepšený je TortoiseMerge, práce s konci řádek včetně MAC OS, Undo funkce se také hodí a možnost přímé editace není k zahození.
Revision Graph by měl vypadat lépe a mít nové možnosti, zatím jsem to netestoval. Jako dobé vylepšení jsou Client-side hook scripts. Ty umožnují na straně klienta provádět operace Start, Pre a Post u Commit a Update.
Ještě bych chtěl upozorňit na to, že verze 1.5 provádí upgrade formátu Working Copy, tak pozor při testování a nepřecházejte ukvapeně.
Subversion pod Windows
Pokud jste vývojáři a používáte Subversion (SVN) pod Windows máte několik možností jak to dělat. Donedávna jsem používal jen klienta buď Subclipse nebo Tortoisesvn (TSVN) a tím jsem to řešil. Buď jsem se vzdáleně připojil na SVN server nebo jsem používal lokální repozitory, které umí TSVN vytvořit a zpracovat. Pro vývoj je vcelku jedno které řešení používáte, pokud máte stálé připojení k internetu, musíte používat stejně centrální repozitory. Pro některé moje projekty, ale vlastní repozitory server nemám a hostuji to jen lokálně a celé repozitory jen zálohuji jako soubory.
Pár let co používám SVN to bylo v pořádku, pro vývoj to stačí. Pokud jsem používal Linux, tak to bylo o to jednoduší, měl jsem tak plný SVN server (1.4.6 aktuálně) a lokální nebo vzdálená administrace je totéž. Podobně se můžete zachovat i na Windows pokud k tomu máte motivaci, kterou jsem donedávna neměl. K instalaci na windows dopoučiji balíček TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi a aby vám fungoval server jako service je dobré to doplňit o svnservice-1.0.0.msi. Po jednoduché instalaci těchto balíčků a nastavení SVNROOT můžete ve svém klientovi přistupovat přes svn protokol a používat všechny běžné příkazy.
Já jsem měl v motivaci ve vytváření changelogu pro deploy pomoci svn.exe log –xml svn://localhost/rep_name což přes klienta TSVN nějak rozumně nešlo a při exportu přes schránku jsem měl problém s exportem češtiny ve výsledném dokumentu. Takto to jednoduše obejdu a můj jednoduchý skript udělá pro každý projekt aktuální changelog.
Screencast snadno a rychle
Řešil jsem minulý rok v příspěvku o Eclipse jak udělat screencast, tehdy jsem ho dělal pomocí Wink, výstup je ve Flash a dá se to celkem použít. Ale nebyl jsem plně spokojený s kvalitou výstupu a problémy se ukazují zvláště pokud máte vetší monitor (např. 1680×1050) a chcete aby to bylo vidět všechno a dalo se to přitom pohížet z webu. Ideální HD streaming, ale to není každému dostupné. Proto spíše preferuji stažení takového screencastu k sobě a puštění v přehrávači MPlayer, VLC, Quicktime apod. Na semináři od Apple jsem viděl jak takový jejich podcast (ipod + broadcast) dělají. Tak jsem si trochu oprášil znalosti a udělal jsou ho v podobné kvalitě i na Windows.
Použil jsem tyto 2 nástroje, které jsou zdarma k dispozici pro windows:
Pro zachytávání můžete samozřejmě použít i něco jiného než Windows Media Encoder, např. Virtualdub. Media Coder jsem použil potom pro změnu rozlišení a konverzi do H.264 (mp4).
Pokud by byl zájem udělám i návod jak na to, výsledek mi přišel kvalitnější než výsledek z Wink a pro pravidelné interní školení kam jsem pořízený materiál použil mi to přišlo vhodnější než Wink. Pokud máte někdo další zkušenosti rád se je dozvím.
Nejnovější komentáře