30 July 2007

TortoiseSVN and Visual Studio Integration - Visual Studio 2008

Finally, I am getting around to an update to the TortoiseSVN Visual Studio Integration. The catalyst for this is the release of Visual Studio 2008 (formally codename Orcas) Beta 2, and making sure I can still play with Subversion through the IDE.

I have made a new distribution ZIP file with a few more configurations inside.

Download it here.

It has a few more features than before including some for dealing with conflicts. The distribution itself has a few more files so you can decide whether you want to just have the menus, toolbars or context menus.

Supported operations

The following Subversion/TortoiseSVN features are covered in the integration:
  • Commit - Commit the files to the repository
  • Update - Update the current working version
  • History - Get the history for the selected file
  • Diff - Get the diff compared to the base version
  • Blame - Find out who committed the crimes in the file
  • Revert - Undo changes
  • Modifications - Check to see if any files have been modified
  • Edit Conflicts - Edit the conflicts that arise from merging/updating
  • Resolve - Mark the file as resolved for conflicts
  • Repository - View the repository on the server
  • Project History - Get the history of the entire project
  • Add Solution - Add the solution being edited to source control
  • Branch/Tag - Perform a branch or tag operation on the current working copy
  • Settings - Set up TortoiseSVN

This simply installs a set of External Tools into Visual Studio for common TortoiseSVN operations. It can be installed on versions above Visual Studio.NET (version 7.0). Currently it is configured for Visual Studio 2008 (version 9.0), to make it work on other versions change the variable "strVisualStudioVersionNumber" as outlined in the file's comments.

Also, if you have installed TortoiseSVN in a non-default location, make sure that you change the variable "strTortoiseSVNBin" to the correct binary path. Make sure that the backslashes are doubled up.


This is a settings file for Visual Studio 2008.

This adds a menu to the IDE for TortoiseSVN with the appropriate icons.


This is a settings file for Visual Studio 2008.

This adds a menu for TortoiseSVN as well as a toolbar using the appropriate icons.


This is a settings file for Visual Studio 2008.

This adds not only the menu and toolbar, but also adds the items to the appropriate context menus for files and solutions.


This provides the menu, toolbar and context menus for TortoiseSVN in Visual Studio 2005.

Unfortunately there is no good solution for file renaming (I always do it through Windows Explorer) since this integration uses the External tools and allows for it to work in Visual Studio Express.

25 July 2007

C Front-End For LLVM Open-Sourced

I covered LLVM briefly earlier. I did mention Apple were working on a new C front-end called Clang.

Now the C front-end has been open-sourced there is a small website for CFE/Clang here.

There is a post about it here. This is a good step in open-source tools, and hopefully will spur other tool developments on.

Intel Open-Sources Threading Bulding Blocks

Intel has just open-sourced their Threading Building Blocks library. Intel describe it as a "rich and complete approach to expressing parallelism in a C++ program".

With multi-threading in general being so immature when looking at other libraries, another solution can never hurt. So add it to Boost.Threads, OpenMP, wxThread and the myriad of others. Admittedly the way that all of the alternatives work is very low-level and means very careful design is required.

I'm interested to see the approach of the library to multi-threading as it looks quite complicated to wrap your head around. The best bit though is there is apparently a cache aligned memory allocator as part of it that can be used independently.

There is a Slashdot article about it here. Also a bog post here looks interesting covering the subject.

All I can say is let battle commence and lets see what multi-threading packages are left standing ;)

18 July 2007

Some Good Bazaar Reading

Some good articles about Bazaar can be read here:
* Part 1 - Version Control : The Future Is Adaptive
* Part 2 - It Takes A Community To Raise Great Software
* Part 3 - Wanted : Rock Solid Version Control
* Part 4 - Version Control: Plug-ins Versus Toolkits

The blogger Ian Clatworthy does work on Bazaar so it obviously has a slant that way, but he makes good points and knows what he is on about. Or maybe I am biased now after being pleasantly surprised by Bazaar...

Life Without Internet

Argh! The web has been down at work for over 24 hours. I now realise it is 100% essential for my job. Google has replaced a certain portion of my brain.... I can't answer any questions without it (okay, a slight exaggeration).

One tool I have now found indispensable now is del.icio.us. Up until recently I have used the Google Browser Sync for using my bookmarks at multiple locations. The problem I found is I am very selective about what I bookmark as current bookmarking UIs available in IE and FireFox do not scale very well. Then I get in the situation I haven' bookmarked something and I spend ages on Google tryin to find it again.

I decided to move to del.ico.us as there was a new tool for Firefox which replaces the bookmarking system in Firefox, so now I use it exclusively tagging webpages at will. Obviously the number of bookmarks I have is increasing rapidly especially since I can even tag individual articles.

As you can see on the sidebar you can see what I am currently bookmarking and what I have bookmarked. I have also added the ability to bookmark individual articles quickly if you want. I tend to find most web technologies a bit hollow (MySpace Facebook and the suchlike) but this is a tool that reallyhelps make the web a better place, and all users of the system are sharing what they know with their bookmarks.

17 July 2007

Great Free Software - MacPorts

Since getting my Macbook Pro one of the most useful pieces of software I have installed is MacPorts. It is a port package for OS X which used to be called DarwinPorts, this is package management much like Linux tends to provide. This makes it easy http://www.blogger.com/img/gl.link.gifto get updates and manage the software installed.

At the moment it has over 4000 pieces of software available. It is ultimately how I am running Python, wxPython, Bazaar and Mercurial.

MacPorts has just released version 1.5. You can see the changelog here.

What makes it particularly nice to use is the excellent Cocoa interface for it called Porticus. It makes it all simple and intuitive and wraps up all the major features.

16 July 2007

Bazaar and Visual Studio Integration

The Bazaar distributed source control system has some Google Summer Of Code Projects. One of which is the Visual Studio integration and recently there has been a status update on the mailing list talking about progress - read it here.

I think the distributed source control system that catches on will probably be the one which manages to get together the best external tools and UI. Bazaar seems to have a few projects that are actively developed that could deal with that and make it quite a contender.

Part of the development for this project though is wrapping the API in a Microsoft embeddable way. An interesting approach but I can think of a few other routes.

Distributed Revision Control And APIs

One of the reasons blogging has been quiet the past week or so is I've been fiddling about with some coding.

I've been trying out wxPython and using it as an interface to a distributed source control system. It's purely experimental, but it did show me some deficiencies and strengths in some of the ones available.

Here is what I learnt though... wxPython is a great way of hacking together a coherent UI fast, I am still relatively inexperienced in Python and wxPython but the resources out there on the Internet are very useful.

As for the source control systems... First I tried out Mercurial, but I am really struggling with the API and trying to write extensions. This is mainly due to the lack of documentation, and a lot of current tools like Qct simply parse the commandline. I did work out some of the parts of the API to wrap, but I found it hard going with limited Python knowledge and a lack of comments.

The other system I tried was Bazaar which I found a very different experience. The API is excellently documented and the plug-in API is excellent. Admittedly the criticism levelled at this source contrl system is the speed, but it gets so much right. It is built on a solid foundation of correctness and the barrier for entry is lowered thanks to the excellent documentation. I managed o get a working status dialog up and running in a very short period of time (although admittedly I got sidetracked afterwards fiddling around with wxPython).

One of the reasons I was using wxPython is that it looks native on my Macbook Pro as a lot of the available UIs are GTK based meaning they look pretty bad on OS X. Also I wanted to try it out on Windows which meant it looked pretty good on that platform as well.

Hopefully I can find the time to tidy some of this code up into a reusable form and actually see something like at least the status and commit dialogs through to completion.

06 July 2007

Distributed Revision Control Redux

Leading on from my previous posts here and here I have been doing a lot of research into the distributed revision control arena.

Admittedly I have got fixated on three, Git, Mercurial and Bazaar. All three projects are about the same age, but each have their own strengths and weaknesses.

Briefly to sum them up Git is fast, it has a large developer community behind it and seems to be developing at breakneck speed. The disadvantages are mainly due to the reliance on the POSIX systems which means cross-platform (well, Windows) support is weak. I know there are some initiatives to get it working on Windows but I can see it losing steam as there is not enough interest in it due to the POSIX platform supports being so strong. Also, Git is a bit more obscure than the others due to being a bit more low-level with plug-ins adding the ease of use.

Mercurial is written is Python and is easily cross-platform It is much simpler than the aforementioned Git to use and is close to it in speed and storage. The disadvantages which I must admit are not many are that the community is not as fast moving as Git, but new versions are very regular. I do see this as a better prospect than Git as it is better designed whereas as better design is being retroactively added to Git.

Bazaar (Bazaar NG to give it its full name) is sponsored by Canonical, the company running Ubuntu. Mark Shuttleworth has blogged about Bazaar recently which I mentioned in a previous post. Bazaar is also written in Python and is cross-platform with a nice Windows installer for those people scared of installing Python. It is very well designed with comprehensive renaming and merge support. The main disadvantage is that it is not as fast as Mercurial or Git. To be honest I am taking a liking to this system and have been investigating it quite deeply (but that is for another post).

These three young projects are really progressing fast though and they are already good enough to use providing you are not too tied to your current extras from more mature systems (like TortoiseSVN).

02 July 2007

Eclipse CDT For Windows

The Eclipse IDE (which is cross-platform and designed to have plug-ins written for) has a good C++ module called CDT (C/C++ Development Toolkit).

Recently version 4.0 was released in tandem with the Europa release of Eclipse. It has been massively improved and gives much better Windows support.

Now the lead developer of CDT, Doug Schaefer, has started a new project called CDT For Windows which aims to make it obscenely simple to install and run Eclipse+CDT on Windows. Check out his post announcing this here. This is a great step forward and I hope this works out well.

01 July 2007

LLVM - Low-Level Virtual Machine

Recently there has been a lot of development on the Low-Level Virtual Machine (LLVM). It provides a back-end for compilers to allow for optimisation for the entire lifetime of the program.

The GLSL in Mesa has been implemented using LLVM. You can read a little about it here. The OpenGL implementation in Mac OSX Leopard will be implemented using LLVM.

There is an interesting article here about the speed of LLVM. It is surprising how close it gets in speed as things currently stand to GCC.

Recently there was a development meeting for LLVM in May and the presentations are available here. Of particular interest is the presentation by Apple about a new C front-end for LLVM called Clang with plans to support Objective C and C++. You can read the slides here and see the presentation here. The new frontend is called Clang and probably won't be production ready for a while but it is interesting to see where compiler technologies are heading.

The most interesting area of LLVM is definitely the whole program optimisation potential of it. Anyone who has seen the performance gains from using it knows this is good thing.