# HACKING                                                       -*- org -*-
#+TITLE: Various hacking notes
#+STARTUP: showall

* How to contribute

  The following stuff explains some basic procedures you need to
  follow if you want to contribute code or documentation.

* No more ChangeLog files

  Do not modify any of the ChangeLog files in Libgpg-error.  Starting
  on December 1st, 2011 we put change information only in the GIT
  commit log, and generate a top-level ChangeLog file from logs at
  "make dist" time.  As such, there are strict requirements on the
  form of the commit log messages.  The old ChangeLog files have all
  be renamed to ChangeLog-2011


* Commit log requirements

  Your commit log should always start with a one-line summary, the
  second line should be blank, and the remaining lines are usually
  ChangeLog-style entries for all affected files.  However, it's fine
  -- even recommended -- to write a few lines of prose describing the
  change, when the summary and ChangeLog entries don't give enough of
  the big picture.  Omit the leading TABs that you're used to seeing
  in a "real" ChangeLog file, but keep the maximum line length at 72
  or smaller, so that the generated ChangeLog lines, each with its
  leading TAB, will not exceed 80 columns.

* Commit log keywords

  - GnuPG-bug-id :: Values are comma or space delimited bug numbers
                    from bug.gnupg.org pertaining to this commit.
  - Debian-bug-id :: Same as above but from the Debian bug tracker.
  - CVE-id :: CVE id number pertaining to this commit.
  - Regression-due-to :: Commit id of the regression fixed by this commit.
  - Fixes-commit :: Commit id this commit fixes.
  - Reported-by :: Value is a name or mail address of a bug reporte.
  - Suggested-by :: Value is a name or mail address of someone how
                    suggested this change.
  - Co-authored-by :: Name or mail address of a co-author
  - Some-comments-by :: Name or mail address of the author of
                        additional comments (commit log or code).
  - Proofread-by :: Sometimes used by translation commits.
  - Signed-off-by :: Name or mail address of the developer

* Sending patches

  - submitting patches, and subsequent discussions around them,
    happens via the gnupg-devel@gnupg.org public mailing list

  - send your patches to that list, preferably PGP/MIME signed. Make
    sure to include a mention of 'libgpg-error' in the subject line,
    the list is used for several different projects

  - if you're working from the git repo, here's a suggested workflow:

    - configure git send-email defaults:

        git config format.subjectPrefix 'PATCH libgpg-error'
        git config sendemail.to gnupg-devel@gnupg.org

      Note that running ./autogen.sh on a fresh clone will do this for
      you.

    - hack hack hack

    - commit your changes; group changes into easily-reviewable commit
      units, feel free to submit several patches at once

    - e.g. if you want to submit a single patch on top of master, do:
      git send-email --annotate -1

    - e.g. if you have two commits on top of master, do:
      git send-email --annotate --cover-letter -2
      (that prompts you for a summary mail to precede your actual
      patch mails)

    - use --dry-run to test your setup
