Build /
AdminGit branching model for ECLiPSeBranches: master this is where development of the next version x.z happens. patches_x_y this is where fixes are committed to after x.y was released. builds_master builds_x_y commits to these branches are done exclusively from the build&test mechanism: it merges the changes from the corresponding development branch (master or patches_x_y) and commits these together with a build number when they integrate successfully. ----<dev v1>---[rel v1]----<dev v2>----[rel v2]----<dev v3>------ master \ \ \ \ \ \ \ \ <bld>------<bld>--\----<bld>-------<bld>--\----<bld>------<bld>- builds_master \ \ \ \ \ \ \ \ \ \ \ \------<fix>------- patches_v2 \ \ \ \ \ \ \ \-<bld>-------<bld> builds_v2 \ \ \ \ \ \-----<fix>--------<fix>-------<fix>--- patches_v1 \ \ \ \ \-<bld>-------<bld>-------<bld>-------- builds_v1 This looks quite complicated. The point of having the build_xx branches is to track the build number without interfering with the regular commits. Initial setupgit checkout master <set version> <set buildno=0, stage=development> git commit -a -m "Init version&buildno" git branch builds_master Making changesFixing a bug: git checkout patches_vi <edit> git commit -a -m "Fix bug" New development: git checkout master <edit> git commit -a -m "Implement feature" Doing a buildAll builds are to be done on a build branch! A slave build, i.e. just re-building the latest release/build:
A new build to incorporate recent changes and increment the build number (as done by the BUILD_ROTD script):
git checkout builds_{master|vi} git merge --no-commit {master|patches_vi} <increment buildno in version.pl> git add <version_file> <build and test> git commit --untracked-files=no -m "Build #" Merge patches_x_y branch into master
git fetch
git merge --no-commit origin/patches_7_0
Making a ReleaseWhat has to be done at a release x.y point:
Note: The build number in master and patches_x_y branches always remains 0: sepia_stage("development"). sepia_build(0). Whereas in the builds_x_y branches: sepia_stage("beta" or ""). sepia_build(1..999). Release: # Mark as 'beta' in builds_master git checkout builds_master <set stage=beta, keep buildno> git commit -m "Mark as beta-release" <version_file> # Do a build (how to force?). If successful: # create the version-specific branches git branch patches_vi master git branch builds_vi builds_master # Update version number on the master branch git checkout master <increment version, see below> git commit -a -m "New version" # Reset build number for master branch builds git checkout builds_master <set buildno=0, stage=development> git commit -m "Reinit buildno" <version_file> This simplified procedure should also work (2022, not tested): # create the version-specific branches git branch patches_vi master git branch builds_vi builds_master # Mark as 'beta' in new builds branch git checkout builds_vi <set stage=beta, keep buildno> git commit -m "Mark as beta-release" <version_file> # Update version number on the master branch git checkout master <increment version, see below> git commit -a -m "New version" # Reset build number for master branch builds git checkout builds_master <set buildno=0, stage=development> git commit -m "Reinit buildno" <version_file> Currently the ECLiPSe version number is scattered through a whole bunch of files in the distribution, and a check should be made to make sure they've all been updated. This information should be centralised, but until that is done, here is a (possibly out-of-date) list of places it occurs (look for X.Y and X_Y): configure.ac configure (run autoconf after changing configure.ac) documents/texinputs/sepiachiphtml.tex documents/tutorial/mapdebugdemo.tcl ecl_inst.tcl ecl_inst.js lib_tcl/eclipse_tools.tcl lib_tcl/example.tcl lib_tcl/example1.tcl lib_tcl/mapembed.tcl lib_tcl/mapremote.tcl lib_tcl/tkeclipse.tcl lib_tcl/tktools.tcl Kernel/src/eclipse.reg |