Activity Team/Git Tutorial

From Sugar Labs
< Activity Team
Revision as of 00:22, 29 December 2010 by Quozl (talk | contribs)
Jump to navigation Jump to search

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. You will be asked:

  • Login
  • Email
  • Password
  • Password Confirmation

Fill the fields and press SIGN UP. Gitorious will send you a confirmation email. Check your email, wait for the confirmation, and follow the link provided.

Once you do this, Gitorious knows who you are and how to contact you. You should only need to do this once.

Create SSH Key

Skip this section if you already have an SSH key in .ssh directory that you trust.

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

ssh-keygen -t dsa

For creating a “rsa” key use:

ssh-keygen -t rsa

The key will be stored as two files in the hidden .ssh directory.

id_dsa.pub is your public key. id_dsa is your private key. Only you should have access to this private key. Access to the key will grant access to Gitorious in your name. For example, here is a list of files in the .ssh directory of user strom:

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

You should only need to create a key once, unless you change to another system, or you think your private key was compromised. If you do it again, you must also add the new key to Gitorious in the next section.

Add SSH Key

Log in to http://git.sugarlabs.org/ click on Dashboard, then Manage SSH, then Add SSH key. The Add a new public SSH key page will appear, with a large text entry field. Open your public key in a text editor or web browser, and then paste it into the text entry field. Click on Save.

Once you do this, Gitorious trusts SSH connection from your system because your system has the private key, and Gitorious has the public key. You should only need to do this once, unless you change to another system.

(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

Check that the activity is not already on git.sugarlabs.org. If it is, note the clone URL and skip to the next section. If it is not, then click the Create a new project link on the Projects page, and enter:

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

then click on Create project. There several other question which can be answered later as you have more information.

Once this step is done, Gitorious will have created a git repository at Sugar Labs. You must only do this once for each project.

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.

You should only need to do this once for each project and system. But you can do it again safely.

Identify Yourself to Git

Git on your local system must know your email and name. It uses this when you commit a change, so that when you push or mail it others will know who did it.

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>

You should only need to do this once on a system.

Otherwise, configure git in the repository:

cd ${SLUG}
git config user.email <email-you-used-for-registering-project>
git config user.name <your-name>

You should only need to do this once in a repository.

Add source files or change existing files

You should do this for every set of changes you make.

Commit changes

You should do this for every set of changes you make.

Request review of changes

git format-patch -1

or

git send-email

You may do this for every set of changes you make.

Push changes

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

git push

You should do this for every set of changes you make, when you want to synchronise with other developers or prepare for a release.

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

Also, run

python setup.py fix_manifest

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

You should do this frequently; before starting development, before pushing changes, and when you see other developers commit changes.


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 unless it already exists
  • 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/...