User Tools

Site Tools


project_management:git

This is an old revision of the document!


git

git is a distributed version control system originally written by Linus Torvalds. The version control metadata is distributed, so every clone is a complete history of the source code. Compare this with centralized systems like SVN or CVS where, if the central repository burns down, everything is lost!

Installing git

Migrating from SVN

Install git-svn

# aptitude install git-svn

Create a temp git repo

This is where we will initially copy the SVN repository.

$ mkdir beca_lims_portal_temp
$ cd beca_lims_portal_temp

Initialize temp git repo

$ git svn init https://172.26.17.2/svn/beca_lims_portal/trunk/ --no-metadata

Map SVN users to git

Create an authors file

/home/aorth/svnauthors:

mnorling = Martin Norling <m.norling@cgiar.org>
aorth = Alan Orth <a.orth@cgiar.org>
root = Alan Orth <a.orth@cgiar.org>
akihara = Absolomon Kihara <a.kihara@cgiar.org>

Tell git about your authors

$ git config svn.authorsfile ~/svnauthors

Populate the temp git repo

$ git svn fetch

Clone from the temp repo

When doing a normal git clone it will take everything we want from the temporary repository, while leaving behind all the SVN cruft that was there to support the git-svn stuff.

$ cd ..
$ git clone beca_lims_portal_temp beca_lims_portal

See the commit history

You should see all your authors mapped from the SVN repository:

$ cd beca_lims_portal
$ git log

Tagging

Tagging a past version

Specify a certain commit by giving the commit's checksum (or the abbreviated checksum):

git tag -a v0.1 8e11e65

Pushing tags to origin

By default git push doesn't send tags to the remote origin; you have to tell it to do it manually.

Certain tag

$ git push origin v0.1

All tags

Push all tags which are not already on the remote origin:

$ git push origin --tags

Configuration

~/.gitconfig

Set a default editor

The editor is used when you have to enter a commit message.

[core]
    editor = vim

Colorize git output

<file>[color] ui = auto [color "branch"] current = yellow reverse local = yellow remote = green [color "diff"] meta = yellow bold frag = magenta bold old = red bold new = green bold [color "status"] added = yellow changed = green untracked = cyan</code>

project_management/git.1276860770.txt.gz · Last modified: 2010/06/18 11:32 by 172.26.14.218