diff --git a/developers/source-code.md b/developers/source-code.md index 42082921..6c4a9070 100644 --- a/developers/source-code.md +++ b/developers/source-code.md @@ -11,16 +11,17 @@ redirect_from: Qubes Source Code Repositories ============================== -All the Qubes code is kept in GIT repositories. We divided the project into several components, each of which has its own separate repository, some of them: +All the Qubes code is kept in Git repositories. We have divided the project into +several components, each of which has its own separate repository, for example: -- `core-admin.git` -- the core Qubes infrastructure responsible for VM management, VM templates, fs sharing, etc. -- `gui-daemon.git` -- GUI virtualization, Dom0 side. -- `gui-agent-linux.git` -- GUI virtualization, Linux VM side. -- `linux-template-builder.git` - scripts and other files used to create Qubes templates images. + * `core-admin.git` -- The core Qubes infrastructure, responsible for VM + management, VM templates, fs sharing, etc. + * `gui-daemon.git` -- GUI virtualization, Dom0 side. + * `gui-agent-linux.git` -- GUI virtualization, Linux VM side. + * `linux-template-builder.git` -- Scripts and other files used to create Qubes + template images. -You can browse the repositories [online on -GitHub](https://github.com/QubesOS/). The Qubes official repositories are on -this `QubesOS` github account. +All of our repositories are available under the [QubesOS GitHub account]. To clone a repository: @@ -34,15 +35,47 @@ e.g.: git clone git://github.com/QubesOS/qubes-core-admin.git core-admin ~~~ -## Sending a patch +To clone **all** of our repositories in a single command: -If you want to contribute to the project, there are two ways: +~~~ +curl "https://api.github.com/orgs/QubesOS/repos?page=1&per_page=100" | grep -e 'git_url*' | cut -d \" -f 4 | xargs -L1 git clone +~~~ -* **Preferred**: Use github [fork & pull requests](https://guides.github.com/activities/forking/) -* Sending a patch via the project's mailing list (`git format-patch`). +To update (git fetch) **all** of these repositories in a single command: + +~~~ +find . -mindepth 1 -maxdepth 1 -type d -exec git -C {} fetch --tags --recurse-submodules=on-demand --all \; +~~~ + +(Alternatively, you can pull instead of just fetching.) + + +How to Send Patches +------------------- + +If you want to contribute code to the project, there are two ways. Whichever +method you choose, you must [sign your code] before it can be accepted. + +* **Preferred**: Use GitHub's [fork & pull requests]. +* Send a patch to our developer [mailing list] (`git format-patch`). + + 1. Make all the changes in your working directory, i.e. edit files, move them + around (you can use 'git mv' for this), etc. + 2. Add the changes and commit them (`git add`, `git commit`). Never mix + different changes into one commit! Write a good description of the commit. + The first line should contain a short summary, and then, if you feel like + more explanations are needed, enter an empty new line, and then start the + long, detailed description (optional). + 3. Test your changes NOW: check if RPMs build fine, etc. + 4. Create the patch using `git format-patch`. This has an advantage over + `git diff`, because the former will also include your commit message, your + name and email, so that *your* name will be used as a commit's author. + 5. Send your patch to `qubes-devel`. Start the message subject with + `[PATCH]`. + + +[QubesOS GitHub account]: https://github.com/QubesOS/ +[sign your code]: /doc/code-signing/ +[fork & pull requests]: https://guides.github.com/activities/forking/ +[mailing list]: /doc/mailing-lists/ - 1. Make all the changes in your working directory, i.e. edit files, move them around (you can use 'git mv' for this), etc. - 2. Add the changes and commit them (git add, git commit). Never mix different changes into one commit! Write a good description of the commit. The first line should contain a short summary, and then, if you feel like more explanations are needed, enter an empty new line, and then start the long, detailed description (optional). - 3. Test your changes NOW: check if RPMs build fine, etc. - 4. Create the patch using 'git format-patch'. This has an advantage over 'git diff', because the former will also include your commit message, your name and email, so that \*your\* name will be used as a commit's author. - 5. Send your patch to qubes-devel. Start the message subject with the '[PATCH]' string.