Skip to content
Release 2017.15

The headlining feature in this release is support for
repository locking, contributed by Dan Nicholson.  Currently it is
disabled by default; add `locking=true` in a repository configuration
file to enable.  This feature should be considered as "tech preview"; it's
highly likely we'll stabilize it in its current form, but it's possible something
will change.  Currently the locking only protects commit + prune; there is
a large pending PR to extend locking to many more APIs and commands.

Several new APIs were added; for example libostree now has a convenient
API to break a hardlink, which happens in e.g. rpm-ostree in several places
such as handling the RPM database.

Also, multithreading support in the commit APIs was cleaned up and clarified.
It's now possible to call `transaction_set_ref()` from multiple threads, which
rpm-ostree uses now to import RPMs to OSTree in parallel.

We're tracking an issue with http2+libcurl (#1362) and while I've been too
cowardly to pull out wireshark and gdb to fully track this down, it looks like
there are a number of issues still floating around HTTP2+libcurl (some are
server bugs), that we added support at both build and runtime to disable http2.

The `fsck` command learned how to verify ref bindings, and relatedly,
the `commit` command gained a `--unbound` option to skip creating ref bindings.

Thanks to all contributors

Colin Walters (21 PRs, 26 commits)
  lib/repo: Add MT support for transaction_set_ref(), clarify MT rules (#1358)
  build-sys: Post-release version bump (#1361)
  lib/repo-file: Add casts to appease GLib g_object_ref cast PR (#1363)
  lib/commit: Refactor file commits to separate subdir from content (#1365)
  pull: Add http2=false remote config option (#1368)
  docs/related: Add Balena (#1369)
  lib/commit: Fix memleak in bare-user devino hit path (#1370)
  lib/commit: Use more direct path for regfile commits (#1371)
  build-sys: Add --disable-http2 (#1373)
  lib/repo: Add an API to mark a commit as partial (#1376)
  bin/fsck: Make ref binding verification optional (#1379)
  bin/commit: Support creating "unbound" commits (#1380)
  bin/refs: Disallow aliases to remote refs (#1381)
  Bump libglnx, use "n items" progress for fsck (#1383)
  build-sys: Use -fno-strict-aliasing by default (#1384)
  Release 2017.15 (#1386)
  PR: #1343
    tests: Test concurrent operations
    lib/repo: Add some error prefixing in commit, repo create
    (and 4 commits from other authors)
  PR: #1364
    tests: Change test-corruption to use fatal()
    Add public API for fsck, use it before loading metadata
  PR: #1372
    bin/show: Add --no-byteswap
    bin/commit: Add --add-metadata that accepts g_variant_print() format
  PR: #1375
    lib/repo: Disable locking by default, add locking=true boolean
    lib/repo: Make locking timeout configurable
  PR: #1378
    lib/core: Optimize breaking hardlinks for regfiles
    lib/core: Add a "break hardlink" API

Dan Nicholson (1 PR, 4 commits)
  PR: #1343
    lib/prune: Take exclusive repository lock
    lib/commit: Add repository locking during transactions
    lib/repo: Add locking auto cleanup handler
    lib/repo: Add repo locking mechanism
    (and 2 commits from other authors)

Matthew Leeds (1 PR, 1 commit)
  lib/repo: Properly list remotes of parent repos (#1366)

Philip Withnall (1 PR, 11 commits)
  PR: #1347
    tests: Expand fsck unit tests to cover checks on bindings
    tests: Fix LC_ALL for systems which use .utf8 suffixes
    ostree/commit: Allow --orphan and --bind-ref to be specified together
    ostree/fsck: Add --verify-back-refs option
    lib/repo: Clarify documentation for ostree_repo_list_refs{,_ext}()
    ostree/fsck: Handle refspecs from ostree_repo_list_refs()
    ostree/fsck: Verify commit bindings for each ref
    lib/static-delta: Drop duplicated declaration from private header
    lib/pull: Fix capitalisation in binding verification error messages
    lib/pull: Split verify_bindings() out into a cmdprivate method
    ostree/fsck: Factor out common commit checking code

Sam Thursfield (1 PR, 1 commit) Link to BuildStream (#1360)

Git-EVTag-v0-SHA512: 67edb397e64223ecd05c1285e9cf3da6087a8794d8ecdf1a7c66a56cb3afb042a43184224e61aa8631308bddd5bf5e45587c9b05268a36fe2c676869b522249a