Differences between revisions 7 and 9 (spanning 2 versions)
Revision 7 as of 2007-09-17 11:01:48
Size: 1968
Comment:
Revision 9 as of 2007-09-24 20:27:58
Size: 3017
Comment: How to release + reco for translators.
Deletions are marked like this. Additions are marked like this.
Line 6: Line 6:
   * {{{git clone git+ssh://git.debian.org/git/dpkg/dpkg dpkg}}}
   * or {{{git clone git+ssh://<usernameOnAlioth>@git.debian.org/git/dpkg/dpkg dpkg}}}, if your username on alioth is different from the one on your machine (eg: I'm sc on my linux box and sc-guest on alioth)
   * '''git clone git+ssh://git.debian.org/git/dpkg/dpkg dpkg'''
   * or '''git clone git+ssh://<usernameOnAlioth>@git.debian.org/git/dpkg/dpkg dpkg''', if your username on alioth is different from the one on your machine (eg: I'm sc on my linux box and sc-guest on alioth)
Line 11: Line 11:
 * For anonymous: {{{git clone git://git.debian.org/git/dpkg/dpkg dpkg}}}  * For anonymous: '''git clone git://git.debian.org/git/dpkg/dpkg dpkg'''
Line 29: Line 29:
 * You should create an annotated tag (non-annotated tags are forbidden by a hook anyway). You can even GPG-sign it.  * Verify that you're in sync with the remote repository.
 * Finalize the changelogs, update the version in configure.ac.
 * Commit the changes, create a signed tag ({{{git tag -s <version>}}}).
 * Push stuff.
 * {{{autoreconf -f -i; make dist}}}
 * Do the real build based on the generated tarball.
 * Upload to Debian.
Line 33: Line 39:
TODO: Check with bubulle and others what kind of instructions we should be recommending.  * To setup the repository:
   * Clone the repository as above.
   * Enabled the pre-commit hook with {{{chmod +x dpkg/.git/hooks/pre-commit}}} (this will prevent committing conflicts by error)
 * To update the repository use the commands: {{{git fetch && git rebase origin/master}}}
 * Once you finished your work use the following commands to commit and push your changes:
   * {{{git add <list of modified files>}}}
   * {{{git commit}}}
   * {{{git push}}}

If the {{{git push}}} fails, redo the command {{{git fetch && git rebase origin/master}}} and try again. Not that {{{git rebase}}} can be interrupted if there's a conflict between your work and the changes made on the remote repository. In that case, fix the conflicts by editing the conflicted files, then {{{git add <conflicted files>}}} and ask the rebase process to continue with {{{git rebase --continue}}}. Once it's over, {{{git push}}} should work.

Git usage in the dpkg team

URLs

  • For committers:
    • git clone git+ssh://git.debian.org/git/dpkg/dpkg dpkg

    • or git clone git+ssh://<usernameOnAlioth>@git.debian.org/git/dpkg/dpkg dpkg, if your username on alioth is different from the one on your machine (eg: I'm sc on my linux box and sc-guest on alioth)

    • note that the host fingerprint is the same as the one for svn.debian.org and it can be checked quite easily:
      • log in to svn.debian.org and run the command ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key; exit

      • compare the fingerprint reported by ssh when trying to do the initial clone with the one obtained via the method explained above; they MUST be identical, if not, you are, very likely, not logging to the correct machine and should stop immediately.
  • For anonymous: git clone git://git.debian.org/git/dpkg/dpkg dpkg

NOTE: dpkg at the end of the command let git create a directory named dpkg under the directory where you execute the command.

Generic recommendations

  • When you write commit messages, try to follow the recommended format:

First line should be a small summary.

This is the long description of the change. Leave a blank
line between the summary line and the long description.
  • If you're working on a patch that will take some time to be merged, better work on it in a private topic branch that you can rebase (later and as many times as you want) before merging it in the master branch and pushing it. This will avoid cluttering the history with merge commits.
  • Use git 1.5.x at least. If you run etch there are backports on [http://www.backports.org backports.org].

How to release

  • Verify that you're in sync with the remote repository.
  • Finalize the changelogs, update the version in configure.ac.
  • Commit the changes, create a signed tag (git tag -s <version>).

  • Push stuff.
  • autoreconf -f -i; make dist

  • Do the real build based on the generated tarball.
  • Upload to Debian.

For translators

  • To setup the repository:
    • Clone the repository as above.
    • Enabled the pre-commit hook with chmod +x dpkg/.git/hooks/pre-commit (this will prevent committing conflicts by error)

  • To update the repository use the commands: git fetch && git rebase origin/master

  • Once you finished your work use the following commands to commit and push your changes:
    • git add <list of modified files>

    • git commit

    • git push

If the git push fails, redo the command git fetch && git rebase origin/master and try again. Not that git rebase can be interrupted if there's a conflict between your work and the changes made on the remote repository. In that case, fix the conflicts by editing the conflicted files, then git add <conflicted files> and ask the rebase process to continue with git rebase --continue. Once it's over, git push should work.