git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Some ideas for StGIT

From
Theodore Tso <tytso@mit.edu>
Date
Aug 4, 2007, 06:38 UTC
Message-ID
<20070804063858.GA13758@thunk.org>
In-Reply-To
<1186163410.26110.55.camel@dv>
On Fri, Aug 03, 2007 at 01:50:10PM -0400, Pavel Roskin wrote:
Show 7 quoted lines
> Hello!
> 
> I was recently disappointed to learn that one of the Linux drivers
> (bcm43xx_mac80211, to be precise) switched from git to quilt.  I asked
> whether StGIT was considered, a discussion followed, and I think the key
> points need to be shared with StGIT developers.  I'll add some of my
> ideas to the mix.

You might also ask them if they considered "guilt", which uses text-based patches. It's a lot easier to use, and if they really want quilt-like functionality, "guilt" will provide it.

My main reason for avoiding StGIT is the fact that at least in the past, I've found it very fragile when I forget and use "git checkout" instead of "stg branch" to switch between branches. The fact that sometimes you have to use the StGit variant of basic git commands has always struck me as confusing, and then recovering when things get screwed can be exciting. Usually it's when I start having to cut and paste SHA1 hashes and running diffs to recreate my patch series after things get screwed is usually about the time when I wonder why I tried using StGIT again. (Don't get me wrong; I'm sure I did something really stupid, and wrong, that caused things to get screwed up. My complaint is that when I do something stupid, StGIT isn't robust and is painful to recover from.)

That's why I like guilt; it doesn't require that you use alternate stg commands for manipulating branches, and since it maintains an external set of text patches, recovering is much easier; worst case I can just do a "git reset --hard" and then follow it up with a guilt push -a. And because it's so stupid simple, it's much rarer that something goes seriously wrong that requires me to use a recovery procedure in the first place.

Editing patch headers are also a lot easier with guilt; you can just go ahead and edit them all, and then you can fresh them in git by doing a "guilt pop -a; guilt push -a". Since it's not using a git-based storage, it doesn't have to rewrite the whole patch stack when you modify a single patch header; you can edit a whole bunch of text headers and then refresh the git commit series just once.

Of course, that's just my preference; others may find StGIT more convenient, or folks may find the new rebase -i to be better yet. YMMV.

     	  		    	 	- Ted
Previous: Josef SipekNext: Yann Dirson
Message 22 of 32 in “Some ideas for StGIT”
  1. Pavel RoskinAug 3, 2007
  2. Andy ParkinsAug 3, 2007
  3. Pavel RoskinAug 4, 2007
  4. Shawn O. PearceAug 4, 2007
  5. Pavel RoskinAug 5, 2007
  6. Jakub NarebskiAug 5, 2007
  7. Shawn O. PearceAug 5, 2007
  8. Junio C HamanoAug 5, 2007
  9. Josef SipekAug 5, 2007
  10. Johannes SchindelinAug 5, 2007
  11. Josef SipekAug 5, 2007
  12. Johannes SchindelinAug 5, 2007
  13. Josef SipekAug 5, 2007
  14. Yann DirsonAug 4, 2007
  15. Catalin MarinasAug 6, 2007
  16. Chris ShoemakerAug 4, 2007
  17. Johannes SchindelinAug 4, 2007
  18. Yann DirsonAug 3, 2007
  19. Catalin MarinasAug 6, 2007
  20. Pavel RoskinAug 6, 2007
  21. Josef SipekAug 6, 2007
  22. Theodore TsoAug 4, 2007
  23. Yann DirsonAug 4, 2007
  24. Josef SipekAug 4, 2007
  25. Pavel RoskinAug 5, 2007
  26. Catalin MarinasAug 6, 2007
  27. Karl HasselströmAug 6, 2007
  28. Pavel RoskinAug 6, 2007
  29. Karl HasselströmAug 6, 2007
  30. Catalin MarinasAug 23, 2007
  31. Karl HasselströmAug 23, 2007
  32. Pavel RoskinAug 6, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.