:B~ Contributing to the project

1~contributing-to-project Contributing to the project

When submitting a contribution, please clearly identify its copyright holder and include the licensing statement. Note that to be accepted, the contribution must be licensed under the same license as the rest of the documents, namely, GPL version 3 or later.

Contributions to the project, such as translations and patches, are greatly welcome. Anyone can directly commit to the repositories, however, we ask you to send bigger changes to the mailing list to discuss them first. See the section {Contact}#contact for more information.

The Debian Live Project uses Git as version control system and source code management. As explained in {Git repositories}#git-repositories there are two main development branches: *{debian}* and *{debian-next}*. Everybody can commit to the debian-next branches of the live-boot, live-build, live-config, live-images, live-manual and live-tools repositories.

However, there are certain restrictions. The server will reject:

_* Non fast-forward pushes.

_* Merge commits.

_* Adding or removing tags or branches.

Even though all commits might be revised, we ask you to use your common sense and make good commits with good commit messages.

_* Write commit messages that consist of complete, meaningful sentences in English, starting with a capital letter and ending with a full stop. Usually, these will start with the form "Fixing/Adding/Removing/Correcting/Translating/...".

_* Write good commit messages. The first line must be an accurate summary of the contents of the commit which will be included in the changelog. If you need to make some further explanations, write them below leaving a blank line after the first one and then another blank line after each paragraph. Lines of paragraphs should not exceed 80 characters in length.

_* Commit atomically, this is to say, do not mix unrelated things in the same commit. Make one different commit for each change you make.

2~ Making changes

In order to push to the repositories, you must follow the following procedure. Here we use live-manual as an example so replace it with the name of the repository you want to work with. For detailed information on how to edit live-manual see {Contributing to this document}#how-to-contribute.

_* Fetch the public commit key:

code{

 $ mkdir -p ~/.ssh/keys
 $ wget http://live.debian.net/other/keys/git@live.debian.net -O ~/.ssh/keys/git@live.debian.net
 $ wget http://live.debian.net/other/keys/git@live.debian.net.pub -O ~/.ssh/keys/git@live.debian.net.pub
 $ chmod 0600 ~/.ssh/keys/git@live.debian.net*

}code

_* Add the following section to your openssh-client config:

code{

 $ cat >> ~/.ssh/config << EOF
 Host live.debian.net
     Hostname live.debian.net
     User git
     IdentityFile ~/.ssh/keys/git@live.debian.net
 EOF

}code

_* Check out a clone of live-manual through ssh:

code{

 $ git clone git@live.debian.net:/live-manual.git
 $ cd live-manual && git checkout debian-next

}code

_* Make sure you have Git author and email set:

code{

  $ git config user.name "John Doe"
  $ git config user.email john@example.org

}code

*{Important:}* Remember that you should commit any changes on the *{debian-next}* branch.

_* Make your changes. In this example you would first write a new section dealing with applying patches and then prepare to commit adding the files and writing your commit message like this:

code{

 $ git commit -a -m "Adding a section on applying patches."

}code

_* Push the commit to the server:

code{

 $ git push

}code
