Export subversion verschillen tussen twee revisions voor upload

Subversion (svn) is één van de meest wijd verspreide versioning systemen voor source code, en terecht want het is erg flexibel en praktisch opgezet. Zonder dat je verplicht wordt vaste structuren aan te houden in je repositories, en door eenvoudig combinaties van repositories op te zetten m.b.v. svn:externals kan je eigenlijk heel veel kanten op als het gaat om package en library beheer binnen een in development of onderhoud zijnd project. Hier kan ik nog wel eens wat tips voor op een rijtje zetten als daar behoefte aan is.

Ik vroeg me al een hele tijd af of er voor Subversion ook iets beschikbaar was om een soort patch te maken tussen twee verschillende revisions die als een “overwrite” mogen fungeren, wat ongelooflijk handig zou zijn voor het updaten van een FTP-locatie, waar je geen beschikking hebt over svn metadata of zelfs een svn client.

Na afgelopen week toch maar weer eens gezocht te hebben, kwam ik een python scriptje tegen wat in deze behoefte voorziet, onder de naam svnchanged_export.py. Met dit script kun je in een shell op eenvoudige wijze de gewijzigde bestanden uit een repository vissen en die uploaden. Hoewel de deletes natuurlijk niet direct gedaan kunnen worden op basis van deze informatie, zou dit een aardig begin kunnen zijn van een mash-up met een python ftp-client die de wijzigingen direct doorsluist naar een FTP-locatie.

Je hebt op de bak waar je script gaat draaien een python 2.5 en pysvn installatie nodig, allebei ongetwijfeld beschikbaar in je favoriete packaging systeem. (via apt en FreeBSD ports in ieder geval geen probleem). Op windows heb ik het zelf niet uitgeprobeerd. Let er op dat je weet welke revision je online hebt staan (hou dit bijvoorbeeld bij in een hidden file in de root van je website, of met behulp van consequente tagging waarbij de laatste live revision altijd een tag heeft).

Een aanrader in ieder geval, voor iedereen die niet afhankelijk wil zijn van (vaak trage of zelfs buggy) file-date of filesize comparisons in FTP clients 🙂

PS: Python is sowieso altijd erg veelbelovend als het op handige scripts gaat: de source code is over het algemeen goed te lezen i.t.t. bijvoorbeeld Perl scripts en er is een gigantische codebase beschikbaar voor allerlei toepassingen die ook als losse (zowel source als binary) packages gedistribueerd worden.

Originele post op drm.tweakblogs.net

This entry was posted in Development and tagged , , . Bookmark the permalink. Comments are closed, but you can leave a trackback: Trackback URL.