GitUsage
Ubuntu X-SWAT uses git now
We are now using git for the packages with biggest set of changes, namely "xorg" and "xorg-server". This page is a simplified version of [http://wiki.debian.org/XStrikeForce/git-usage the Debian git-usage] page specifically for our needs.
Git archive policy
Basic tutorial
First you need to pull the repository on your disk, and change the working branch.
foobar xorg % git clone ssh://user-guest@alioth.debian.org/git/pkg-xorg/debian/xorg.git foobar xorg % git checkout origin/ubuntu Note: moving to "origin/ubuntu" which isn't a local branch If you want to create a new branch from this checkout, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new_branch_name> HEAD is now at cdbd698... Prepare changelog for upload.
Now you are on the remote branch, and you need to create a local branch from origin/ubuntu
foobar xorg % git checkout ubuntu Previous HEAD position was cdbd698... Prepare changelog for upload. Switched to branch "ubuntu"
Check the success by running these
foobar xorg % git status # On branch ubuntu nothing to commit (working directory clean) foobar xorg % git log
The first thing usually is to merge with a new Debian release
git pull . debian-unstable <tag>
It most likely complains that there are conflicts, so then make sure you have a merge tool of your choice installed (meld is one alternative) and then run git-mergetool
foobar xorg 138 % git-mergetool
Merging the files: debian/changelog debian/control
Normal merge conflict for 'debian/changelog':
{local}: modified
{remote}: modified
Hit return to start merge resolution tool (meld): Merge leaves behind some temporary files if there are conflicts, so clean them
foobar xorg 139 % git clean Removing debian/changelog.orig Removing debian/control.orig
Now you can do other changes if necessary
<edit> dch git diff
and commit them.
foobar xorg 145 % git commit -a
When everything is set, push the changes to the repository
foobar xorg 146 % git push origin ubuntu
and roll a tarball, don't forget to add -i/I as necessary
foobar xorg 147 % debuild -I ".git/*" -S -sa
after that the package is ready to be uploaded!
Recovering from mistakes
There are (at least) two ways to revert a change, either reverting and older commit with
git revert <hash>
or by resetting the HEAD if you want to just revert the latest (set of) change(s)
git reset <hash of the new HEAD>
Reverting leaves a message on the log, so it's not a "clean" way to undo changes, but necessary when the changes are already committed to the repository, or when there are changes made after that commit.