GitUsage

Revision 3 as of 2007-11-19 16:17:24

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.

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.