Git Workflow of the pkg-opennebula OpenNebula Team
See also OpenNebula
- Anonymous access : git://git.debian.org/pkg-opennebula/opennebula.git
Developper access (need account on Alioth : git+ssh://git.debian.org/git/pkg-opennebula/opennebula.git
- apt-get install git-buildpackage pristine-tar devscripts
- apt-get build-dep opennebula
Quick "overview" of build process
git clone git+ssh://git.debian.org/git/pkg-opennebula/opennebula.git cd opennebula/ git-buildpackage --git-builder="debuild -uc -us"
Cloning repository for local work
git clone ssh://<alioth-login>@git.debian.org/git/pkg-opennebula/opennebula.git
Content of Git repository : branches / tags
To be more precise, here is content of each GIT branch :
- remotes/origin/upstream is just in "clean" import of opennebula-2.0.1.tar.gz (minus some *.jar files) is described in debian/README.source
- remotes/origin/pristine-tar store some delta files which are applied by git-buildpackage to always get the same tarball (same md5 + sha256 sums) from GIT branch.
- remotes/origin/master is our working branch = upstream + debian/ directory. You can freely commit to this one.
So during each build, git-buildpackage extract remotes/origin/upstream to opennebula_2.0.1.orig and apply pristine-tar to get the same .tar.gz. Then it call the x-builder of your choice : debuild or pbuilder/sbuild (for clean chroot build).
Workflow for local modifications
You can follow: BOINC/Development/GitUsage#Typicalworkflowingitdevelopment
We've created a new squeeze branch off of master and make the necessary changes there (like changing Build-Depends).
We should create a squeeze chroot for clean build:
DIST=squeeze git-pbuilder create
Checkout squeeze branch and made necessary changes:
git checkout squeeze vi debian/control dch --bpo -a
Then to build for in a squeeze chroot :
git-buildpackage --git-pbuilder --git-dist=squeeze --git-debian-branch=squeeze
For generics guidelines: http://www.eyrie.org/~eagle/notes/debian/git.html "Backporting"
We've created new experimental and upstream-experimental branches for packaging new versions of OpenNebula that cannot go to unstable yet – currently for packaging OpenNebula 3.6 during Wheezy freeze:
upstream-experimental contains the upstream tarball contents.
experimental is debian packaging merged with upstream-experimental. commit here to contribute to packaging new OpenNebula version
Both the regular branches and the experimental branches use the branch pristine-tar as pristine-tar picks up things by commit name
Within the experimental branch gbp is configured to use these experimental branches:
ms@mango:~/[…]/opennebula> cat debian/gbp.conf [DEFAULT] # use pristine-tar: pristine-tar = True # use experimental branches for debian packaging and upstream # remove this after these are merged back into regular branches upstream-branch = upstream-experimental debian-branch = experimental
Importing new upstream release
For each new "upstream" release, I just use git-import-dsc to :
- import tarball in upstream branch
- import binary-delta-diff from pristine-tar in pristine-tar branch
- merge back changes to master branch
Options for this "git-import-orig" is described in debian/README.source of opennebula. This is automated by :
- download upstream tarball with uscan using debian/watch information
- launch debian/orig-tar.sh
- ... which call git-import-orig with the right options