Hi all, Since the debian-science git repository is now up and running, it's time to populate it with packages. I uploaded the source packages I maintain already (these are meshlab, imview and imview-doc, I'm also thinking of moving rasmol from collab-maint).
There are certainly more than one way to use git for maintaining packages, but I'll outline the way I do it, for the benefit of people who may be just starting with git: Upstream sources are kept in the 'upstream' branch and updated from a tarball every time there is a new release. It's also possible to set up a branch which is periodically synchronized from the upstream VCS via a cron job calling git-svn or similar, if one wants to track development versions. When upstream sources are stored in git, bit-identical copies of the upstream tarballs can also be easily stored in version control with Joey Hess's pristine-tar program. For one of my packages, storing a 2.5 MB source tarball requires only 40 kB of extra space in the form of a delta file, stored in the 'pristine-tar' branch. By doing this, everything needed to build and upload a source package can be downloaded with a single git clone command. When developing patches which touch the upstream sources, create a new branch for each patch, branching from 'upstream'. This way the development history for each feature branch is clean and the patch can be easily submitted to the upstream author if necessary. These feature branches, if not submitted to upstream, should be merged with the upstream branch every time a release is made, to resolve possible conflicts. The Debian files are kept in the 'debian' branch, which should branch (usually by merging) from the latest upstream. In the case one has feature branches as described above, this branch also works as an integration branch. All the feature branches are merged to this branch and conflicts between them resolved. The package is built normally using debuild -i\.git or just the debian/rules binary target. Additionally, publishing the repository in alioth (git.debian.org) requires some steps which are not completely obvious. Here's a short guide: First, in alioth: # create a bare git repository cd /git/debian-science/ mkdir project.git ; cd project.git git --bare init # activate the default post-update hook to allow http checkouts chmod a+x hooks/post-update # The non-obvious part: If your repo does not have a 'master' branch # (like in the example above), the HEAD ref in the repository needs # to be set to point to something that exists in the repo you are about # to push. Otherwise checkouts from the clone of this repo will fail. # In our case this branch should be 'debian' echo 'ref: refs/heads/debian' > HEAD Then locally: # tell your local git repo about the remote git remote add alioth ssh://[EMAIL PROTECTED]/git/debian-science/project.git # hack away [...] # push to alioth, when you want to publish your repository git push --all alioth git push --tags alioth And that's it. Teemu -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]