Activity Team/Git Tutorial

< Activity Team
Revision as of 23:34, 28 December 2010 by Quozl (talk | contribs)

Team Home   ·   Join   ·   Contacts   ·   Resources   ·   FAQ   ·   Roadmap   ·   To Do   ·   Meetings

Gitorious

Getting started with Gitorious, a web based Git service used by Sugar Labs.

Create an account

Create an account on git.sugarlabs.org by selecting the register link on the page.

Enter your

  • Login
  • Email
  • Password
  • Password confirmation

Gitorious sends you a confirmation mail. Check your email, wait for the confirmation, and follow the link provided.

Create SSH Key

To create a key use ssh-keygen. The following command will create an “dsa” key:

ssh-keygen -t dsa

For creating a “rsa” key use:

ssh-keygen -t rsa

The generated key will be stored in the hidden .ssh folder. id_dsa is your private key. Only you should have access to this private key. id_dsa.pub is your public key.

ls -al ~/.ssh
-rw-------   1 strom strom  668 2009-12-17 21:51 id_dsa
-rw-r--r--   1 strom strom  603 2009-12-17 21:51 id_dsa.pub

Log in to http://git.sugarlabs.org/account and upload you public key. In your account you can find a link named Add SSH key. You can paste your public key directly to the input field.

(With ssh-keygen you can specify the name of your key file. Using this feature is not a good idea, because we haven't tested it. Keys should generally be located in ~/.ssh/id_rsa.pub or ~/.ssh/id_dsa.pub.)

ToDo: Does keys protected with a passphrase work together with GIT?

ToDo: What is the difference between DSA and RSA keys?

  • until the patent expired, RSA could not be used in some countries,
  • some countries have laws against consumer use of encryption.

Create a Project

Created a new project by selecting the new link on the project page.

Enter your

  • Project Title
  • Project slug (this defaults to a file name format of your project title)
  • License
  • Description

There several other question which can be answered later as you have more information.

Once this step is done, Gitorious has created a git repository at Sugar Labs.

Create Local Repository

Clone it from Gitorious:

git clone gitorious@git.sugarlabs.org:<slug>/mainline.git <slug>.git

Replace <slug> substring with your project slug value.

Initialize git global settings

Git must know your email and name. It uses this when you push or mail a change.

If you do not use git on your system for any other project, you can configure git:

git config -f ~/.gitconfig user.email <email-you-used-for-registering-project>
git config -f ~/.gitconfig user.name <your-name>

Otherwise, configure git in the repository after cloning below:

git config user.email <email-you-used-for-registering-project>
git config user.name <your-name>

Add source files or change existing files

Commit changes

Request review of changes

git format-patch -1

or

git send-email

Push changes

Your changes have to be pushed from your local repository to git.sugarlabs.org so that others can see them.

git push

Pull changes

Others, including pootle, may add changes to the repository at git.sugarlabs.org. You must merge these with your repository.

Use

git-pull

to periodically pull pootle updates to the project .po files (every Friday?)

Also, run

python setup.py fix_manifest

to update the .mo files after updating the .po files


alsroot taught me about another git feature: tags

git tag -m "Release 36" v36 HEAD
git push --tags

bertf explained to me that git-pull does a combination of fetch and merge, so to merge a patch...

git pull git://git.sugarlabs.org/infoslicer/alsroots-clone.git master


A few notes re moving to the Sugar Labs infrastructure:

  • use git init to create a new project
  • source packages now go in

shell.sugarlabs.org:/upload/sources/sucrose/fructose/

download.sugarlabs.org:/srv/www-sugarlabs/download/sources/sucrose/fructose/
  • don't forget to update addons as well!!
  • and to copy the tar file to download.sugarlabs.org
download.sugarlabs.org:/download/sources/honey/...
download.sugarlabs.org:/download/sources/sucrose/fructose/...