| 1 |
Using CVS |
|---|
| 2 |
--------- |
|---|
| 3 |
|
|---|
| 4 |
Swish-e is available via cvs from SourceForge. See http://swish-e.org for |
|---|
| 5 |
links to SourceForge and instructions downloading via cvs. |
|---|
| 6 |
|
|---|
| 7 |
Much of the documentation is not stored in cvs, but rather built from source |
|---|
| 8 |
files (mostly .pod files in the pod directory). |
|---|
| 9 |
|
|---|
| 10 |
Documentation is built with Perl code that's part of the swish-e |
|---|
| 11 |
distribution. Still, your system may not have the required tools for this |
|---|
| 12 |
operation. If that is the case you can disable much of the documentation |
|---|
| 13 |
building by building with: |
|---|
| 14 |
|
|---|
| 15 |
./configure --disable-docs |
|---|
| 16 |
make |
|---|
| 17 |
make check |
|---|
| 18 |
make install |
|---|
| 19 |
|
|---|
| 20 |
Developer Notes: |
|---|
| 21 |
|
|---|
| 22 |
Release and Tag |
|---|
| 23 |
--------------- |
|---|
| 24 |
|
|---|
| 25 |
1) Run cvs update to make sure have current sources and cvs -nq update to |
|---|
| 26 |
make sure there's nothing left to check in |
|---|
| 27 |
|
|---|
| 28 |
2) Edit the pod/CHANGES.pod file to update the date of the release |
|---|
| 29 |
|
|---|
| 30 |
3) Edit the version in configure.in |
|---|
| 31 |
|
|---|
| 32 |
4) run ./bootstrap to create new makefile.in with new version string |
|---|
| 33 |
|
|---|
| 34 |
5) run make distcheck to make sure it all builds correctly. This will also |
|---|
| 35 |
update the HTML documentation (since CHANGES.pod is newer). This is |
|---|
| 36 |
IMPORTANT because if the HTML docs are out of date then make on users |
|---|
| 37 |
systems will attempt to build the documentation and they may not have the |
|---|
| 38 |
right tools installed. |
|---|
| 39 |
|
|---|
| 40 |
6) good idea to upload the tarball created by make distcheck someplace and |
|---|
| 41 |
then test on a few platforms |
|---|
| 42 |
|
|---|
| 43 |
7) Check in the updated version Makefiles: |
|---|
| 44 |
|
|---|
| 45 |
$ cvs ci |
|---|
| 46 |
|
|---|
| 47 |
8) Tag the release. For example: |
|---|
| 48 |
|
|---|
| 49 |
$ cvs tag rel-2-4-0 |
|---|
| 50 |
|
|---|
| 51 |
9) Upload to swish-e site -- see README on swish-e site for details. |
|---|
| 52 |
|
|---|
| 53 |
Now move on to development. Change version in configure.in (2.5.0 for example), |
|---|
| 54 |
run ./bootstrap and check in. |
|---|
| 55 |
|
|---|
| 56 |
|
|---|
| 57 |
Patching a previous version |
|---|
| 58 |
--------------------------- |
|---|
| 59 |
|
|---|
| 60 |
Say development has started on the next release but a bug is found in the last. |
|---|
| 61 |
Development has gone on too far to use the development version. |
|---|
| 62 |
|
|---|
| 63 |
-- Creating a Branch in CVS - |
|---|
| 64 |
|
|---|
| 65 |
The first thing that is needed is to create a branch of the cvs tree. This |
|---|
| 66 |
only needs to be done *once*, and there's more than one way to do it: you can |
|---|
| 67 |
either branch based on a checked out version (e.g. first check out the tagged |
|---|
| 68 |
version), or the branch can be done on the repository. |
|---|
| 69 |
|
|---|
| 70 |
So, to just branch the repository: |
|---|
| 71 |
|
|---|
| 72 |
$ cvs -d :ext:<developer>@cvs.sourceforge.net:/cvsroot/swishe rtag -b -r rel-2-4-0 rel-2-4-0-patches swish-e |
|---|
| 73 |
|
|---|
| 74 |
which says to create a branch called rel-2-4-0.patches branched off of the |
|---|
| 75 |
tagged source rel-2-4-0. |
|---|
| 76 |
|
|---|
| 77 |
[See NOTE below about before following this example] |
|---|
| 78 |
|
|---|
| 79 |
-- Checkout branch -- |
|---|
| 80 |
|
|---|
| 81 |
Again, two ways to go here. You can convert your existing local source tree |
|---|
| 82 |
to the branch or simply do a new checkout. I prefer to do a new checkout. |
|---|
| 83 |
|
|---|
| 84 |
$ cvs -d :ext:<moseley>@cvs.sourceforge.net:/cvsroot/swishe -z3 checkout -r rel-2-4-0-patches -d swish-e-2.4.0.patches swish-e |
|---|
| 85 |
|
|---|
| 86 |
This specifies the Root again with -d, -z3 is compression, we checkout |
|---|
| 87 |
rel-2-4-0-patches from the swish-e module, but instead of writing to |
|---|
| 88 |
the "swish-e" directory use -d to create a directory called |
|---|
| 89 |
swish-e-2.4.0.patches swish-e. |
|---|
| 90 |
|
|---|
| 91 |
-- Make chages -- |
|---|
| 92 |
|
|---|
| 93 |
Make changes as normal. Check in as normal: |
|---|
| 94 |
|
|---|
| 95 |
$ cvs ci |
|---|
| 96 |
|
|---|
| 97 |
and that will ONLY update this current branch. |
|---|
| 98 |
|
|---|
| 99 |
|
|---|
| 100 |
-- Merging changes back to main branch -- |
|---|
| 101 |
|
|---|
| 102 |
Changes and fixes that are done on the branch will proably need to be moved |
|---|
| 103 |
to the main branch. |
|---|
| 104 |
|
|---|
| 105 |
To merge in changs from another branch into your working copy (the main HEAD |
|---|
| 106 |
branch - 2.5.x in this example) |
|---|
| 107 |
|
|---|
| 108 |
(in your 2.5.x working copy) |
|---|
| 109 |
$ cvs -j rel-2-4-0-patches |
|---|
| 110 |
|
|---|
| 111 |
That should update your sources. Watch out for conflicts! |
|---|
| 112 |
|
|---|
| 113 |
Note that this is a bit tricky, because this will likely change the version |
|---|
| 114 |
number in configure.in. |
|---|
| 115 |
|
|---|
| 116 |
Verify version in configure.in (might have been changed) then don't forget to |
|---|
| 117 |
check the new patches into the HEAD branch. |
|---|
| 118 |
|
|---|
| 119 |
$ cvs ci -m "Merged patches from 2-4-0-patches" |
|---|
| 120 |
|
|---|
| 121 |
Now, once merged go to your patches directory (swish-e-2.4.0.patches in this |
|---|
| 122 |
example) and *tag* it. That will allow merging later updates into the HEAD |
|---|
| 123 |
branch without re-merging what was just merged. |
|---|
| 124 |
|
|---|
| 125 |
(in the .patches directory) |
|---|
| 126 |
$ cvs tag rel-2-4-1 |
|---|
| 127 |
|
|---|
| 128 |
that just tags the rel-2-4-0-patches branch. |
|---|
| 129 |
|
|---|
| 130 |
Then when 2.4.2 is later created, just the changes from 2.4.1 to 2.4.2 can be |
|---|
| 131 |
merged: |
|---|
| 132 |
|
|---|
| 133 |
(in the main branch) |
|---|
| 134 |
$ cvs update -j rel-2-4-1 -j rel-2-4-0-patches |
|---|
| 135 |
|
|---|
| 136 |
which says merge from the tag rel-2-4-1 to the end of the branch |
|---|
| 137 |
rel-2-4-0-patches into the current directory. |
|---|
| 138 |
|
|---|
| 139 |
At least I think that's how it works. |
|---|
| 140 |
|
|---|
| 141 |
|
|---|
| 142 |
NOTE: The example for naming the branch may not be best. In this example we |
|---|
| 143 |
are fixing a bug in 2.4.0 so will likely release a 2.4.1. Development is now |
|---|
| 144 |
in 2.5.x. So it may be better to create the branch as rel-2-4-patches (instead |
|---|
| 145 |
of rel-2-4-0-patches) and then all 2.4.x updates will get added there. |
|---|
| 146 |
|
|---|