Some basic notions about <acronym>git</acronym> Getting an account on &salsa; git commit access requires the creation of an account on the &salsa; server. This is as simple as opening &url-salsa; and clicking on Sign in / Register in the top right corner. Official Debian developers will probably use the same login as their Debian login, but must go through the account creation process anyway. Installing <acronym>git</acronym> and <acronym>myrepos</acronym> Translators need to install git on their system. Just do apt install git. &d-i; contributors who want to work on the code of the installer (so not just translation work), additionally need to install myrepos by apt install myrepos. Users of non-Debian Linux distributions will probably easily find installation sources for git and myrepos in their distribution packages list. Using <acronym>git</acronym> to get and commit files Once their account is allowed to write to the project, translators can download the translation files using the checkout commands mentioned in . Developers can download the full project source tree using git and mr commands as detailed in . Note, that this is not necessary for translators! ssh connections require you to use RSA key-based authentication to connect to &salsa;. If you don't have an existing SSH keypair on your local system, you must create one with the ssh-keygen command: spongebob@mykerinos:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/spongebob/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/spongebob/.ssh/id_rsa. Your public key has been saved in /home/spongebob/.ssh/id_rsa.pub. The key fingerprint is: 8d:6d:14:72:72:07:01:6a:85:de:97:d3:aa:b2:ee:4a spongebob@mykerinos In the example above, the user spongebob creates a SSH RSA keypair, which is saved in a directory named .ssh in his/her home directory. This keypair is protected by a passphrase. The passphrase has to be entered each time the keypair will be used to connect to a remote host. Take care to choose a non trivial passphrase. After doing so, the public part of that keypair must be put in your account on &salsa;. In case users have problems with GIT checkouts/commits, they can ask for help, either on IRC, &irc-channel; or by mail with the &i18n-coords;. Core &d-i; and various levels packages repositories checkout command lines Typical non anonymous and anonymous checkout command lines for &d-i; and related packages are listed in . Below is an example of a checkout of the d-i GIT repository, containing the po files for level 1: user@host:~$ &git-clone-d-i-repo; Cloning into 'd-i'... remote: Counting objects: 405013, done. remote: Compressing objects: 100% (72424/72424), done. remote: Total 405013 (delta 316140), reused 404965 (delta 316098) Receiving objects: 100% (405013/405013), 187.52 MiB | 199.00 KiB/s, done. Resolving deltas: 100% (316140/316140), done. user@host:~$ After this the d-i directory contains all files from the repository. Updating this directory later needs running git pull: user@host:~$ cd d-i user@host:~/d-i$ git pull Already up-to-date. user@host:~/d-i$ Now find the po translation files in the subdirectories under packages/po. user@host:~/d-i$ cd packages/po/sublevel1 user@host:~/d-i/packages/po/sublevel1$ Just update the local copy: user@host:~/d-i/packages/po/sublevel1$ lokalize fr.po .../... (Use Lokalize or any other gettext utility, see for details about gettext files handling, editing and maintenance tools.) Once you have saved the modified version of the file, the status can be displayed with the git status command: user@host:~/d-i/packages/po/sublevel1$ git status -s M fr.po user@host:~/d-i/packages/po/sublevel1$ The above means that fr.po includes uncommited modifications. The changed files need to be added to the staging area by git add filename. Then commit the modifications by using the git commit command: user@host:~/d-i/packages/po/sublevel1$ git add fr.po user@host:~/d-i/packages/po/sublevel1$ git commit -m "Insert a senseful commit message here, like 'Updated french translation'" Now you need to push your changings to the remote GIT repository: user@host:~/d-i/packages/po/sublevel1$ git push In general, a few recommendations can be made to translators: Always use the git pull before working on a file or directory. This will minimize conflicts in case a file is changed in the repository while they work on it; Always use the git status command before committing changes, to be sure that only relevant changes are committed. Changelog entries handling When committing translations directly to GIT repositories for Debian packages, translators must update the debian/changelog file accordingly. Each change in Debian packages has to be documented in the debian/changelog file. However, this does not apply to level 1 translations, that is the &d-i; core packages translations. For these translations, no changelog updates are needed by translators. Below is an excerpt of the changelog file for &base-config;: base-config (2.39) UNRELEASED; urgency=low * Updated translations: - Croatian by Krunoslav Gernhard -- Christian Perrier <bubulle@debian.org> Sat, 24 Jul 2004 08:14:13 +0200 base-config (2.38) unstable; urgency=high .../... This gives the following information: the last released version of the package is 2.38. The GIT repository currently contains the future unpublished 2.39 release; the only change which occurred since 2.38 is the update of the Croatian translation (made by Krunoslav Gernhard); the committer of this change was Christian Perrier. Different Debian packages may use slightly different methods and styles for changelog maintenance. When working with GIT repositories, using UNRELEASED for the last entry is highly recommended for new unpublished changes. Using the debchange utility from the devscripts Debian package for handling changelog entries maintenance is also highly recommended..