This repository was archived by the owner on Nov 15, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathBRANCHING_AND_TAGGING
69 lines (48 loc) · 2.54 KB
/
BRANCHING_AND_TAGGING
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
Here's my attempt to document the process for branching and tagging releases
of codec2 and freedv.
1/ Update the version in CMakeLists.txt in both codec2-dev and freedv-dev to
the intended release version.
Ideally the version in -dev would be greater
than the version branched or tagged but as we can't predict the next release
we settle for them at least being the same.
Minor changes that don't break API/ABI compatibility (including bug fixes)
should only cause a PATCH level bump.
Minor changes that do break API/ABI compatibility should bump the MINOR
version.
MAJOR bumps should be reservered for significant milestones or major changes
to the UI or other changes that could be considered disruptive to the end
users experience.
2/ Copy the source to a new branch directoy.
The directory name should only include the MAJOR and MINOR version number.
(from the freetel directory)
$ svn cp codec2-dev codec2/branches/<MAJOR>.<MINOR>
$ svn cp freedv-dev freedv/branches/<MAJOR>.<MINOR>
3/ Go into each branch directory and make the necessary modifications.
This could include Debug->Release changes (if set)
Specifically in the case of freedv we need to change cmake/BuildCodec2.cmake
to checkout codec2 from the appropriate branch instead of codec2-dev.
4/ Tag a release
Similar to the previous step, except we copy from the branch dir to the tag
dir.
$ svn cp codec2/branch/<MAJOR>.<MINOR> codec2/tag/<MAJOR>.<MINOR>.[PATCH]
$ svn cp freedv/branch/<MAJOR>.<MINOR> freedv/tag/<MAJOR>.<MINOR>.[PATCH]
The patch level should only be specified if it exists (non-zero).
Why both branch and tag you ask? While SVN doesn't enforce it, the idea
behind tags is that they are immutible, meaning once you tag a release it
doesn't change, instead you would update the branch with whatever changes
are needed and tag a new release (bump the minor version).
5/ Export and archive the releases
codec2:
$ svn export codec2/tags/<MAJOR>.<MINOR>.[PATCH] \
codec2-<MAJOR>.<MINOR>.[PATCH]
$ tar acf codec2-<MAJOR>.<MINOR>.[PATCH].tar.xz \
codec2-<MAJOR>.<MINOR>.[PATCH]
freedv:
$ svn export freedv/tags/<MAJOR>.<MINOR>.[PATCH] \
freedv-<MAJOR>.<MINOR>.[PATCH]
$ tar acf freedv-<MAJOR>.<MINOR>.[PATCH].tar.xz \
freedv-<MAJOR>.<MINOR>.[PATCH]
This could probably be somewhat automated through a bash script, I'll work
on that when I have some free time.
6/ Upload to files.freedv.org
I'm not sure who all has access other than me. We'll address this later.