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 | Reference
git URL shortcuts used:
[url "git+ssh://<LPID>@git.launchpad.net/~ubuntu-server-dev/ubuntu/+source/"]
insteadof = lpusdp:
[url "git+ssh://<LPID>@git.launchpad.net/~<LPID>/ubuntu/+source/"]
insteadof = lpmep:
Definitions: "old debian", "old ubuntu", "new debian", "new ubuntu". By
"merge" we always mean an "Ubuntu merge", which is in git terms really a
rebase. No actual git merge takes place in this entire workflow.
Common git references expected (T for tag, B for branch):
Things that will be imported by a sponsor or the importer (available
from: lpusdp:<package>; ask a sponsor if missing):
* T import/<version> and T upload/<version>
* For T import/<version>: imported from the archive and pushed to
~ubuntu-server-dev as an authoritative source.
* For T upload/<version>: pushed to ~ubuntu-server-dev to specify
exactly what was uploaded.
* Tree identical to corresponding source package.
* Pushing to ~ubuntu-server-dev is restricted to uploaders.
* Parent should be the previous version import or upload tag where
available. An orphan commit is acceptable in the exceptional case
that this is not possible.
* B ubuntu/devel
* In ~ubuntu-server-dev, this must always point to something also
tagged as import/<version> or upload/<version>.
* Pushing to ~ubuntu-server-dev is restricted to uploaders.
* This branch will be rebased to new Debian imports during Ubuntu
"merges" (but tags will be left behind).
Things that should be made available to a sponsor when submitting a
merge (push to: lpmep:<package>):
* T logical/<old ubuntu>
* Breakdown of previous Ubuntu delta.
* Must be based on import/<old debian> or upload/<old debian>.
* One commit per logical change over the entire Ubuntu delta.
* Churn squashed.
* No upstream changes (so only changes in debian/*).
* No changes to debian/changelog.
* No "update-maintainer" or "Vcs-*" or other meta changes.
* To get to this, you will probably start from reconstruct/<old ubuntu>,
described below.
* Sanity checks:
- Identical to the corresponding import/<version> except for
debian/changelog and meta changes in debian/control.
- No line should be touched twice since import/<old debian>, except
where multiple logical changes need to touch the same line.
* Providing this makes it easy for the sponsor to verify correctness
against the previous Ubuntu delta (perform the above sanity checks
and use "git log -p") and then compare the proposed merge against
this broken down previous Ubuntu delta.
* B merge
* Proposed merge for upload.
* Based on import/<new debian> or upload/<new debian>.
* One commit per logical change; no changes to debian/changelog in
those commits.
* One commit for each of merge-changelogs, reconstruct-changelog, any
changelog tweaks and ubuntu-meta (or update-maintainer as you wish).
* debian/changelog should be "released" with the version string
matching the proposed upload version and targeting the correct
pocket.
* Add commits to the end of this branch in response to reviewer
comments.
* If agreed with sponsor that for the changes requested a new rebased
merge branch will be easier to manage than adding commits to the
end, then do this instead. Rebase the original "merge" branch. To
keep history, if you wish tag the old one "merge.v1".
Things you might want to make available to reviewers so that they can check
your process (push to: lpmep:<package>):
* T reconstruct/<old ubuntu>
* Based on import/<old debian>. For each Ubuntu upload since then:
* One commit to pull in a new upstream if there is one (rare). This
must not contain any changes to debian/.
* One commit per logical change.
* One commit for changelog.
* One commit for any ubuntu-meta/update-maintainer change (usually
only in merge uploads).
Merge proposal to make in Launchpad:
lpmep:<package> merge → lpusdp:<package> ubuntu/devel
After review:
If adding commits in response to reveiwer comments, just push again to
lpmep:<package> merge.
If (exceptionally) rebasing in response to reviewer comments:
1. Tag the old branch "merge.v1" (or v2, v3 etc. for future iterations)
2. Rebase the "merge" branch as required
3. Push to lpmep:<package>:
a) The new "v" tag from above.
b) The merge branch (force will be required).
To upload a reviewed merge (for the sponsor):
1. Upload using dput as usual.
2. Tag the merge branch "upload/<version>" (replace ':' and '~' with '_'
to meet git's naming requirements). A lightweight tag is fine.
3. Force push the merge branch to lpusdp:<package> ubuntu/devel.
4. Push the "upload/<version>" tag to lpusdp:<package>.
|