git clone git://uclibc.org/uClibc.git
If you are not already familiar with using Git, here are some useful links:
Once you've checked out a copy of the source tree, you can update your source tree at any time so it is in sync with the latest and greatest by entering your uClibc directory and running the command:
git pullBecause you've only been granted anonymous access to the tree, you won't be able to push any changes.
$ git config --global user.name "Your Full Name" $ git config --global user.email "firstname.lastname@example.org"Mailing Lists. Just sign up to the dev mailing list, describe the changes (what/why/how/etc...), and include your patch.
Since we are using git, that means the repository you check out is a standalone repo and can have all the normal commands run on it. That means you should commit your changes to it and then create/e-mail the resulting patch. Unlike centralized source control systems, the "commit" step is broken up into two steps: (1) commit to the repository (in this case, your local repo) and (2) push to the central repository (only official developers can do this).
So the normal code flow will look something like:
Things to keep in mind when submitting your patches:
To make the e-mail process simpler, you should set the mailing list in your git repo accordingly (run this in the checked out repo):
$ git config --add sendemail.to email@example.com
When writing a changelog for your commit, you should use the proper changelog format to ensure nice workflows with other git commands. This format is fairly strict and unlike centralized scm's you might be familiar with such as svn or cvs. Note that the Signed-off-by tag can easily be added by using the '-s' option when running `git commit`.
the first line is a short one-liner summary After a blank line, you should use complete sentences with lines properly wrapped at e-mail lengths. You should also include relevant information such as output from tools showing errors. After all of your explanatory text, there should be another blank line and then the relevant tags (Signed-off-by/CC/etc...). Signed-off-by: Your Full Name <firstname.lastname@example.org>Once you have a properly written changelog, use `git format-patch` to turn a commit into an e-mail. You can then edit the patch to add additional info after the triple dash which comes after the commit tags:
--- the triple dash above is used to mark the end of the changelog and the start of any additional comments that should not be included in the changelog ... that may include things like changes in the proposed patch itself, or random questions for peopleMailing Lists. So you've contributed quite a bit and you're still here? Let's move on then!
There's the fun logistic issues to work out first, so here's the new developer
ssh-keygen -b 4096This will output the files id_rsa (your private key -- do not give this to anyone!) and id_rsa.pub (your public key -- give this to me). By default, both files will be placed in your home directory in the .ssh subdir.
While not required, you should also create an account on our Bug Tracker. When you have, simply e-mail me the username on the tracker so that you can have your account settings changed from the default "reporter" to "developer" (this allows you to make changes to all bug reports).
git clone ssh://email@example.com/git/uClibc.gitIt goes without saying you must change username to your own username... For the adventurous, you could set the username in your ~/.ssh/config file as well of course.
You can then enter the newly checked out uClibc directory, make changes, check your changes, diff your changes, revert your changes, and and commit your changes using commands such as:
git log git diff git status git checkout git reset git add git commit git push
For additional detail on how to use Git, please see the top of this page for helpful links.
To use a personal git repo you would do something like this: When using a clone, a bare one is sufficient and please consider using a shallow one (--depth 1 or something low).
me@busybox ~/git $ mkdir mything1.git me@busybox ~/git $ cd !$ cd mything1.git me@busybox ~/git/mything1.git $ git init --bare Initialized empty Git repository in /home/me/git/mything1.git/ me@busybox ~/git/mything1.git $ touch git-daemon-export-ok me@busybox ~/git/mything1.git $Done with the server-side.
me@client:/tmp$ git clone git+ssh://firstname.lastname@example.org/~/git/mything1.git Cloning into mything1... warning: You appear to have cloned an empty repository. me@client:/tmp$ cd mything1/ me@client:/tmp/mything1$ echo FOO > FOO me@client:/tmp/mything1$ git add FOO me@client:/tmp/mything1$ git commit -s -m 'do something' FOO [master (root-commit) 0c2bd20] do something 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 FOO me@client:/tmp/mything1$ git push -v --thin origin master Pushing to git+ssh://email@example.com/~/git/mything1.git Counting objects: 3, done. Writing objects: 100% (3/3), 240 bytes, done. Total 3 (delta 0), reused 0 (delta 0) To git+ssh://firstname.lastname@example.org/~/git/mything1.git * [new branch] master -> master me@client:/tmp/mything1$ echo "ANOTHER" >> FOO me@client:/tmp/mything1$ git commit -s -m 'do something else' FOO [master 7010bf0] do something else 1 files changed, 1 insertions(+), 0 deletions(-) me@client:/tmp/mything1$ git push -v --thin Pushing to git+ssh://email@example.com/~/git/mything1.git Counting objects: 5, done. Writing objects: 100% (3/3), 283 bytes, done. Total 3 (delta 0), reused 0 (delta 0) To git+ssh://firstname.lastname@example.org/~/git/mything1.git 0c2bd20..7010bf0 master -> master me@client:/tmp/mything1$Note that using "push origin master" is only required the first time.
Please keep the number of repos as well as their size down. If you need more space, use some other hosting facility. Thanks for your understanding.
If you have any other questions, feel free to post them to the list.