Note: This is part of a series, you can find the rest of the parts in the series index.
Some people see learning as a side effect of software development and others believe that all must be known upfront and so no learning occurs. The reality is that it learning during software development is a core part and you should be embracing it. One of the the things I have done with Pull is to host the code with CodePlex. CodePlex offers two ways to store source code – you can use TFS/SVN or you can use Mercurial.
In the past I have always used TFS because I am comfortable there – it’s a tool I know well and I like to use it. However to embrace the learning for Pull, I decided it could be a Mercurial project. Which brought me to my first issue, I didn’t have any Mercurial tools so I went off to find a set I liked.
Being that I didn’t want to install anything, because my machine is so light and fast, a lot of the packages out there were not an option (TortoiseHG, I’m looking at you). In the end I choose the Mercurial Cmd Portable from PortableApps.com which gave me a light option, but did mean no GUI which really isn’t a bad thing.
Comparing it to TFS is a two part compare.
- If I compare to the full GUI TFS inside Visual Studio then I prefer the Mercurial experience because working disconnected from the server and coming online is easier.
- There are TFS Power Tools which provides a command prompt tool called tfpt.exe and that has an online option which makes the whole experience just as good what Mercurial offers.
One of the big areas of difference between how TFS and Mercurial work is branching/merging/labels/forks etc… which I have not experienced yet.
Some of the things I did in my Mercurial setup which may help other people.
My ignore file for C# projects done in Visual Studio, with CodeRush installed.
syntax: glob *.csproj.user */[Oo]bj/* */[Bb]in/* *.suo *DXCore.Solution hgignore[.-]* [Tt]humbs.db *.user *.bak.* *.bak *.[Cc]ache */[Pp]ublish/* *.vssscc *.vs10x
My config was fairly straightforward, I have an auth setup so that my CodePlex details are remembered and I created an alias called codeplex. This lets me just type hg codeplex and it prompts for my password and that’s it – one line gets the repro pushed to CodePlex. I also setup WinMerge as the diff tool, because I am a WinMerge fan and this just lets me keep using it easily.
[auth] codeplex.prefix=hg01.codeplex.com/pull codeplex.username=rmaclean codeplex.schemes=https [alias] codeplex=push https://hg01.codeplex.com/pull [ui] username=Robert MacLean <email@example.com> [extensions] ; must uncomment this line extdiff = [extdiff] cmd.winmerge = E:\PortableApps\WinMergePortable\App\WinMerge\WinMergeU.exe opts.winmerge = /r /e /x /u /wl