GitUsage

Revision 5 as of 2007-11-20 11:25:22

Clear message

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 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

git checkout ubuntu       
 Previous HEAD position was 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 ### for xorg
debuild -i ".git/*" -S -sa ### 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.