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:
parent
37fc49f36d
commit
144e325579
|
|
@ -71,6 +71,32 @@ Boston, MA 02111-1307, USA.
|
||||||
Initialize repository in given mode (bare, bare-user, archive-z2). Default is "bare".
|
Initialize repository in given mode (bare, bare-user, archive-z2). Default is "bare".
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
</varlistentry>
|
</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>
|
</variablelist>
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,9 +27,16 @@
|
||||||
#include "ostree.h"
|
#include "ostree.h"
|
||||||
|
|
||||||
static char *opt_mode = "bare";
|
static char *opt_mode = "bare";
|
||||||
|
#ifdef OSTREE_ENABLE_EXPERIMENTAL_API
|
||||||
|
static char *opt_collection_id = NULL;
|
||||||
|
#endif /* OSTREE_ENABLE_EXPERIMENTAL_API */
|
||||||
|
|
||||||
static GOptionEntry options[] = {
|
static GOptionEntry options[] = {
|
||||||
{ "mode", 0, 0, G_OPTION_ARG_STRING, &opt_mode, "Initialize repository in given mode (bare, archive-z2)", NULL },
|
{ "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 }
|
{ 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))
|
if (!ostree_repo_mode_from_string (opt_mode, &mode, error))
|
||||||
goto out;
|
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))
|
if (!ostree_repo_create (repo, mode, NULL, error))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue