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