summaryrefslogtreecommitdiff
path: root/Documentation/howto/make-dist.txt
blob: ae9094157c884249c33cb6f6b72cdb7f13e1746c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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
 
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