This repository was archived by the owner on Nov 9, 2017. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 401
/
Copy pathbranching_and_merging.txt
91 lines (63 loc) · 3.12 KB
/
branching_and_merging.txt
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
===================
= BRANCH creation =
===================
Check that everything on the trunk runs properly, compiles, passes
tests, etc.
Create the branch by copying the whole trunk (*not* just one module)
to the branches/ folder in the repository. The name of the branch
should reflect the version number of the release(s) you're preparing,
i.e., R000800-branch for the 0.8.0 release---or better yet,
R0008xx-branch to take into account that we might want to use the
branch for subsequent minor-point releases (0.8.1 etc.) The command
line (which should be on a single line) is:
svn copy -m "Created R0008xx-branch from trunk" \
https://quantlib.svn.sf.net/svnroot/quantlib/trunk \
https://quantlib.svn.sf.net/svnroot/quantlib/branches/R0008xx-branch
Please provide an informative message, including the name of the branch
being created.
The branch can now be checked out with the command:
svn checkout \
https://quantlib.svn.sf.net/svnroot/quantlib/branches/R0008xx-branch
===================
= TAG creation =
===================
After a release is made, a tag must be created to hold the code being
released. Unlike branch creation, this has to be made for each module
separately since not all of them are released at the same time. This
can be done as follows:
- when (or even before) the first module is released, a folder is
created in the tags/ folder of the repository to hold the
modules. This can be done with the command line
svn mkdir -m "Created tag R000800f0 to hold the 0.8.0 release" \
https://quantlib.svn.sf.net/svnroot/quantlib/tags/R000800f0
- as each module is released, it is copied in the above folder. For
instance, when a QuantLib release is made, the QuantLib module can
be copied with the command line
svn copy -m "QuantLib 0.8.0 released" \
https://quantlib.svn.sf.net/svnroot/quantlib/branches/R0008xx-branch/QuantLib \
https://quantlib.svn.sf.net/svnroot/quantlib/tags/R000800f0/QuantLib
==================
= BRANCH MERGING =
==================
Changes made on a release branch can be merged back into the main
development line by entering your local working copy of the trunk,
updating, and issuing the command
svn merge -r N:M \
https://quantlib.svn.sf.net/svnroot/quantlib/branches/R0008xx-branch
where N is the last revision which was merged into the trunk (or the
revision at which the branch was created, if no previous merge was
performed) and M is the last revision to be merged (likely HEAD.)
The above command only modifies your working copy; after you resolved
conflicts (if any) and checked that everything runs properly,
compiles, passes tests, etc, you will have to commit the changes.
When you do, please:
- unless absolutely necessary, merge and commit the whole trunk rather
than a single module;
- provide a message such as
"Merged R0008xx-branch into the trunk up to revision N"
or
"Merged revisions M:N from R0008xx-branch into the trunk"
i.e., include the word "merged" and the branch name, so that your
commit can be easily found by searching the log; and include the
number of the latest revision you merged, so that it can be easily
used as the starting point for subsequent merges.