| Date:   Fri, 12 Aug 2005 22:39:48 -0700 (PDT) | 
 | From: Linus Torvalds <torvalds@osdl.org> | 
 | To: Dave Jones <davej@redhat.com> | 
 | cc: git@vger.kernel.org | 
 | Subject: Re: Fwd: Re: git checkout -f branch doesn't remove extra files | 
 | Abstract: In this article, Linus talks about building a tarball, | 
 |  incremental patch, and ChangeLog, given a base release and two | 
 |  rc releases, following the convention of giving the patch from | 
 |  the base release and the latest rc, with ChangeLog between the | 
 |  last rc and the latest rc. | 
 |  | 
 | On Sat, 13 Aug 2005, Dave Jones wrote: | 
 | > | 
 | >  > Git actually has a _lot_ of nifty tools. I didn't realize that people | 
 | >  > didn't know about such basic stuff as "git-tar-tree" and "git-ls-files". | 
 | > | 
 | > Maybe its because things are moving so fast :)  Or maybe I just wasn't | 
 | > paying attention on that day. (I even read the git changes via RSS, | 
 | > so I should have no excuse). | 
 |  | 
 | Well, git-tar-tree has been there since late April - it's actually one of | 
 | those really early commands. I'm pretty sure the RSS feed came later ;) | 
 |  | 
 | I use it all the time in doing releases, it's a lot faster than creating a | 
 | tar tree by reading the filesystem (even if you don't have to check things | 
 | out). A hidden pearl. | 
 |  | 
 | This is my crappy "release-script": | 
 |  | 
 |         [torvalds@g5 ~]$ cat bin/release-script | 
 |         #!/bin/sh | 
 |         stable="$1" | 
 |         last="$2" | 
 |         new="$3" | 
 |         echo "# git-tag v$new" | 
 |         echo "git-tar-tree v$new linux-$new | gzip -9 > ../linux-$new.tar.gz" | 
 |         echo "git-diff-tree -p v$stable v$new | gzip -9 > ../patch-$new.gz" | 
 |         echo "git-rev-list --pretty v$new ^v$last > ../ChangeLog-$new" | 
 |         echo "git-rev-list --pretty=short v$new ^v$last | git-shortlog > ../ShortLog" | 
 |         echo "git-diff-tree -p v$last v$new | git-apply --stat > ../diffstat-$new" | 
 |  | 
 | and when I want to do a new kernel release I literally first tag it, and | 
 | then do | 
 |  | 
 |         release-script 2.6.12 2.6.13-rc6 2.6.13-rc7 | 
 |  | 
 | and check that things look sane, and then just cut-and-paste the commands. | 
 |  | 
 | Yeah, it's stupid. | 
 |  | 
 |                 Linus | 
 |  |