Date: Fri, 12 Aug 2005 22:39:48 -0700 (PDT) From: Linus Torvalds To: Dave Jones 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-script 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