Mercurial

Zoals is te lezen heb ik gekozen om Mercurial te gaan gebruiken als versiebeheer systeem voor eigen code.
Na installatie had ik al vrij snel een nieuwe repository gemaakt met daarin m’n code. Je start gewoon de command prompt op, gaat naar de map welke in het versiebeheer systeem moet komen. Tikt het volgende in:

hg init
hg add
hg com -m "Initial commit"

3 commando’s, dat is alles wat gedaan moet worden om je code in een nieuwe repository te plaatsen. Een redelijk goede guide is hier te vinden: https://mercurial.selenic.com/guide/

Omdat ik niet heel bekend was/ben met DVCS systemen heb ik eerst het een en ander ingelezen over de werking en wat de bedoeling precies is. Voor Mercurial is er een super goede tutorial geschreven door Joel Spolsky op https://hginit.com/. Hier heb ik veel informative vandaan gehaald over hoe ik moet werken met Mercurial.

Ook het hosten van je code op een server is enorm eenvoudig. In je repository tik je het volgende hg serve

Zodra dat is gedaan zal je repository gelijk op poort 8000 zijn te bereiken, dus bijvoorbeeld https://localhost:8000/. Hier was ik heel blij mee.

Toen ik klaar was om m’n repository te vullen met m’n projecten kwam ik toch een beetje bedrogen uit. Blijkbaar is het niet de bedoeling om verschillende solutions, verspreid over meerdere locaties op je systeem, in 1 repository op te slaan. Voor iedere solution is het dus van belang om een nieuwe repository te maken wanneer deze niet op 1 locatie staan. Dit gooide een beetje roet in het eten, aangezien ik had verwacht dat dit wel de bedoeling was.
Gelukkig kun je met het hg serve commando via een argument opgeven op welke poort deze dient te draaien, waardoor het mogelijk is om meer dan een repository te hosten op je systeem. Dit vond ik zelf niet een enorm fijne oplossing, maar als het niet anders kan, dan is het zo. Als hier geen alternatief voor zou zijn geweest, dan was ik waarschijnlijk weer overgestapt op een ander systeem. Gelukkig heeft Jeremy Skinner op z’n weblog gepost hoe je meerdere repositories op je Windows Server kan hosten (https://www.jeremyskinner.co.uk/mercurial-on-iis7/).
Deze tutorial heb ik dan ook stap voor stap gevolgd. Enige punt waar ik tegen aanliep was dat hij schrijft over de hgwebdir.cgi, maar die kon ik niet vinden in mijn versie van Mercurial, hier heb ik dan ook hgweb.cgi gebruikt. Deze lijkt ook prima te werken. Door het volgen van deze hele visuele tutorial heb ik nu een werkende Mercurial webserver met al m’n solutions in verschillende repositories.

Wel heb ik de kleine mini projectjes in 1 repository geplaatst, omdat het anders wel een rommeltje wordt. Of dit handig is, dat zal moeten blijken.
Iets waar ik met SVN last van had, was dat de bin, obj en Resharper mappen ook allemaal in het versiebeheer komen te staan. Om er zeker van te zijn dat me dit niet weer zou overkomen heb ik nu eerst gezocht hoe ik dat soort bestanden kon excluden. Dit kan met een bestandje met de naam .htignore.

De huidige inhoud van m’n .htignore bestand ziet er als volgt uit:

# use glob syntax
syntax: glob
# Ignore these directories
bin/
CVS/
[Dd]ebug*/
obj/
[Rr]elease*/
_ReSharper*/
# Ignore these files
[Bb]uild[Ll]og.*
*~
.#*
*.bak
*.ncb
*.obj
*.pdb
*.suo
*.swp
*.user
*.trx

De betekenis van alle regels is me nog niet helemaal duidelijk, maar weet wel dat het werkt. Alleen maar m’n belangrijke code staat in Mercurial en niet de onnodige binaries.
Een tool die het beheer van je repositories een beetje vereenvoudigd is TortoiseHg (https://tortoisehg.bitbucket.org/). Een van de vele Tortoise varianten op de markt en werkt bijna hetzelfde als de rest.

Je krijgt weer verschillende opties in het context menu van de Verkenner en kunt hiermee de belangrijkste functies van Mercurial aanroepen. Zoals altijd, een enorm handige extensie.

Omdat ik niet altijd via de Verkenner wil werken, heb ik ook even gezocht naar een goede Visual Studio 2010 integratie met Mercurial. Via de handige extension gallery had ik al vrij snel een goede optie. In eerste instantie heb ik gekozen voor de Mercurial Toolbar Hiermee krijg je een nieuwe toolbar in VS2010, waarmee je de meest basale onderdelen kunt uitvoeren.

Ook is er een kleine prompt regel waarmee je waarschijnlijk hg-commando’s kunt uitvoeren. Dit heb ik nog niet uitgeprobeerd.

Ook had ik kunnen kiezen voor HgSccPackage of VisualHG. Wellicht dat ik deze op een later tijdstip nog installeer. Momenteel ben ik denk ik wel tevreden met de huidige setup.


Share