Category: Kapow Punch Clock (Page 3 of 5)

Now that I am switching to release branches I am finally going to also tackle something that has always bothered me but I’ve never taken the time to solve: the development source code has the same version number as the most recent release. I have always wanted it to be some sort of automated number, but I wasn’t sure what I wanted it to be. And I didn’t want to have to update it myself with every single commit.

At first I had wondered about a number that gets incremented every time you compile the project, but I quickly realized that was a pointless thing to track. I may build a project 5,000 times and have a huge build number, but someone else might download the source and compile it only twice. Same source code, different version number. That’s frankly pretty silly.

Instead, I got inspired by the idea of using the git revision ID. It is obviously unique for each commit, and it identifies the specific source code for everyone. Of course, you can’t embed the revision ID because it is a hash that is created of the source code that you’re trying to embed it in. A hash that contains itself? Impossible! Of course, all you have to do instead is simply ask git for the revision ID, and pass that as a definition to the compiler:

VERSION = $$system(git rev-parse --short HEAD)
DEFINES += VERSIONSTR=\\\"git.$${VERSION}\\\"

The source code also needs to make use of the new compiler definition:

QCoreApplication::setApplicationVersion(VERSIONSTR);

This means that I finally have an automated version number for the development source code. I’ve only updated Kapow so far, but I am going to make this change to all of my projects.

Minor Kapow release

Posted on May 27, 2012, under Kapow Punch Clock

2 comments

I just made a bugfix release of Kapow, version 1.3.5, that fixes some minor bugs as well as a potentially serious data loss bug: it was not fully checking to make sure that it could actually read or write its data file. I have thankfully only heard of a single user that this bug may have affected. A Danish translation was also added by Rasmus Blomqvist.

With this release I am moving to a new release process for all of my projects that is similar to how larger projects work. From now on patch releases (1.3.5, 1.3.6, etc) will only contain bug fixes or translation updates, and no new features. I was not doing this before because of the overhead of maintaining more than one branch, but I think that it is better way to do things despite the headaches it may cause me. For the sake of my sanity I will only be maintaining a single stable release line at a time for each project.

I should have announced this sooner, but better late than never I suppose. I will no longer be creating new PowerPC builds of my programs. There are many reasons, but the biggest two are that my iBook G3 finally gave up the ghost, and that Qt has dropped support for PowerPC. I know that this is an inconvenience for some of my users, and I am sorry about that. Still, I hung in there as long as I could, but Apple has moved on.

Another day, another release!

Posted on October 18, 2011, under Kapow Punch Clock

1 comment

I’ve had bug fixes and new translations for Kapow piling up for far too long, so I have made a new release, version 1.3.4. I also took the time to improve the application icon, which I had a lot of fun designing. I think it looks so much better now!

Thanks go to Krasimir S. Stefanov for adding a Bulgarian translation, Pavel Fric for adding a Czech translation, Guillaume Gay for adding a French translation, Ricardo Carrillo for adding a Spanish translation, and Sergiy Gavrylov for adding a Ukrainian translation.

Small Kapow release

Posted on November 16, 2010, under Kapow Punch Clock

2 comments

I have made a new Kapow release, version 1.3.3. I fixed a few bugs, and I added some small interface improvements: the projects that have no unbilled sessions are now colored the same as billed sessions, so that you can easily see which projects still need billing. Also, the system tray icon is grayed out while no timers are running, so you can quickly see if you have left the program running. Thanks go to Alberto Negri for adding an Italian translation.

Categories