Git: Difference between revisions

From OLPC
Jump to navigation Jump to search
(→‎Git Commands: word smithing)
(→‎Running: Making a major revision)
Line 24: Line 24:
sudo update-alternatives --config git
sudo update-alternatives --config git


== Using Git for the OLPC Project ==
== Running ==


=== The OLPC Git Repository ===


Most projects maintain their source code in the git repository at http://dev.laptop.org/git. The allows anyone to browse and download source code for the sugar operating system, the sugar shell, activities typically installed on the XO, and activities under development. Browsing through the source code is a great way of introducing yourself to programming in general, and for programming the XO. While most projects are written in Python, some are written in other languages such as Squeak or C.
=== Git Commands ===


As an example, let's look at the [[Memorize]] activity. This activity is bundled with the G1G1 laptops and is reasonably complete and mature. That is, it has few bugs, most of its features, and has most of its documentation. The Git repository is only one piece of the activity's information on the OLPC websites. Here is the Memorize activity's information:
To get a project's code for the first time, use "git clone" :
* [[The_OLPC_Wiki#About_this_wiki|Wiki]]: [[Memorize|This page]] with links, rules, and a development roadmap.
git-clone git://dev.laptop.org/<project-directory> (To get the code)
* [[Trac]]: [https://dev.laptop.org/query?component=memorize&status=new&status=reopened&order=priority This page] tracking bugs and enhancement requests.
* [[Test_issues|Tests]]: [[Tests/Memorize|This page]] describing a test plan for the activity.
* [[Activities|Activities Summary]]: [[Activities|This page]] describing all running activities with links to downloadable .xo files. You will need to scroll down to find Memorize.
* [http://dev.laptop.org/git Git Repository]: [http://dev.laptop.org/git?p=projects/memorygame This page] showing the history and organization of source and data files for the activity.


Project names are not the same as activity names. For example, the Git project name is memorygame while the activity name is Memorize.
For instance:

git-clone git://dev.laptop.org/activities/epals
=== A short overview of a version control system ===
The version control system provides the detailed information on the source code. Using the repository, a user can:
* Browse or download the current source code and data files .
* Browse or download any version that was ever put in the repository.
* See the comments explaining why changes were made.
* See what changed betweens versions.
* See which versions were picked for which releases, also known as 'heads'.

Users that have write access (or ''commit access'') to the repository can do more:
* Add new files to a project.
* Add changes back into the repository, creating new versions.
* Edit comments to explain why changes were made.
* Merge changes made from two different people into a single version.
* Create a separate branch of development to keep changes separate from others.

For more information about version control systems, see [http://en.wikipedia.org/wiki/Revision_control Wikipedia]

=== Browsing Source Online ===

To browse source online, start by going to the main repository page at http://dev.laptop.org/git.

Find a project on the list. Each project has four links:
* [http://dev.laptop.org/git?p=projects/memorygame;a=summary Summary]: See a short description of the project, the owner, recent changes, and the heads.
* [http://dev.laptop.org/git?p=projects/memorygame;a=shortlog Short log]: One line descriptions of changes.
* [http://dev.laptop.org/git?p=projects/memorygame;a=log Log]: Longer descriptions of the changes. Most developers only enter one line per 'commit'.
* [http://dev.laptop.org/git?p=projects/memorygame;a=tree Tree]: The directory tree of the most recent version.

Click on 'tree'. You can browse into subdirectories by clicking on the links. Download individual source code files by clicking on ''raw'', and view the source code in your browser by clicking on ''blob''.

=== Downloading Source Code ===

Anyone can get a project's code. Use the "git clone" :
git-clone git://dev.laptop.org/<project-directory>

You can enter it as "git clone" or "git-clone". For instance:
git-clone git://dev.laptop.org/projects/memorygame
OR
OR
git clone git://dev.laptop.org/activities/epals
git clone git://dev.laptop.org/projects/memorygame


Note that projects are in random directories of the Git repository, such as 'activities',
Note that projects are in random directories of the Git repository, including 'activities',
'projects', the root directory, and individual user accounts. Check the repository at
'projects', the root directory, and individual user accounts. Check the repository at
http://dev.laptop.org/git for the correct spelling and capitalization of each project.
http://dev.laptop.org/git for the correct spelling and capitalization of each project.


For example, the PlayGo activity is listed as "projects/PlayGo". To clone (or download
For example, the EPals activity is listed as "activites/epals". To clone (or download
a copy of the source code) for the PlayGo activity, use:
a copy of the source code) for the EPals activity, use:
git-clone git://dev.laptop.org/projects/PlayGo
git-clone git://dev.laptop.org/activities/epals


While the 'sugar' project is in the root directory:
While the 'sugar' project is in the root directory:
git-clone git://dev.laptop.org/sugar
git-clone git://dev.laptop.org/sugar

When you cannot find a project in the repository, remember that the project name and the activity name are not always related. Search for the project in the wiki. Even projects that do not host their code in the OLPC Git Repository will provide information on their wiki page.

=== Git Commands ===
You can update the code as follows:
You can update the code as follows:

Revision as of 09:21, 20 March 2008


Pencil.png NOTE: The contents of this page are not set in stone, and are subject to change!

This page is a draft in active flux ...
Please leave suggestions on the talk page.

Pencil.png
This command is run in the standard Linux environment via the Terminal Activity. The GUI will probably not integrate comfortably with the XO Laptop's Sugar environment. Your user experience may vary considerably depending on the established environment and the other programs running on the laptop, may need re-installation after an OS Update. See the Linux software category for other commands.


Description

Git is a version control system (sometimes called a "revision control system") for programmers used to track and manage changes to code. It is a decentralized system, with no "master" tree, and was originally written by Linus Torvalds to manage the Linux kernel sources. Git is used by many open source projects to manage development among programmers, and is used by the OLPC as its preferred version control system.

Installation

First, you'll need to fetch and install Git on your machine. The tarball with the latest version is always available at the git site, and you might find your distribution provides packages. You can expect that the OLPC servers will always be running close to the latest version of the git tools.

In OpenSuSE
yast --install git
In RedHat & XO Laptop
sudo yum install git
In Ubuntu 7/Feisty and Debian Etch (and presumably earlier) "git" still refers to gitfm, an unrelated tool. To fix in feisty:
sudo apt-get install git-core cogito 
sudo update-alternatives --config git

Using Git for the OLPC Project

The OLPC Git Repository

Most projects maintain their source code in the git repository at http://dev.laptop.org/git. The allows anyone to browse and download source code for the sugar operating system, the sugar shell, activities typically installed on the XO, and activities under development. Browsing through the source code is a great way of introducing yourself to programming in general, and for programming the XO. While most projects are written in Python, some are written in other languages such as Squeak or C.

As an example, let's look at the Memorize activity. This activity is bundled with the G1G1 laptops and is reasonably complete and mature. That is, it has few bugs, most of its features, and has most of its documentation. The Git repository is only one piece of the activity's information on the OLPC websites. Here is the Memorize activity's information:

Project names are not the same as activity names. For example, the Git project name is memorygame while the activity name is Memorize.

A short overview of a version control system

The version control system provides the detailed information on the source code. Using the repository, a user can:

  • Browse or download the current source code and data files .
  • Browse or download any version that was ever put in the repository.
  • See the comments explaining why changes were made.
  • See what changed betweens versions.
  • See which versions were picked for which releases, also known as 'heads'.

Users that have write access (or commit access) to the repository can do more:

  • Add new files to a project.
  • Add changes back into the repository, creating new versions.
  • Edit comments to explain why changes were made.
  • Merge changes made from two different people into a single version.
  • Create a separate branch of development to keep changes separate from others.

For more information about version control systems, see Wikipedia

Browsing Source Online

To browse source online, start by going to the main repository page at http://dev.laptop.org/git.

Find a project on the list. Each project has four links:

  • Summary: See a short description of the project, the owner, recent changes, and the heads.
  • Short log: One line descriptions of changes.
  • Log: Longer descriptions of the changes. Most developers only enter one line per 'commit'.
  • Tree: The directory tree of the most recent version.

Click on 'tree'. You can browse into subdirectories by clicking on the links. Download individual source code files by clicking on raw, and view the source code in your browser by clicking on blob.

Downloading Source Code

Anyone can get a project's code. Use the "git clone" :

git-clone git://dev.laptop.org/<project-directory> 

You can enter it as "git clone" or "git-clone". For instance:

git-clone git://dev.laptop.org/projects/memorygame
    OR 
git clone git://dev.laptop.org/projects/memorygame

Note that projects are in random directories of the Git repository, including 'activities', 'projects', the root directory, and individual user accounts. Check the repository at http://dev.laptop.org/git for the correct spelling and capitalization of each project.

For example, the EPals activity is listed as "activites/epals". To clone (or download a copy of the source code) for the EPals activity, use:

git-clone git://dev.laptop.org/activities/epals

While the 'sugar' project is in the root directory:

git-clone git://dev.laptop.org/sugar

When you cannot find a project in the repository, remember that the project name and the activity name are not always related. Search for the project in the wiki. Even projects that do not host their code in the OLPC Git Repository will provide information on their wiki page.

Git Commands

You can update the code as follows:

git-pull (To update the code)
git-status -a  (To see the status of your commits)
git-checkout -- (To undo your commits)
git checkout HEAD -- filename (To replace filename with the one at HEAD)

Git for OLPC

To get a project of yours hosted in our Git instance, see Project hosting.

OLPC GIT: http://dev.laptop.org/  (for tracking and submitting bugs and tasks)

    Wiki: http://dev.laptop.org/wiki
 Roadmap: http://dev.laptop.org/roadmap
 Sources: http://dev.laptop.org/browser
 Tickets: http://dev.laptop.org/query

Further Resources