init: Add a --collection-id argument to the built-in init command

This allows new repositories to be configured with a collection ID which
can be used to uniquely identify refs which originated from this
repository.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Closes: #924
Approved by: cgwalters
This commit is contained in:
Philip Withnall 2017-06-07 14:48:35 +01:00 committed by Atomic Bot
parent 37fc49f36d
commit 144e325579
2 changed files with 37 additions and 0 deletions

View File

@ -71,6 +71,32 @@ Boston, MA 02111-1307, USA.
Initialize repository in given mode (bare, bare-user, archive-z2). Default is "bare".
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--collection-id</option>=COLLECTION-ID</term>
<listitem><para>
Set the collection ID of the repository. Remotes in clones
of this repository must configure the same value in order to
pull refs which originated in this repository over peer to
peer.</para>
<para>This collection ID must be persistent and globally
unique. It is formatted as a reverse DNS name (like a D-Bus
interface). It must be set to a reverse DNS domain under your
control.</para>
<para>This option may be omitted (the default) to leave
peer to peer distribution unsupported for the repository. A
collection ID may be added to an existing repository in
future to enable peer to peer distribution from that point
onwards.</para>
<para>If the collection ID is changed for the repository
in future, peer to peer distribution of refs from the
repository will break for all peers who do not update their
remote configuration to the new collection ID.
</para></listitem>
</varlistentry>
</variablelist>
</refsect1>

View File

@ -27,9 +27,16 @@
#include "ostree.h"
static char *opt_mode = "bare";
#ifdef OSTREE_ENABLE_EXPERIMENTAL_API
static char *opt_collection_id = NULL;
#endif /* OSTREE_ENABLE_EXPERIMENTAL_API */
static GOptionEntry options[] = {
{ "mode", 0, 0, G_OPTION_ARG_STRING, &opt_mode, "Initialize repository in given mode (bare, archive-z2)", NULL },
#ifdef OSTREE_ENABLE_EXPERIMENTAL_API
{ "collection-id", 0, 0, G_OPTION_ARG_STRING, &opt_collection_id,
"Globally unique ID for this repository as an collection of refs for redistribution to other repositories", "COLLECTION-ID" },
#endif /* OSTREE_ENABLE_EXPERIMENTAL_API */
{ NULL }
};
@ -48,6 +55,10 @@ ostree_builtin_init (int argc, char **argv, GCancellable *cancellable, GError **
if (!ostree_repo_mode_from_string (opt_mode, &mode, error))
goto out;
#ifdef OSTREE_ENABLE_EXPERIMENTAL_API
if (!ostree_repo_set_collection_id (repo, opt_collection_id, error))
goto out;
#endif /* OSTREE_ENABLE_EXPERIMENTAL_API */
if (!ostree_repo_create (repo, mode, NULL, error))
goto out;