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.
git clone ssh://user-guest@alioth.debian.org/git/pkg-xorg/debian/xorg.git git checkout -b ubuntu origin/ubuntu HEAD is now at cdbd698... Prepare changelog for upload. Switched to branch "ubuntu"
Check the success by running these
git status # On branch ubuntu nothing to commit (working directory clean) 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
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.
git clean Removing debian/changelog.orig Removing debian/control.orig
Now you can do other changes if necessary. Remember to git-add new files.
<edit> git-add path/to/a-new-file dch git diff
and commit them.
git commit -a
When everything is set, push the changes to the repository.
git push origin ubuntu
Now it's safe to do a release. Don't forget to add -i/I as necessary, and put the tarball in the parent directory before running debuild.
debuild -I".git/*" -S -sa -v$previousversion ### for xorg debuild -i".git/*" -S -sa -v$previousversion ### for rest with an orig.tar.gz
After reviewing the resulting package (debdiff et al) it is ready for upload!
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.
Starting a new git tree
If you have a new project to put into git, first initialize a fresh new repository:
mkdir xorg-my-tree cd xorg-my-tree git init
Add files as usual:
echo "$DEBFULLNAME <$DEBEMAIL>" > AUTHORS git add AUTHORS git commit -m "Initial creation of tree"
Tag the start of your project if you wish:
echo "[user]
signingkey = $DEBEMAIL
" >> .git/config
git tag -s INITIALThen to publish it, first initialize the external git repo on alioth:
ssh user-guest@alioth.debian.org mkdir -p ~/public_html/git/xorg-my-tree.git cd ~/public_html/git/ GIT_DIR=xorg-my-tree.git git-init chmod +x xorg-my-tree.git/hooks/post-update
And then from your local machine, push your changes up:
git push user-guest@alioth.debian.org:public_html/git/xorg-my-tree.git master