Results 1 to 11 of 11

Thread: Versiebeheer 2: Mercurial in je eentje

  1. #1

    Versiebeheer 2: Mercurial in je eentje

    Lees ook Versiebeheer 1: Introductie
    En de reacties op deze serie

    Inleiding
    Mercurial is een populair Distributed versiebeheersysteem. Een ander systeem, Git, is nog net wat populairder. Het heeft schijnbaar iets meer mogelijkheden dan Mercurial, maar schijnt ook wat minder gebruiksvriendelijk te zijn. Ik heb weinig ervaring met Git, en heb aan Mercurial meer dan genoeg. Ik gebruik daarom Mercurial in dit artikel, al zullen veel van de aanwijzingen ook opgaan voor Git, en zelfs grotendeels voor de centrale versiebeheersystemen.

    Eén persoon?

    Ik begin met ‘Mercurial voor één persoon’. Het is namelijk heel makkelijk om gewoon in je eentje te beginnen met Mercurial. Je kunt dan al je wijzigingen al opslaan in een versiebeheersysteem, zonder dat je een server nodig hebt waar je je wijzigingen heen ‘pusht’. Je zult al snel zien hoe makkelijk het is, en wat een veilig gevoel het geeft dat je specifieke wijzigingen kunt benoemen en terugvinden.

    Om later met meerdere mensen in een repository te gaan werken, verandert er niets; je hebt alleen een paar extra knopjes nodig. Daar kom ik in een volgend artikel op terug.
    Last edited by GolezTrol; 06-Dec-12 at 11:43.
    1+1=b

  2. #2

    Installatie

    Installatie
    Mercurial heeft van zichzelf een command line interface, maar er is ook een shell interface, TortoiseHg, die geïntegreerd is met Windows Explorer. Voor SVN is er overigens ook een variant van de Tortoise shell.

    Download TortoiseHg samen met Mercurial:

    http://mercurial.selenic.com/

    Wil je toch echt alleen de command line interface, download dan Mercurial los:

    http://mercurial.selenic.com/downloads/

    Voor wie niet zo behendig is met de command prompt, is de Tortoise shell erg praktisch. Ik zou deze dus zeker mee-installeren.

    Doorloop de installatie. Klik er gewoon doorheen, het is niet nodig om opties aan of uit te zetten, behalve misschien ‘Translations’, wat je zo’n 10MB bespaart.
    Last edited by GolezTrol; 19-Sep-12 at 10:55.
    1+1=b

  3. #3

    Command line

    Command line
    Zoals gezegd kun je Mercurial helemaal bedienen via de command line. Ik ga er echter van uit dat je meestal de Tortoise shell zult gebruiken die in Windows is geïnstalleerd. Ik zal de belangrijkste commando's wel benoemen, maar ga niet in op alle opties. Deze zijn gelukkig wel gedocumenteerd.

    Een lijst van alle commando's kun je opvragen met:

    Code:
    hg help
    Meer details over een specifiek commando krijg je met:

    Code:
    hg help commando
    Hg?
    Hg is het scheikundige element 'Kwik' ofwel 'Mercury'.
    Last edited by GolezTrol; 19-Sep-12 at 10:55.
    1+1=b

  4. #4

    Repository opzetten

    Repository opzetten
    Command line

    Je kunt op de commandline een repository maken. Wel zo makkelijk, zeker als je dat op een server wilt doen waarop je geen extra’s in je Explorer wilt installeren. Ga eerst naar de juiste directory en initialiseer daar een Mercurial repository:

    Code:
    cd C:\Dev\Delphi\NLDelphi\Voorbeeld
    
    hg init
    En dat is alles!

    Tortoise

    In plaats van de command line, kan het ook door te rechts-klikken op de projectmap.

    Als de installatie goed is gegaan, en je Tortoise hebt geintegreerd met Windows, zie je hierin een nieuw submenu met de naam TortoiseHg.
    Kies voor voor TortoiseHg > Create Repository Here.

    Click image for larger version. 

Name:	CreateRepo-01-menu.png 
Views:	360 
Size:	84.4 KB 
ID:	6034
    Context menu

    Daarna hoef je alleen nog op 'Create' te klikken:

    Click image for larger version. 

Name:	CreateRepo-02-Init.png 
Views:	326 
Size:	14.4 KB 
ID:	6035
    Create parameters

    En dat is alles!

    Wanneer je nu de inhoud van deze map bekijkt, zie je hier naast de eventuele projectbestanden ook een directory genaamd .hg staan. In deze directory komt straks alle meta-data van het project te staan, met de historische informatie van alle bestanden.

    Wanneer je dus je projectmap backupt (wat je waarschijnlijk al deed), gaat impliciet deze map ook mee, en daarmee je hele projectgeschiedenis.
    Last edited by GolezTrol; 19-Sep-12 at 10:55.
    1+1=b

  5. #5

    Bestanden toevoegen en committen

    Bestanden toevoegen en committen
    Let op: lees ook de volgende paragraaf, over het uitsluiten van bepaalde bestandstypen, voordat je deze commando's probeert in je projectdirectory.

    Op dit moment staat er nog niets in de repository. Zelfs als er al source in de directory staat, is deze nog niet aan de repository toegevoegd. Om dat voor elkaar te krijgen, moet je bestanden eerst toevoegen en committen.

    Command line

    Om te kijken welke bestanden er klaar staan gebruik je het commando

    Code:
    hg status [options] [files]
    Zonder opties geeft hg status de status weer van alle gewijzigde files. Als er geen output is, is je werkkopie up to date.

    Bestanden toevoegen gaat met:

    Code:
    hg add [options] [files]
    Committen van wijzigingen en nieuwe bestanden doe je met:

    Code:
    hg commit [options] [files]
    Tortoise

    Dit kan een stuk makkelijker via de verkenner. Rechts-klik op de folder en kies in het context-menu voor Hg Commit....

    Click image for larger version. 

Name:	Commit-02-teveel.png 
Views:	331 
Size:	71.8 KB 
ID:	6036
    Het commit-scherm

    Bestanden kiezen

    In het scherm dat je dan ziet, zie je alle bestanden die klaar staan om te committen. Je kunt daar ook eenvoudig een deel van deze bestanden aanvinken of juist uitvinken. Ook nieuwe bestanden kun je hier aanvinken, om ze automatisch mee te laten toevoegen.

    Notitie (Commit Message)

    Bij het committen kun je ook een notitie typen, waarmee je later deze commit kunt terugvinden. Het is verstandig om bij elke commit een duidelijke omschrijving te typen, met uitleg van wat je hebt gewijzigd en waarom. Het kost een paar tellen, maar je gaat jezelf dankbaar zijn als je dit nauwkeurig doet.
    Last edited by GolezTrol; 19-Sep-12 at 10:55.
    1+1=b

  6. #6

    Bestanden uitsluiten

    Bestanden uitsluiten

    Niet alle bestanden wil je opnemen in versiebeheer. Je wilt in ieder geval de source (.pas, .dfm, .dpr, .dproj), maar bijvoorbeeld niet de bestanden die door de compiler worden gemaakt (.dcu, .map, .exe). Om dit op te lossen, kun je een lijst maken van bestanden die genegeerd moeten worden. Deze lijst wordt opgeslagen in het bestand .hgignore, dat in de root van je source folder staat, waar ook de directory .hg staat.

    In dit bestand kun je een lijst uitzonderingen maken. Die uitzonderingen kun je schrijven in verschillende syntaxen, glob en regex. regex betekent dat de bestandsnamen tegen een regular expression getoetst worden. glob duidt op een wat eenvoudigere wildcard-notatie. Een .ignore-bestand voor een Delphi-repository kan er zo uitzien:

    Code:
    syntax: glob
    *.~*
    *.dcu
    *.ddp
    *.exe
    Afbeeldingen\*
    Debug\*
    *.map
    Zo blokkeer je een aantal bestanden die je niet hoeft te committen. In dit geval blokkeer ik ook de hele inhoud van de mappen Afbeeldingen en Debug. Het Commit-scherm blijft nu lekker overzichtelijk.

    .hgignore maken.

    Als je zelf een respository maakt via Tortoise Hg, heb je de mogelijkheid om direct een .hgignore-file aan te maken. Heb je dit uitgezet? Geen probleem.
    Een bestand maken met de naam .hgignore lukt niet zomaar in de verkenner. Die denkt namelijk dat je een bestand probeert te maken zonder naam. Maar wanneer je in het Commit-scherm op een bestand rechts-klikt, krijg je een context-menu waarin je 'Ignore' kunt kiezen. Je komt dan in een editor waarin je één voor één uitzonderingen kunt toevoegen, of het hele bestand kunt wijzigen. Alternatief: Notepad++ staat je wel toe om een bestand op te slaan als .hgignore. Als het bestand eenmaal bestaat kun je het wel wijzigen met kladblok.

    Name:  Commit-02b-teveel.png
Views: 1169
Size:  71.7 KB
    'Ignore' in het context menu
    Last edited by GolezTrol; 19-Sep-12 at 10:55.
    1+1=b

  7. #7

    De Workbench

    De Workbench

    De workbench is letterlijk wat het zegt: De werkbank waarop je alle handelingen op je repository verricht. Je opent de Hg Workbench via de verkenner. Rechts-klik op de map waarin je de repository hebt gemaakt.
    Het eerste wat je ziet, is een commit-scherm in een iets andere vorm. Je kunt bestanden selecteren, een commit-message tikken en op commit drukken.

    Click image for larger version. 

Name:	Workbench-01-overzicht.png 
Views:	278 
Size:	88.7 KB 
ID:	6039
    Workbench in commit-mode

    Als je nieuwe bestanden toevoegt, zal je nog om bevestiging gevraagd worden:

    Name:  Workbench-02-confirm-add.png
Views: 1094
Size:  13.1 KB
    Bevestiging bij nieuwe ('untracked') bestanden

    De workbench is ook zo slim om bestanden automatisch te selecteren die gewijzigd zijn sinds hun laatste commit. Tenslotte is het heel waarschijnlijk dat je die nu weer wilt committen. Mocht dat niet het geval zijn, dan kun je ze gewoon deselecteren. Bestanden die al in versiebeheer staan hebben ook een andere kleur, zodat je het verschil ziet tussen bestanden die al wel of nog niet zijn toegevoegd.

    Rechts-onder zie je de wijziging, in dit geval de naamswijziging van de memo.

    Click image for larger version. 

Name:	Workbench-03-commit-change.png 
Views:	282 
Size:	78.5 KB 
ID:	6040
    Reeds toegevoegde bestanden zijn blauw
    Last edited by GolezTrol; 19-Sep-12 at 10:55.
    1+1=b

  8. #8

    De Workbench: toolbar

    De Workbench: toolbar

    De toolbar bevat een aardig aantal knoppen waar je de meeste in eerste instantie niet nodig hebt.

    Click image for larger version. 

Name:	Workbench-02-toolbar.png 
Views:	265 
Size:	15.6 KB 
ID:	6042

    Refresh
    De meest linker knop, refresh, gebruik je om het scherm bij te werken. Dat kan bijvoorbeeld nodig zijn als je het scherm al open had staan voordat je in Delphi je wijzigingen hebt opgeslagen.

    Navigatie
    De knoppen daarnaast zijn voor navigatie. Die kunnen handig zijn als je heel veel revisies hebt, maar ik heb ze eigenlijk nog niet nodig gehad, behalve het vergrootglaasje, ÔÇÿFilter graph....ÔÇÖ. Met het filter kun je zoeken in de commit messages die hebt ingetypt bij de revisies.

    De drie knoppen daarnaast zijn voor het tonen van extra hulpschermen, met een overzicht van je repositories en een log scherm. Op deze schermen ga ik nu niet in. Je hebt ze nog niet nodig.

    Collaboratie
    De vier knoppen daarna zijn voor het pullen en pushen van gecommitte wijzigingen naar een andere clone. Hier ga ik in mijn volgende artikel verder op in.

    Modi
    De laatste rij knoppen bepalen de modus van het scherm.

    Als je een revisie aanklikt, springt de modus vanzelf naar ÔÇÿRevision DetailsÔÇÖ (het mannetje). Je kunt in deze modus de wijzigingen in die revisie bekijken. Als je de bovenste rij (ÔÇÿWorking directoryÔÇÖ) aanklikt, verandert de modus naar ÔÇÿCommitÔÇÖ. Je kunt nu eventuele openstaande wijzigingen committen.

    De twee knoppen daarnaast heb je ook nog niet nodig.

    De laatste knop, ÔÇÿSearchÔÇÖ, zoekt niet in de commit messages, maar juist in de code. Je hebt de mogelijkheid om in de geselecteerde revisie, of in alle revisies te zoeken.

    Al met al zijn er maar 3 knoppen, Refresh, Filter en Search, waar je na het lezen van dit artikel gebruik van zal maken. De knoppen voor collaboratie komen in het volgende artikel aan bod.
    1+1=b

  9. #9

    De Workbench: Geschiedenis

    De Workbench: Geschiedenis
    Na een aantal wijzigingen zie je dan al snel een geschiedenis ontstaan. Elke versie heeft een nummer, behalve de bovenste rij. Dat is je actieve, nog niet gecommitte versie. Deze is standaard geselecteerd.

    Je kunt nu de geschiedenis terugkijken door een eerdere versie aan te klikken. Je ziet dan welke bestanden er gewijzigd zijn (linksonder). Aan een icoontje (plusje of minnetje) zie je of het bestand in die revisie is toegevoegd of verwijderd. Per bestand zie je de wijzigingen (rechtsonder).

    Click image for larger version. 

Name:	Workbench-04-terugkijken.png 
Views:	272 
Size:	69.0 KB 
ID:	6043
    Boven: de geschiedenis. Rechtsonder: De wijzigingen in het aangeklikte bestand.

    Je kunt ook op een bestand dubbelklikken om de wijzigingen te bekijken. Het bestand wordt standaard geopend in KDiff, maar je kunt ook een andere tool, zoals WinMerge installeren. In deze weergave zie je in ieder geval tot op regelniveau wat er is veranderd tussen twee versies. Erg nuttig als je wilt weten waarom iets ineens niet meer werkt.

    Click image for larger version. 

Name:	Workbench-04b-diff.png 
Views:	283 
Size:	67.6 KB 
ID:	6044
    KDiff
    Last edited by GolezTrol; 19-Sep-12 at 02:36.
    1+1=b

  10. #10

    File Status

    File Status
    Behalve via de Workbench, kun je ook met rechts klikken op een file om allerlei handelingen te doen, waaronder de File Status op te vragen. Je krijgt dan een schermpje met daarin de geschiedenis van dat ene bestand. Verder werkt het vergelijkbaar met de andere schermen. Zo kun je ook hier dubbelklikken op een revisie om een vergelijking in Kdiff te openen.

    Click image for larger version. 

Name:	FileStatus-menu.png 
Views:	265 
Size:	30.7 KB 
ID:	6046
    Context menu in de Verkenner

    Click image for larger version. 

Name:	FileStatus-scherm.png 
Views:	274 
Size:	33.7 KB 
ID:	6047
    De bestandsgeschiedenis
    Last edited by GolezTrol; 19-Sep-12 at 10:56.
    1+1=b

  11. #11

    Samenvatting

    Samenvatting
    Mercurial is een distributed versiebeheersysteem.

    Met een enkel commando kun je een map met source code voorzien van versiebeheer.

    Je kunt een lijst aanleggen van bestanden of bestandstypen die je niet in versiebeheer wilt zetten. Deze lijst bestaat doorgaans uit gegenereerde bestanden, zoals de .dcu- en .exe-bestanden

    TortoiseHg is een een handige GUI, die met de verkenner integreert en je via schermen en wizards dezelfde handelingen laat doen die je ook via de command line kunt doen.

    Je kunt direct beginnen met het ‘committen’ van aanpassingen. Bij het committen kun je een korte omschrijving opgeven van wat je gewijzigd hebt.

    De Workbench is te bereiken in het contextmenu van de hoofdmap van je repository (de directory waarin .hg staat). Via de Workbench kun je committen, kun je de geschiedenis van revisies terugkijken, en kun je allerlei geavanceerde handelingen doen.

    Was dat alles? Ja en nee. Wanneer je als enige gebruiker aan je code werkt, heb je niet meer nodig dan dit. Met meerdere gebruikers heb je nog wat andere knoppen nodig. In het volgende artikel ga ik daar verder op in.

    Verder zijn er nog geavanceerdere features, zoals het maken van branches, aftakkingen in je geschiedenis, zodat je een heel deelproject apart kunt ontwikkelen, en het bij voltooiing kunt samenvoegen met de hoofdtak, inclusief versiebeheer. Deze features komen wellicht later nog aan bod.
    Last edited by GolezTrol; 19-Sep-12 at 10:56.
    1+1=b

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •