Mazda 6 Sport is sick!

2010-06-18

No, its not ‘sick’ in the way the younger generation use the word; to mean cool, great and fantastic. I mean its gone to our local Mazda garage, Alan Gibson, broke, go directly to garage, sick!.

Kirsty was driving the car home from Basingstoke and noticed a new light on the dash. Eager to find out if this was some other feature she looked it up the extensive manual to find its the ‘Engine Warning’ light!

Yep, we’ve had it four days with less the 250 miles on the clock. It can’t be anything too awful.

First thing this morning I called Hugh’s Mazda, from where we bought the car. I tried to speak to the sales assistant but I was too early and was directed through to the maintenance department. They gasp upon hearing my post code and suggest I phone another garage or wait three weeks for them to collect!

I decided to phone a garage in Guildford first as Alan Gibson had failed to deliver us a car in Blue. They told me to call Mazda Assist – of course! I called them and within 20 minutes Simon from the RAC was at my door. In less than ten minutes his computer was plugged in to the car and the cars diagnostics were telling him that the second CO2 sensor was not working. Simon booked the car into Alan Gibson and I drove the car over to them in pursuit by the RAC van should the issue escalate and to bring me back. In that short drive I noticed that the car wouldn’t go above 3,000 RPM or engage cruise control. I figure this must be what has been referred to as limp mode.

Simon informed the gentleman at Alan Gibson what the issue was and they told me that they had no stock of the CO2 sensor but said that new stock was due in on Tuesday, four days away. Simon in the mean time had called in and arranged for a hire car for that time from Enterprise so at least we wouldn’t be without a car.

Upon returning home with Simon I assured the wife that this was a minor issue, our new baby would be back with us in no time. Shortly after Enterprise called me and explained that they didn’t have any Mazda 6 size cars. I said that was OK as it was only going to be for a couple of days. Enterprise were unable to deliver the car, as they only had two people in the office. So one came out and collected Kirsty who returned home an hour or so later with a Vauxhall Corsa 1.4

I must admit that I was quite surprised by the Corsa’s level of equipment – it too has automatic headlamps, electric dimming mirror, and stereo controls on the steering wheel. The boot is tiny so its a good job we are not going away this weekend.

MTB in Yately Woods (Near Blackbush)

2010-06-16

Went cycling over in Yateley woods and am sorry to report that the route known to me as Nine Pint Ride is no more as its buried under branches. The log drop and bomb pits remain though so we had some fun.

Escape from VirtualBox Full Screen

2010-06-16

Using Virtual Box on laptop in full screen (Host+F) with external Sun4 USB keyboard. I wanted to map the Host key, right control key (Control_R) on laptop to that of the Right Meta (Meta_R) key on USB keyboard as the former isn’t available on Sun4 keyboard.

$ cat vboxhost 
            remove mod4 = Meta_R
            keysym Meta_R = Control_R
$ xmodmap -verbose vboxhost
! vboxhost:
! 1:  remove mod4 = Meta_R
! Keysym Meta_R (0xffe8) corresponds to keycode(s) 0x74
        remove mod4 =  0x74
! 2:  keysym Meta_R = Control_R
! Keysym Meta_R (0xffe8) corresponds to keycode(s) 0x74
        keycode 0x74 = Control_R
!
! executing work queue
!
        remove mod4 =  0x74
        keycode 0x74 = Control_R
$ 

Mazda 6 – Bluetooth Music another bonus

2010-06-13

Ok, so our old Ford Focus was ten years old and so was lacking in some modern additions found on new cars. Now while I knew the car could connect to my phone over Bluetooth I was amazed when twiddling with the stereo controls on my steering wheel to see “BT Audio” come up on the display and the last track I was listening too being played through the car’s Bose speakers! Wow, that I like. My friend then turned up and we played around some more and discovered the volume goes all the way to 62 (or was it 64)? Who cares its too loud! 😉

Later in the evening I drove up to Thorpe Park to collect my eldest daughter and her friends. While I waited I spent some more time adding some phone numbers into the car voice recognition system. I found this to be a bit hit-and-miss when trying to add numbers. However I found I could simply send the numbers over Bluetooth and associate them with a name which was far quicker.

On the way back the kids asked, how loud does it go…. Oh yes, I cranked it up again 😉

I should possibly say something about the drive. Remembering that I’m comparing it to a 10 year old Ford Focus. So remembering its new and I’m not an idiot I shall just sum up by saying its very comfortable, smooth, quick to accelerate and to stop. I’m enjoying the drive and not being stupid.

Collected Mazda 6 Sport 2.2 Diesel – loving it

2010-06-12

We collected our shinny new, stormy Blue, Mazda 6 Sport today from Hugh’s Mazda. We are so excited and happy with our purchase.
We took months in deciding which car to go for and driving the car home we know we had made the right decision; the drive is great – lively and fun. And it looks gorgeous. An added bonus is that it comes with Mazda Assist (RAC European breakdown cover) included for three years.

Office move to Thames Valley Park.

2010-05-12

I’m to move offices from Camberley to Oracle’s offices in Thames
Valley Park, Reading.

My current commute is by bicycle, on an average day I travel approximately 5 miles and do the trip in under 25 minutes. The distance and time very much depend on the weather as I do enjoy my ride in through the woods in the area. But how am I to get to TVP?

It seems I have a few options:

  • Bus: Number 72 will take me from Fleet, Reading Road South to
    Reading Station in approx. One hour. Cost £7 return.

  • Train: From Fleet station to Reading station via Basingstoke in
    approx one hour.

  • Car: Only I currently share a car with the wife. In the interest
    of the environment I would like to car-share.

  • Bicycle: Approximately 17 miles door-to-door, I estimate it will
    take 1 hour and 45 mins

  • Work From Home:

I’m thinking that I would ideally like to continue to cycle. But I have to confess its been a while since I road that sort of distance and even longer since I rode it on roads.

I imagine the easiest method would be car. Travel time I’d expect to be under an hour, say 40 minutes. Though picking up others for the car share could well add some time to that.

Putting the idea of a car-share on hold for the moment The train seems like a good option, I’d cycle to the Station on the Brompton and then take the train. Each train only takes around quarter-of-an-hour but to that there is a waiting time at the start and middle stations which takes the total travel up to around an hour. Plus the possibility of missing a connection. I shall of course try the train another day.

So today I’m trying the bus. I cycled up to the bus stop on Reading Road South, arrived at 8:05. I brought the bike as I’m undecided on my return route at this time; for a start the bus is rather infrequent and I’m not sure if I’m going to take the Oracle bus from the station or cycle down the river path.

First thoughts – Very friendly bus driver – to the passengers at least, very uncomfortable seat. There is a parcel shelf where I stow the bike so that is at least not under my feet. Towards the end of the journey I’d imagined a bus lane ran through Reading. But the bus takes a detour down side streets (Basingstoke Road) collecting other passengers. At west hill Tobacco smell causes my nose and throat to twinge – Yes it non-smoking but those smells linger.

Noted times:

  • 8:14 Bus arrives
  • 8:22 Fleet Station
  • 8:35 Exit Elvemeheath
  • 8:38 Hartley Witney
  • 8:43 Pub Shoulder of Mutton?
  • 8:48 Wellington Country Park – Riseley. (Erm 30mph???)
  • 9:04 M4 Junction
  • 9:17 West Hill?
  • 9:20 Bridge Street – The Oracle (shopping centre).
  • 9:23 Station – drivers says 10 mins late.

As I get off the bus the Thames Valley Park courtesy bus service is there so I jump on. I really shouldn’t have on such a lovely day – but its bus day. Driver tells me the service runs every 8 minutes. Four other passengers also get on. Lots of space for bike in wheelchair spaces and two parcel shelfs – though the shelfs are four feet off the floor. A bus lane is provided for part of this journey along Kings Road. I’m told the service is rather busy in the mornings and afternoon. I intend to cycle up the river path to get back this afternoon.


To which I did, it only took around ten minutes along the river path on Sustrans route 4 and 5.. I got the bus as far as Elvetham Heath and cycled the last two miles directly – where as the bus goes around the houses – and thus took ten minutes off the morning journey.

Ordered Mazda 6 in our colour of choice

2010-05-04

After much ringing around I ordered the Mazda we wanted in the colour we wanted. Had to pay a little more as this dealer was not able to match the price the first dealer had. Just have to wait for delivery now.

Metalic paint at Extra Cost even in the wrong colour

2010-04-26

Agh! I’m going mad. After seven years I’ve finely decided it’s time to replace the car, a car we’ve had for ten years. I did try and replace it when it was just 3 years old but I got so frustrated I gave up!

So this time around we’ve considered Renault, Peugeot, Citroen, Ford, Vauxhall, Volvo… and finally the wife and I whittled it down to either the Skoda Octavia or a Mazda 6. We drove both on more that one occasion and finally decided on the Mazda 6 sport 2.2 Diesel and set about getting a quote.

The great thing we thought about buying new was that we could choose the options and colour. After all the manufacturer makes you pay extra for a Metallic or as in this case Mica.

How wrong we are it seems. Alan Gibson of Basingstoke are telling us that Rusty Red is what they have – and yes, they still want us to pay the extra for that colour even if its not what we wanted!

Aggh!!!

ut-which now hosted on Kenai

2010-04-13

I’ve posted the latest source off ut-which to Project Kenai. ut-which automates pidgin (instant messenger) status and resizes Sun Ray desktop on session connect or disconnect.

mq ~ Mercurial Queues

2009-10-27

I’ve been experimenting with Mercurial Queues with the idea of sharing
their mysteries with OpenSolaris developers so we can all integrate
multiple changesets and keep one fix per changeset.

Essentially mq allows you to take a snapshot of your changes and
create a patch file. You may then make additional changes to be
applied to the same patch file (qrefresh) or create a new patch (qnew)
These patches may then be removed (qpop) and reapplied (qpush)
at your leisure. So that’s the theory, lets take a look using an example:

Enabling mq

To enable mq on OpenSolaris simply add it to your extensions in
.hgrc:

$ head -2 ~/.hgrc
[extensions]
mq=

Some data to work on.

For the following examples I’ve created a repository and added to it a
simple C ‘First program’ and a make(1) file to compile and
delete the program… Complete with some faults to fix.

$ hg init qexample
$ cd qexample
$ echo 'int\nmain(int argc, char *argv[])\n{\n\tprintf("hello word");\n}'
$ 1> hi.c
$ echo src='hi.c\nbin=${src:%.c=%}\nall: ${bin}\nclobber:\n\trm ${bin}'
$ 1> Makefile
$ hg commit -m 'First program' -u beginner -A hi.c Makefile
$ cd ..

Clone repository and initialise for use with mq

Create a clone of qexample called qex1 and initialise it for mq
using qinit -c.

$ hg clone qexample qex1
updating working directory
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd qex1
$ hg qinit -c

Fix Makefile clobber target

The Makefile has some issues, firstly the clobber target.

$ make clobber hi
rm hi
rm: hi: No such file or directory
*** Error code 2
make: Fatal error: Command failed for target `clobber'

First Patch, Makefile

So here is our first issue, the clobber build fails as ‘rm’ failed and
causes make to exit. To address that we can simply add a -f to rm,
so lets do that for our first patch.

$ hg qnew Makefile

The qnew command states we want to create a new patch, the argument
is the name of the patch. This action also creates a changeset, don’t
be concerned about that now.

$ hg log
changeset:   1:d8ddc677fa77
tag:         qtip
tag:         Makefile
tag:         tip
tag:         qbase
user:        Stacey Marshall ‹Stacey.Marshall@Sun.COM›
date:        Tue Oct 27 21:17:03 2009 +0000
summary:     [mq]: Makefile
changeset:   0:390c5f52f8e3
tag:         qparent
user:        beginner
date:        Tue Oct 27 21:17:02 2009 +0000
summary:     First program
$ sed 's/rm /rm -f /' Makefile > m
$ mv m Makefile
$ make clobber hi
rm -f hi
cc    -o hi hi.c
"hi.c", line 4: warning: implicit function declaration: printf
$ hg qrefresh

After applying the fix clobber target now works. However, now the
compiler’s giving us warnings! That’s a new issue, so I update the
Makefile change using qrefresh and start a new patch:

Second patch, remove warnings.

This time qnew is used with the -m option to add a description.
Note this description is also applied to the changeset, it can be
changed later if necessary:

$ hg qnew -m 'remove implicit function delcaration warnings' fix1
$ (echo '#include ‹stdio.h›'; cat hi.c) > new.c
$ mv new.c hi.c
$ hg log -l1
changeset:   2:4ffb58a8196f
tag:         qtip
tag:         tip
tag:         fix1
user:        Stacey Marshall ‹Stacey.Marshall@Sun.COM›
date:        Tue Oct 27 21:17:03 2009 +0000
summary:     remove implicit function declaration warnings
$
$ hg qdiff
diff -r d0b382d0a781 hi.c
--- a/hi.c	Tue Oct 27 21:17:03 2009 +0000
+++ b/hi.c	Tue Oct 27 21:17:03 2009 +0000
@@ -1,3 +1,4 @@
+#include ‹stdio.h›
int
main(int argc, char *argv[])
{
$ make hi
cc    -o hi hi.c
$ hg qrefresh

The include was added to hi.c to remove the warning, and again the
change updated using qrefresh.

Third patch, retrospective patching

Its likely that you’ll start making changes before remembering to
start a patch with qnew. For those occasions the -f option comes
to hand to place all un-committed changes in to the patch. Verified
below with qdiff:

$ ./hi
hello word$ # Doh! No new line, and it was meant to say 'world'!
$ sed 's/hello word/Hello world!\\n/' hi.c > new.c
$ mv new.c hi.c
$ hg qnew -f -m 'Fix world' message
$ hg qdiff
diff -r 8a838c77402f hi.c
--- a/hi.c	Tue Oct 27 21:17:03 2009 +0000
+++ b/hi.c	Tue Oct 27 21:17:04 2009 +0000
@@ -2,5 +2,5 @@
int
main(int argc, char *argv[])
{
-	printf("hello word");
+	printf("Hello world!\n");
}

Listing patches with qseries

The qseries command shows us which patches have been applied, use the
-v option to display ‘A’ (applied) and ‘U’ (un-applied) flags:

$ hg qseries -v
0 A Makefile
1 A fix1
2 A message
$ cat hi.c
#include ‹stdio.h›
int
main(int argc, char *argv[])
{
printf("Hello world!\n");
}
$

Traversing the patches to make other changes.

Lets assume we want to make another change to the Makefile, but
we want to keep just the one patch for changes to Makefile.
To accomplish this we pop the other two patches off. In the following
that’s done by naming the patch to pop to:

$ hg qpop Makefile
now at: Makefile
$ hg qseries -v
0 A Makefile
1 U fix1
2 U message

Note now that the other two patches are un-applied.

With the just the original patch applied modify the Makefile, update
the patch using qrefresh and then re-apply all the other patches
using qpush -a.

$(echo '# Makefile example';cat Makefile)>new
$ mv new Makefile
$ hg qrefresh
$ hg qdiff
diff -r 390c5f52f8e3 Makefile
--- a/Makefile	Tue Oct 27 21:17:02 2009 +0000
+++ b/Makefile	Tue Oct 27 21:17:04 2009 +0000
@@ -1,5 +1,6 @@
+# Makefile example
src=hi.c
bin=${src:%.c=%}
all: ${bin}
clobber:
-	rm ${bin}
+	rm -f ${bin}
$ hg qpush -a

Caution!

Some caution is needed when you want two patches that edit the
same file. Its doable but because underneath patch(1) is being used
you may need to manually merge in rejects.

Another gotcha on older versions of Mercurial is if you add a file in
a patch-queue. If the patch is popped off you may need to re-add it
(hg add). Lets see that in action by adding a new file which of
course requires adding to the Makefile too… This seems to be fixed
however in version 1.3.1:

$ hg qpush -a
applying fix1
applying message
now at: message
$ hg qnew bye
$ sed 's/Hello world/Bye/' hi.c > bye.c
$ hg add bye.c
$ : Make changes to makefile...
$ hg qrefresh
$ hg qpop Makefile
now at: Makefile
$ sed 's/hi.c/hi.c bye.c/' Makefile >new
$ head -2 new
# Makefile example
src=hi.c bye.c
$ mv new Makefile
$ hg qrefresh
$ hg qpush -a
applying fix1
applying message
applying bye
now at: bye
$ hg log bye.c || hg add bye.c # NEED TO CONFIRM!
$ hg log bye.c
changeset:   4:cdb5958dcd87
tag:         qtip
tag:         tip
tag:         bye
user:        Stacey Marshall ‹Stacey.Marshall@Sun.COM›
date:        Tue Oct 27 21:17:05 2009 +0000
summary:     imported patch bye
$ make
cc    -o hi hi.c
cc    -o bye bye.c
$

Updating your repository – pull and update.

It is most likely someone is going to have integrated (push) between
your original clone and push, and that you’d like to merge those changes.

So Firstly, for the example, add a changeset to our parent repo;

$ hg clone ../qexample tmp
$ cd tmp
$ echo "README...  TBD" > README
$ hg add README
$ hg commit -u beginner -m 'Added README for support.'
$ hg push
$ cd ..
$ hg incoming -v
comparing with /export/home/sm26363/Mercurial/Mercurial/qexample
searching for changes
changeset:   1:2048a9e0068b
tag:         tip
user:        beginner
date:        Tue Oct 27 21:17:05 2009 +0000
files:       README
description:
Added README for support.
$

Now Hold onto your seats, this is a bit of roller-coaster ride!

Firstly, we save the series of patches using qsave, with some
essential options:

  • -c : Copy Patch directory
  • -n : Specify name of directory – By default it uses patches.N
    where N is next number in series until an non-existent directory
    is found within the root .hg directory.

  • -e : Empty the queue status file – The status file holds
    information about which patches are applied, so deleting it makes
    it look as though the patch queue is empty. The changesets are
    stripped of their special tags.

$ hg qsave -e -c -n incoming
copy /export/home/sm26363/Mercurial/Mercurial/qex1/.hg/patches to /export/home/sm26363/Mercurial/Mercurial/qex1/.hg/incoming
$ hg glog --template '{rev}:{node|short} {author|user}\n{desc|firstline}\n\n'
@  5:db6e2d5b6aa2 Stacey
|  hg patches saved state
|
o  4:cdb5958dcd87 Stacey
|  imported patch bye
|
o  3:d20726d3cc4d Stacey
|  Fix world
|
o  2:63144e5ebe68 Stacey
|  remove implicit function declaration warnings
|
o  1:be53b09aed16 Stacey
|  [mq]: Makefile
|
o  0:390c5f52f8e3 beginner
First program

we’re now ready to pull the incoming changes over, DON’T use the -u
option. The update needs to be done separately:

$ hg pull
pulling from /export/home/sm26363/Mercurial/Mercurial/qexample
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
$ hg glog --template "{rev}:{node|short} {author|user}\n{desc|firstline}\n\n"\
-l3
o  6:2048a9e0068b beginner
|  Added README for support.
|
| @  5:db6e2d5b6aa2 Stacey
| |  hg patches saved state
| |
| o  4:cdb5958dcd87 Stacey
| |  imported patch bye
| |

The pull done, as normal we have multiple heads and possibly files
that need merging. But as we’re using patches we’ll simply overwrite,
local changes using option -C and re-apply the patches using qpush
with the following arguments:

  • -m : Merge from another queue – This triggers a three-way merge
    if the patch fails to apply with the applicable changeset. The
    result is a new patch based on the changes.

  • -n : Name of other-queue – the backup from previous step.
  • -a : All patches.

$ hg update -C tip
3 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg qpush -m -n incoming -a
merging with queue at: /export/home/sm26363/Mercurial/Mercurial/qex1/.hg/incoming
applying Makefile
applying fix1
applying message
applying bye
now at: bye
$
$ hg glog --template "{rev}:{node|short} {author|user}\n{desc|firstline}\n\n"
@    11:8db2598210ab Stacey
|\   imported patch bye
| |
| o    10:2d966b806fb1 Stacey
| |\   Fix world
| | |
| | o    9:e63a43ac5532 Stacey
| | |\   remove implicit function declaration warnings
| | | |
| | | o    8:a1205da4671a Stacey
| | | |\   imported patch Makefile
| | | | |
| | | | o  7:3f838495d0e4 Stacey
| | | | |  [mq]: merge marker
| | | | |
| | | | o  6:2048a9e0068b beginner
| | | | |  Added README for support.
| | | | |
+---------o  5:db6e2d5b6aa2 Stacey
| | | | |    hg patches saved state
| | | | |
o | | | |  4:cdb5958dcd87 Stacey
|/ / / /   imported patch bye
| | | |
o | | |  3:d20726d3cc4d Stacey
|/ / /   Fix world
| | |
o | |  2:63144e5ebe68 Stacey
|/ /   remove implicit function declaration warnings
| |
o |  1:be53b09aed16 Stacey
|/   [mq]: Makefile
|
o  0:390c5f52f8e3 beginner
First program

As the fictional character Ford Prefect would say, “Don’t Panic!”.
That is what we were expecting. We’re safe now to pop the patches
off, stay with it:

$ hg qpop -a
patch queue now empty
$ hg glog --template "{rev}:{node|short} {author|user}\n{desc|firstline}\n\n"
@  6:2048a9e0068b beginner
|  Added README for support.
|
| o  5:db6e2d5b6aa2 Stacey
| |  hg patches saved state
| |
| o  4:cdb5958dcd87 Stacey
| |  imported patch bye
| |
| o  3:d20726d3cc4d Stacey
| |  Fix world
| |
| o  2:63144e5ebe68 Stacey
| |  remove implicit function declaration warnings
| |
| o  1:be53b09aed16 Stacey
|/   [mq]: Makefile
|
o  0:390c5f52f8e3 beginner
First program
$ hg qpop -a -n incoming
using patch queue: /export/home/sm26363/Mercurial/Mercurial/qex1/.hg/incoming
saving bundle to /export/home/sm26363/Mercurial/Mercurial/qex1/.hg/strip-backup/be53b09aed16-temp
adding branch
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
patch queue now empty
$ hg qseries -v
0 U Makefile
1 U fix1
2 U message
3 U bye
$ hg qlog
@  changeset:   1:2048a9e0068b
|  tag:         tip
|  user:        beginner
|  date:        Tue Oct 27 21:17:05 2009 +0000
|  summary:     Added README for support.
|
o  changeset:   0:390c5f52f8e3
user:        beginner
date:        Tue Oct 27 21:17:02 2009 +0000
summary:     First program

The above shows the incoming changeset and our patches un-applied.
The patches may now be re-applied:

$ hg qpush -a
applying Makefile
applying fix1
applying message
applying bye
now at: bye
$ hg qlog
@  changeset:   5:a19f79097ba6
|  tag:         qtip
|  tag:         tip
|  tag:         bye
|  user:        Stacey Marshall ‹Stacey.Marshall@Sun.COM›
|  date:        Tue Oct 27 21:17:07 2009 +0000
|  summary:     imported patch bye
|
o  changeset:   4:74fc52a79383
|  tag:         message
|  user:        Stacey Marshall ‹Stacey.Marshall@Sun.COM›
|  date:        Tue Oct 27 21:17:07 2009 +0000
|  summary:     Fix world
|
o  changeset:   3:63ca0f087340
|  tag:         fix1
|  user:        Stacey Marshall ‹Stacey.Marshall@Sun.COM›
|  date:        Tue Oct 27 21:17:07 2009 +0000
|  summary:     remove implicit function declaration warnings
|
o  changeset:   2:c601487f5539
|  tag:         Makefile
|  tag:         qbase
|  user:        Stacey Marshall ‹Stacey.Marshall@Sun.COM›
|  date:        Tue Oct 27 21:17:07 2009 +0000
|  summary:     imported patch Makefile
|
o  changeset:   1:2048a9e0068b
|  tag:         qparent
|  user:        beginner
|  date:        Tue Oct 27 21:17:05 2009 +0000
|  summary:     Added README for support.
|
o  changeset:   0:390c5f52f8e3
user:        beginner
date:        Tue Oct 27 21:17:02 2009 +0000
summary:     First program

Preparing to push

The final step is to remove the queues, as with those intact we’re
unable to push. To accomplish this use qfinish But before we
clear the queues take a backup of them using qcommit and clone
as its likely we’ll have to pull again as we raise to push.

Note: Simply doing a qcommit is not sufficient because qfinish tidies
up the patches, a peek into the working files shows this best – I’ve
avoided showing these details previously:

$ hg qcommit -m "pre-finish"
$ ls .hg/patches
bye       fix1      Makefile  message   series    status
$ hg qfinish -a
patch Makefile finalized without changeset message
patch bye finalized without changeset message
$ ls .hg/patches
series  status
$

By cloning the patches before qfinish we can then recover them after
stripping off our patched changesets, Lets look at another example.

$ hg qcommit -m 'Pre-finish'
$ hg clone .hg/patches .hg/patches-backup
updating working directory
6 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg qpush -a
all patches are currently applied
$ hg qfinish -a
patch Makefile finalized without changeset message
patch bye finalized without changeset message
$

Now lets assume there is something to pull, we’ll have to remove our
outgoing changes using strip:

$ hg outgoing
comparing with /export/home/sm26363/Mercurial/Mercurial/qexample
searching for changes
changeset:   2:c601487f5539
user:        Stacey Marshall ‹Stacey.Marshall@Sun.COM›
date:        Tue Oct 27 21:17:07 2009 +0000
summary:     imported patch Makefile
changeset:   3:63ca0f087340
user:        Stacey Marshall ‹Stacey.Marshall@Sun.COM›
date:        Tue Oct 27 21:17:07 2009 +0000
summary:     remove implicit function declaration warnings
changeset:   4:74fc52a79383
user:        Stacey Marshall ‹Stacey.Marshall@Sun.COM›
date:        Tue Oct 27 21:17:07 2009 +0000
summary:     Fix world
changeset:   5:a19f79097ba6
tag:         tip
user:        Stacey Marshall ‹Stacey.Marshall@Sun.COM›
date:        Tue Oct 27 21:17:07 2009 +0000
summary:     imported patch bye
$ hg strip 2
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
saving bundle to /export/home/sm26363/Mercurial/Mercurial/qex1/.hg/strip-backup/59b69da7d392-backup
$ hg log
changeset:   1:2048a9e0068b
tag:         tip
user:        beginner
date:        Tue Oct 27 21:17:05 2009 +0000
summary:     Added README for support.
changeset:   0:390c5f52f8e3
user:        beginner
date:        Tue Oct 27 21:17:02 2009 +0000
summary:     First program
$

Recover the backups:

$ rm -rf .hg/patches
$ hg clone .hg/patches-backup .hg/patches
updating working directory
6 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg qseries -v
0 U Makefile
1 U fix1
2 U message
3 U bye
$

So there we have it, we can then check the incoming, if it touches
anything we’ve edited then we can go through the merge operation
above and or pull, update re-apply patches, finish and patch.

Changing changeset message

As seen above qfinish nicely told us that some changesets were
missing messages. These can be applied using qrefresh -m:

$ hg qseries -v
0 U Makefile
1 U fix1
2 U message
3 U bye
$ hg qpush Makefile
applying Makefile
now at: Makefile
$ hg qrefresh -m "Makefile changes"
$ hg qpush bye
applying fix1
applying message
applying bye
now at: bye
$ hg qrefresh -m "Bye: says goodbye"
$ hg glog
@  changeset:   5:202431aaf294
|  tag:         qtip
|  tag:         tip
|  tag:         bye
|  user:        Stacey Marshall ‹Stacey.Marshall@Sun.COM›
|  date:        Tue Oct 27 22:45:47 2009 +0000
|  summary:     Bye: says goodbye
|
o  changeset:   4:7494b600f084
|  tag:         message
|  user:        Stacey Marshall ‹Stacey.Marshall@Sun.COM›
|  date:        Tue Oct 27 22:45:21 2009 +0000
|  summary:     Fix world
|
o  changeset:   3:69c047974d13
|  tag:         fix1
|  user:        Stacey Marshall ‹Stacey.Marshall@Sun.COM›
|  date:        Tue Oct 27 22:45:21 2009 +0000
|  summary:     remove implicit function declaration warnings
|
o  changeset:   2:439652f08146
|  tag:         Makefile
|  tag:         qbase
|  user:        Stacey Marshall ‹Stacey.Marshall@Sun.COM›
|  date:        Tue Oct 27 22:45:15 2009 +0000
|  summary:     Makefile changes
|
o  changeset:   1:2048a9e0068b
|  tag:         qparent
|  user:        beginner
|  date:        Tue Oct 27 21:17:05 2009 +0000
|  summary:     Added README for support.
|
o  changeset:   0:390c5f52f8e3
user:        beginner
date:        Tue Oct 27 21:17:02 2009 +0000
summary:     First program

Note: Obviously for OpenSolaris repository the messages must follow
the bug-id synopsis format.

References

  1. Mq Tutorial
  2. Merging Patches
  3. Multiple changeset pushes to ON – utilising ZFS snapshots for rollback

Last but not least, hg help mq.

Stace