
 Notes for util-linux-ng developers
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

AUTOTOOLS:

     * "./autogen.sh" generates all necessary files (run it after checkout from
       git)

     * "make distclean" removes all unnecessary files, but code is still possible
       recompile by "./configure; make"

     * "make dist-gzip" (or -bzip2) creates tarball which is possible use without
      autogen.sh


PATCHES:

     * send your patches to the mailing list or to upstream maintainer
       (see the AUTHORS file)

     * diff -u

     * don't include generated (autotools) stuff to your patches
       (hint: use git-clean [-X])

     * patches are delivered via email only.  Downloading them from internet
       servers is a pain.

     * one patch per email, with the changelog in the body of the email.

     * Subject: [PATCH] subsystem: description

     * if someone else wrote the patch, they should be credited (and blamed)
       for it. To communicate this, add a line:

          From: John Doe <jdoe@wherever.com>

     * add a Signed-off-by line (hint: use "git commit -s")

       The sign-off is a simple line at the end of the explanation for the
       patch, which certifies that you wrote it or otherwise have the right to
       pass it on as a open-source patch.  The rules are pretty simple: if you
       can certify the below:

           By making a contribution to this project, I certify that:

           (a) The contribution was created in whole or in part by me and I
               have the right to submit it under the open source license
               indicated in the file; or

           (b) The contribution is based upon previous work that, to the best
               of my knowledge, is covered under an appropriate open source
               license and I have the right under that license to submit that
               work with modifications, whether created in whole or in part
               by me, under the same open source license (unless I am
               permitted to submit under a different license), as indicated
               in the file; or

           (c) The contribution was provided directly to me by some other
               person who certified (a), (b) or (c) and I have not modified it.

           (d) I understand and agree that this project and the contribution
               are public and that a record of the contribution (including all
               personal information I submit with it, including my sign-off) is
               maintained indefinitely and may be redistributed consistent with
               this project or the open source license(s) involved.

       then you just add a line saying

               Signed-off-by: Random J Developer <random@developer.example.org>

       using your real name (sorry, no pseudonyms or anonymous contributions.)


     * for more details see:

       The perfect patch
                http://userweb.kernel.org/~akpm/stuff/tpp.txt

CODING STYLE:

     * the preferred coding style is based on the linux kernel Documentation/CodingStyle.
       For more details see:

       http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=Documentation/CodingStyle


SCM (source code management):

     git clone git://git.kernel.org/pub/scm/utils/util-linux-ng/util-linux-ng.git util-linux-ng


    * maintenance (stable) branch
        - created for every <major>.<minor> release
        - branch name: stable/v<major>.<minor>

    * bugfix branch
        - created for <major>.<minor>.<maint> release for critical/security bugs only
        - this branch is optional
        - branch name: stable/v<major>.<minor>.<maint>

    * master branch
        - the status of this branch is: "it works for me". It means useful
          but not well tested patches.
        - it's source for occasional snapshots
        - for long-term development or invasive changes should be an active
          development forked into a separate branch (topic branches) from the
          tip of "master".

    * A new tag object is created for:
        - every release, tag name: v<version>


    * KNOWN BUGS:
        - tag v2.13.1 is typo. Please, ignore this tag.

