-
Notifications
You must be signed in to change notification settings - Fork 49
/
00e_Upstream_Maintenance
103 lines (65 loc) · 3.42 KB
/
00e_Upstream_Maintenance
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
this file documents how to merge the TinyProd trunk with the upstream T2-SVN trunk.
remote t2-svn points at the svn-git mirror: git://hinrg.cs.jhu.edu/git/tinyos-2.x.svn
remote ffa points at the git repo: gh:tp-freeforall/prod (git@github.com:tp-freeforall/prod.git)
the tinyprod repository is the main release repository.
the tp-freeforall repository actively tracks the tinyos development mainline. Via the tp-freeforall
tinyos branches. And also tracks the mainline tinyprod trunk. This forms the main tp-freeforall
mainline that new development is based on.
Branches:
t2-svn/master: master branch from t2-svn, sync'd tip of the svn trunk.
ffa/svn/current: snapshot of t2-svn/master in the ffa repo. Typically becomes the new
upstream-next.
ffa/upstream: last merge point. TinyProd has included all t2-svn changes (from the trunk)
up to this point on the t2-svn trunk.
ffa/tinyprod-base: minimal base changes forming the TinyProd trunk. ffa/upstream-next is merged
into tinyprod-base to form the new tinyprod-base-next (which will become tinyprod-base).
ffa/tp-master: working tinyprod master. Tracks tinyprod-base. TinyProd Main (master)
ffa/msp430-int: integration branch for new msp430 code. Tracks tinyprod-base. Example
integration branch on tp-freeforall. Topic branch.
Tags:
upstream-<date>: marks state of upstream on said date.
tinyprod-base-<date>: marks state of tinyprod-base on said date.
tos-2_1_2_<n>: a mainline tinyos maintanence release. ie. 2.1.2.0, 2.1.2.1, etc.
tpm-2_1_2-prod_<n>: a tinyprod main maintanence release. ie. tpm-2.1.2-prod.1 etc.
All work is done on a local repository.
1) Fetch current state of ffa and t2-svn.
git fetch ffa
git fetch t2-svn
2) Advance ffa/svn/current <- t2-svn/master
git checkout -t t2-svn/master
git push ffa master:svn/current (should be a fast-forward)
3) Determine appropriate upstream-next, typically will be ffa/svn/current.
4) Create upstream-next branch from merge point.
git branch upstream-next ffa/svn/current (or appropriate commit, ie. rc_4_tinyos_2_1_2)
5) Create tinyprod-base-next and merge upstream-next.
git checkout -b tinyprod-base-next ffa/tinyprod-base
git merge -e upstream-next
<resolve conflicts>
<merge result>
-e makes sure that one can edit the commit message. You want to say something like:
Move tinyprod-base to new upstream-next
Merge branch 'upstream-next' into tinyprod-base-next
upstream-next: 0fe5e80 2012-04-17
6) Tag the new tinyprod-base and upstream. You want to use an annotated tag so that
it is stored as a full commit.
git tag -a -m"upstream movement" upstream-<date> upstream-next
git tag -a -m"tinyprod-base movement" tinyprod-base-<date> tinyprod-base-next
7) Advance any main branches (such as tp-master).
git checkout -b tp-master-next tp-master
git merge tinyprod-base-next
<fix conflicts>
<commit result>
8) Advance any appropriate topic branches. ie msp430-int
It is assumed the topic branch is based off tp-master.
git checkout -b msp430-int-next msp430-int
git merge tp-master-next
<fix conflicts>
<commit result>
9) When happy, advance the branches.
ie. upstream, tinyprod-base, msp430-int.
git branch -M upstream-next upstream
git branch -M tinyprod-base-next tinyprod-base
git branch -M msp430-int-next msp430-int
git push ffa upstream:svn/upstream
git push ffa tinyprod-base
git push ffa msp430-int