Operating system and container binary deployment and upgrades
Go to file
Giuseppe Scrivano 50c69c3392 keyfile-utils: add tests
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-03-06 18:45:37 +01:00
bsdiff@2c5d65bce5 Add bsdiff submodule 2015-03-03 12:16:17 -05:00
build-aux Add infrastructure for "make syntax-check" 2015-01-30 15:27:36 +01:00
doc ostree: Add gpg-sign command 2015-02-26 12:53:01 -05:00
libglnx@162d1f6b58 repo: Port hardlink-scanning code to fd-relative calls 2015-03-03 11:48:41 -05:00
manual-tests manual-tests: New directory with custom test scripts 2014-02-14 18:16:37 -05:00
packaging Makefile.dist-packaging: fix make rpm with submodules 2015-03-03 12:16:17 -05:00
src ot_keyfile_copy_group: return FALSE on invalid inputs 2015-03-06 18:45:37 +01:00
tests keyfile-utils: add tests 2015-03-06 18:45:37 +01:00
.gitignore Use libglnx 2015-02-22 21:02:27 -05:00
.gitmodules Add bsdiff submodule 2015-03-03 12:16:17 -05:00
autogen.sh Fix "make syntax-check" failures. 2015-03-03 12:16:17 -05:00
cfg.mk syntax-check: Remove empty lines at the end of file 2015-02-02 15:07:56 +01:00
configure.ac configure.ac: Bump GLib requirement to 2.40 2015-03-02 15:06:46 -05:00
COPYING COPYING: Update to latest FSF with current address 2014-01-16 10:22:30 -05:00
GNUmakefile Add infrastructure for "make syntax-check" 2015-01-30 15:27:36 +01:00
maint.mk Add infrastructure for "make syntax-check" 2015-01-30 15:27:36 +01:00
Makefile-boot.am syntax-check: Remove empty lines at the end of file 2015-02-02 15:07:56 +01:00
Makefile-decls.am libostree: Add initial GRUB2 support 2014-10-16 14:15:00 -04:00
Makefile-libostree-defines.am Add an OstreeSysrootUpgrader API 2014-03-24 18:08:22 -04:00
Makefile-libostree.am gpg: Rewrite OstreeGpgVerifier to use GPGME 2015-03-06 08:22:44 -05:00
Makefile-ostree.am Add bsdiff submodule 2015-03-03 12:16:17 -05:00
Makefile-otutil.am Use libglnx 2015-02-22 21:02:27 -05:00
Makefile-switchroot.am Add support for mkinitcpio 2013-10-24 14:27:49 -04:00
Makefile-tests.am keyfile-utils: add tests 2015-03-06 18:45:37 +01:00
Makefile.am Add bsdiff submodule 2015-03-03 12:16:17 -05:00
ostree.doap doap category infrastructure 2014-07-31 11:26:32 +02:00
README-historical.md README: Just link to wiki, move most of it to README-historical.md 2014-01-20 18:00:09 -05:00
README.md README.md: Add a quick blurb on style 2014-12-07 17:19:42 -05:00
TODO Fix repeated words. 2015-01-30 15:27:36 +01:00

OSTree is a tool for managing bootable, immutable, versioned filesystem trees. While it takes over some of the roles of tradtional "package managers" like dpkg and rpm, it is not a package system; nor is it a tool for managing full disk images. Instead, it sits between those levels, offering a blend of the advantages (and disadvantages) of both.

For more information, see:

https://live.gnome.org/Projects/OSTree

Submitting patches

You can:

  1. Send mail to ostree-list@gnome.org, with the patch attached
  2. Submit a pull request against https://github.com/GNOME/ostree
  3. Attach them to https://bugzilla.gnome.org/

Please look at "git log" and match the commit log style.

Running the test suite

Currently, ostree uses https://wiki.gnome.org/GnomeGoals/InstalledTests To run just ostree's tests:

./configure ... --enable-installed-tests
gnome-desktop-testing-runner -p 0 ostree/

Coding style

Indentation is GNU. Files should start with the appropriate mode lines.

Use GCC __attribute__((cleanup)) wherever possible. If interacting with a third party library, try defining local cleanup macros.

Use GError and GCancellable where appropriate.

Prefer returning gboolean to signal success/failure, and have output values as parameters.

Prefer linear control flow inside functions (aside from standard loops). In other words, avoid "early exits" or use of goto besides goto out;.

This is an example of an "early exit":

static gboolean
myfunc (...)
{
    gboolean ret = FALSE;

    /* some code */

    /* some more code */

    if (condition)
      return FALSE;

    /* some more code */

    ret = TRUE;
  out:
    return ret;
}

If you must shortcut, use:

if (condition)
  {
    ret = TRUE;
    goto out;
  }

A consequence of this restriction is that you are encouraged to avoid deep nesting of loops or conditionals. Create internal static helper functions, particularly inside loops. For example, rather than:

while (condition)
  {
    /* some code */
    if (condition)
      {
         for (i = 0; i < somevalue; i++)
           {
              if (condition)
                {
                  /* deeply nested code */
                }

                /* more nested code */
           }
      }
  }

Instead do this:

static gboolean
helperfunc (..., GError **error)
{
  if (condition)
   {
     /* deeply nested code */
   }

  /* more nested code */

  return ret;
}

while (condition)
  {
    /* some code */
    if (!condition)
      continue;

    for (i = 0; i < somevalue; i++)
      {
        if (!helperfunc (..., i, error))
          goto out;
      }
  }