Kuku/Git Usage
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