= Git repository = The source code of grafx2 is stored in a Git repository, where all versions of each file are available. The web site allows [/browser browsing through it] (read-only), but developers can use a Git client for full access. = Location = The repository is hosted on gitlab. For developers with commit access, use this URL: {{{ git clone git@gitlab.com:GrafX2/grafX2.git }}} You need to set up your gitlab account first for this to work (ssh key to connect, etc). Alternatively, you can checkout using the https URL, but then you will need to type in your password each time you want to push your changes. _note: This creates a new working space in (new?) directory *grafx2*_ ---- == Repository branches == === master === This is where most work takes place. It contains at all times the work-in-progress version, sometimes unstable. When publishing a stable version, the code in master is copied to the release and replaces it. === release branch === Contains a development branch for the latest stable release version. Most of the time there is no activity, the branch stays available to quickly fix a critical bug that would be found in a release version. To check out this branch (after cloning): {{{ git checkout release }}} This switches your existing working copy to the release branch. ==== Reporting fixes from release into trunk ==== After they're coded and packaged, the fixes can be reported back to trunk (so the next unstable version also benefits from the fixes). To do so: 1. change directory to a working copy of trunk, and type: {{{ git merge origin/release }}} 1. Solve any conflicts (sometimes the fixes are already applied but differently) 1. Push the changes ==== New release ==== When the trunk is deemed stable, the release branch is upgraded to match its version: 1. Checkout the master branch 1. Change the version label (remove "wip") {{{ git push -f origin/release git tag origin/release v2.x git push origin v2.x }}} When done, you generally change the version label in trunk by adding 0.1 and "wip". === Creating a new branch === Create a branch `new_branch` starting as a copy of master : {{{ git checkout master git checkout -b new_branch git push origin new_branch }}}