Josef “Jeff” Sipek

March 18, 2007

Guilt - Two Months Later

Quite a bit has changed in Guilt over the past two months. There have been 5 releases, as well as one release candidate (v0.19-rc1). During these releases, 71 files were changed (2210 insertions, 293 deletions) in 98 commits. There has been a number of patches I got via email:


Brandon Philips: 4
Nur Hussein: 3
Theodore Ts'o: 2
Yasushi SHOJI: 7

Brandon Philips contributed a significant portion of the documentation - currently every command has a man page! Additionally, he is trying to get Guilt picked up by Debian. So if you happen to qualify as a sponsor, do the right thing ;)

Nur Hussein contributed an uninstall script as well as fixed the patchbomb script.

As far as I know, Ted Ts'o is using Guilt to maintain his ext4 tree.

Yasushi contributed created a few patches which add several bits of quilt functionality (e.g., guilt-files, and guilt-series -v).

I have also been contacted by Peter Williams, the maintainer of gquilt (a GUI wrapper for quilt and mq, with a very similar name to guilt), if I would like to have guilt added as a backend. I checked out gquilt, and it looks really nice. I also looked at what it would take to add the backend, and it doesn't look like that much effort, but I need to implement few bits of functionality first. If anyone wants to volunteer, let me or Peter know. :)

May 13, 2007

Guilt: Taking over the world one repository at a time

It is really interesting how sometimes a bit of luck makes things happen. For example, little over 6 months ago, I wrote a few shell scripts, which called gq, to make my life a little easier. I worked on the for about a week, and then I decided I should share with the community. So I tagged the sources as version 0.10, and announced it on the git mailing list. One of the comments I got was about the fact that there is another project (completely unrelated) that had the name gq for a long time. Oh well, it was time for me to rename it. After some procrastination and hacking, new year rolled around, and I decided to release 6th version (v0.15), but this time it wouldn't be gq anymore - instead I would call it Guilt. My post from January describes how it got the name. As with every version of gq, I announced Guilt v0.15. I could see that Guilt was getting way better, and so I felt even more motivated to hack on it. v0.16 came out. And then a very unexpected thing happened. I got two patches from a guy on the mailing list. Sweet! I applied them, and release v0.17. Shortly thereafter, during the Linux Storage and Filesystem (LSF) workshop in San Jose, I got a patch from Ted Ts'o (of the ext[234] fame). I couldn't believe it, but it was true. I decided to release v0.19 the next day. At LSF, I met Brandon Philips, and we talked about Guilt. Rather shortly after LSF, he send me an email saying that he'll try to get Guilt into Debian. :) Well, about a month ago, he succeeded.

As many of you may already know, I stick around a number of channels on OFTC's IRC network, and it is rather interesting to see people try Guilt, or people talk about Guilt; generally suggesting that someone use it - and people do!

Anyway, I hope I didn't bore everyone to death with my little tour of history behind Guilt.

January 13, 2007

Git Quilt or Guilt for short

Here's another update on my version control system escapades (a follow up to Do I have...).

As several people mentioned during the 0.10 release of gq, the name is already in use by a rather well established project. So, after some idleing and hacking, I decided that it was time to give the scripts a new name, and announce the new version on the git and linux-kernel mailing lists (the announcement). I can't take credit for the rather clever name, I asked a few people, and the best suggestion was by Dave - Git Quilt or Guilt for short.

One thing I did not expect was the fact that someone would contribute 2 patches very shortly after I announced it. Here's the list of changes that made between v0.16 and v0.17:


Horst H. von Brand (2):
Fix up Makefiles
Run regression on the current version

Josef 'Jeff' Sipek (24):
A minimalistic makefile
Contributing doc file
Added guilt-add
Added guilt-status
Expanded the HOWTO
Added usage strings to all commands
All arguments to guilt-add are filenames
More thorough argument checking & display usage string on failure
Changed status file format to include the hash of the commit
Fixed guilt-refresh doing an unnecessary and somewhat wrong pop&push
Fixed up guilt-{delete,pop} not matching the patch name properly
Fixed guilt-{delete,pop} regexps some more
Force UTC as timezone for regression tests
Fixed a bug in guilt-pop introduced by the status file format switch
Error messages should go to stderr
Merge branch 'usage'
Merge branch 'status-file'
Yet another TODO update
Added guilt-rm
Makefile update & cleanup
pop: Display the name of the patch from the status file, not the series file
new: Create dir structure for the patch if necessary
Documentation/TODO: Mark guilt-rm as done
Guilt v0.17

I haven't had much time to work on Guilt since then, but I got an rather encouriging email from someone, who tried to apply Andrew Morton's -mm patch series on top of the kernel tree, but failed. The problem is with the way git-apply works. If it applies a patch with an offset, it still returns non-zero status. This makes guilt think that at least one of the hunks in the patch did not apply at all. As far as I know, there is no way to get the necessary information out of git-apply without either modifying it (which I might as well), or parsing the output for signs of rejection and ignoring the return status completely. I don't like the latter, but changing git-apply would limit the number of compatible git versions. :-/

Needless to say, patches are welcomed :)

Powered by a pile of c