aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: 437b6848e41dbf6e5858d6c3c38e2243365e3298 (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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
====================
shFlags 1.0.x README
====================

GitHub
======

This project is stored on GitHub as https://github.com/kward/shflags.
Documentation is available there, as are all releases and source code. The
source code is stored in Git and can be accessed using the following
information.

Browse the code in a web browser at https://github.com/kward/shflags.

Check out the code locally

```sh
$ git clone https://github.com/kward/shflags.git
```

Documentation is (still) available on the web at
https://github.com/kward/shflags/wiki/Documentation10x


Making a release
================

For these steps, it is assumed we are working with release 1.0.0.

Steps:

- Write release notes.
- Update version.
- Finish change log.
- Check all the code in.
- Tag the release.
- Export the release.
- Create tarball.
- Create hashes for the tarball and sign with `gpg`.
- Update website.

Write Release Notes
-------------------

This should be pretty self explanatory. Use one of the release notes from a
previous release as an example.

Update Version
--------------

Edit `src/shflags` and change the version number in the `FLAGS_VERSION`
variable.

Finish Documentation
--------------------

Make sure that any remaining changes get put into the `CHANGES-X.X.txt` file.

Finish writing the `RELEASE_NOTES-X.X.X.txt`. Once it is finished, run it
through the `fmt` command to make it pretty. (This assumes the lines weren't
already wrapped at 80 chars when the file was edited.)

```sh
$ fmt -w 80 RELEASE_NOTES-2.0.0.txt >RELEASE_NOTES-2.0.0.txt.new
$ mv RELEASE_NOTES-2.0.0.txt.new RELEASE_NOTES-2.0.0.txt
```

We want to have an up-to-date version of the documentation in the release, so
we'd better build it.

```sh
$ pwd
.../shflags/source/1.0
$ rst2html --stylesheet-path=doc/rst2html.css README.txt >README.html
```

Check In All the Code
---------------------

This step is pretty self-explainatory

```sh
$ pwd
.../shflags/source/1.0
$ svn ci -m "finalizing 1.0.0 release"
```

Tag the Release
---------------

```sh
$ cd ..
$ pwd
.../shflags/source
$ ls
1.0
$ svn cp -m "Release 1.0.0" 1.0 https://shflags.googlecode.com/svn/tags/1.0.0
```

Export the Release
------------------

```sh
$ cd ../builds
$ pwd
.../shflags/builds
$ svn export https://shflags.googlecode.com/svn/tags/1.0.0 shflags-1.0.0
```

Create the tarball
------------------

```sh
$ tar cfz ../releases/shflags-1.0.0.tgz shflags-1.0.0
```

Sign the tarball with gpg
-------------------------

```sh
$ cd ../releases
$ gpg --default-key kate.ward@forestent.com --detach-sign shflags-1.0.0.tgz
```

Post the release
----------------

To post the release, the ProjectInfo page needs to be updated with the release
info (release, date, and MD5), and the release with GPG signature needs to
uploaded.


Appendix
========

Related Documentation
---------------------

google-gflags (http://code.google.com/p/google-gflags/)

Miscellaneous
-------------

This document is written using the Restructured Text format to make it easily
parsable into an HTML file.