: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
