Kuku/Git Usage: Difference between revisions

From OLPC
Jump to navigation Jump to search
m (→‎Useful Links: corrected another external link)
 
(11 intermediate revisions by 6 users not shown)
Line 1: Line 1:
This page describes how the kuku project uses git to manage the source code. Here you will find useful git commands for playing with the kuku code, as well as a description of what each branch means in terms of kuku development.
This page describes how the kuku project uses git to manage the source code. Here you will find useful git commands for playing with the kuku code, as well as a description of what each branch means in terms of kuku development. The git commands listed below are in explit (long) form so as to better keep in mind the way git does things.

The thing to keep in mind is that git is all about branching and merging. These operations are at the core of most git commands, so it is good to be comfortable with branching followed by merging for all of the git workflows.

==Kuku Branch Structure==
Kuku shipped. The most up to date list of branches can be seen on our [http://dev.laptop.org/git?p=projects/kuku trac page].

It is important to note that sugar-jhbuild pulls from the master branch by default.


==Git commands for working with Kuku==
==Git commands for working with Kuku==
Line 9: Line 16:
===Adding a Remote Branch===
===Adding a Remote Branch===
First create a local branch from the current master branch
First create a local branch from the current master branch
git branch Trial-2
git branch trial-2
Now checkout that branch you just created
Push this branch to the remote master
git checkout Trial-2
git push origin trial-2:trial-2
After adding/editing/commiting this branch, push it to the remote master
git push origin Trail-2:Trial-2


===Working with Remote Branches===
===Working with Remote Branches===
See the remote branches with
git branch -r
Or see local branches with
git branch
Or see all branches with
git branch -a
For each remote branch you want to work on, create a local branch
git branch <local name> <remote name>
git branch my-trial-2 origin/trial-2
Checkout your new branch
git checkout trial-2
add/edit/commit, then push your changes upstream with
git push origin my-trial-2:trial-2


===Pushing to Remote Branches===
===Working with Local Branches===
This is usefel to test out an idea locally without adding a branch to the remote master repo. Make a local branch with
git branch local_branch_name branch_start_point
Where the branch_start_point is the name of a branch you want to start working on. For example, to start working on the master remote branch, you can do
git branch my-new-idea origin/master
If you have already made commits to your master branch, and want to branch off of there, you could do
git branch my-new-idea master
Or if you want to do a fix of a trial-2 bug, you could do
git branch trial-2-bug-fix origin/trial-2

See that your new branch is there with
git branch
Switch to that branch
git checkout local_branch_name
add/edit/commit. You can merge this branch with the master branch with
git checkout master
git merge local_branch_name

Suppose you fixed the trial-2 bug you were working on in your trial-2-bug-fix branch and you want to push that upstream. Once you have committed, you can do
git push origin trial-2-bug-fix:trial-2

Once you have committed changes to a local branch, you can remove it with
git branch -d local_branch_name
Or if you don't want to commit, but juts wipe it out, use
git branch -D local_branch_name

=== Fetching Upstream Changes ===
Suppose another developer has made changes and you want to see them. This can be done in several ways.
git fetch remote_branch_name
will update your remote branches. You can see these branches with
git branch -r
For example, suppose someone else did a trial-2 bug fix, and pushed the changes to origin/trial-2. You are working in trial-2-bug-fix. You should first fetch the newest code
git fetch origin/trial-2
Now, create a local branch from the newest trial-2 code:
git branch newest-trial-2
Now you can merge this code into your own trial-2-bug-fix branch
git merge newest-trial-2
Make sure things merged correctly, then you can delete your temporary local trial-2 branch
git branch -d newest-trial-2


== Useful Links ==
== Useful Links ==
[http://www.kernel.org/pub/software/scm/git/docs/tutorial.html Git Tutorial Part 1]
[http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html Git Tutorial Part 1]


[http://www.kernel.org/pub/software/scm/git/docs/cvs-migration.html Git for CVS Users]
[http://www.kernel.org/pub/software/scm/git/docs/gitcvs-migration.html Git for CVS Users]


[http://wiki.sourcemage.org/Git_Guide SourceMage Git Guide]
[http://wiki.sourcemage.org/Git_Guide SourceMage Git Guide]

[http://www.youtube.com/watch?v=4XpnKHJAok8&v3 Linus Torvalds on Git - Google Talks - You Tube]
[[Category:Git]]

Latest revision as of 16:45, 30 September 2008

This page describes how the kuku project uses git to manage the source code. Here you will find useful git commands for playing with the kuku code, as well as a description of what each branch means in terms of kuku development. The git commands listed below are in explit (long) form so as to better keep in mind the way git does things.

The thing to keep in mind is that git is all about branching and merging. These operations are at the core of most git commands, so it is good to be comfortable with branching followed by merging for all of the git workflows.

Kuku Branch Structure

Kuku shipped. The most up to date list of branches can be seen on our trac page.

It is important to note that sugar-jhbuild pulls from the master branch by default.

Git commands for working with Kuku

Importing the Code

git clone git://dev.laptop.org/projects/kuku

Adding a Remote Branch

First create a local branch from the current master branch

git branch trial-2

Push this branch to the remote master

git push origin trial-2:trial-2

Working with Remote Branches

See the remote branches with

git branch -r

Or see local branches with

git branch

Or see all branches with

git branch -a

For each remote branch you want to work on, create a local branch

git branch <local name> <remote name>
git branch my-trial-2 origin/trial-2

Checkout your new branch

git checkout trial-2

add/edit/commit, then push your changes upstream with

git push origin my-trial-2:trial-2

Working with Local Branches

This is usefel to test out an idea locally without adding a branch to the remote master repo. Make a local branch with

git branch local_branch_name branch_start_point

Where the branch_start_point is the name of a branch you want to start working on. For example, to start working on the master remote branch, you can do

git branch my-new-idea origin/master

If you have already made commits to your master branch, and want to branch off of there, you could do

git branch my-new-idea master

Or if you want to do a fix of a trial-2 bug, you could do

git branch trial-2-bug-fix origin/trial-2

See that your new branch is there with

git branch

Switch to that branch

git checkout local_branch_name

add/edit/commit. You can merge this branch with the master branch with

git checkout master
git merge local_branch_name

Suppose you fixed the trial-2 bug you were working on in your trial-2-bug-fix branch and you want to push that upstream. Once you have committed, you can do

git push origin trial-2-bug-fix:trial-2

Once you have committed changes to a local branch, you can remove it with

git branch -d local_branch_name

Or if you don't want to commit, but juts wipe it out, use

git branch -D local_branch_name

Fetching Upstream Changes

Suppose another developer has made changes and you want to see them. This can be done in several ways.

git fetch remote_branch_name

will update your remote branches. You can see these branches with

git branch -r

For example, suppose someone else did a trial-2 bug fix, and pushed the changes to origin/trial-2. You are working in trial-2-bug-fix. You should first fetch the newest code

git fetch origin/trial-2

Now, create a local branch from the newest trial-2 code:

git branch newest-trial-2

Now you can merge this code into your own trial-2-bug-fix branch

git merge newest-trial-2

Make sure things merged correctly, then you can delete your temporary local trial-2 branch

git branch -d newest-trial-2

Useful Links

Git Tutorial Part 1

Git for CVS Users

SourceMage Git Guide

Linus Torvalds on Git - Google Talks - You Tube