Merge pull request #1973 from mwleeds/avoid-extraneous-summary-copy
Don't copy summary for collection-ref mirror subset pulls
This commit is contained in:
commit
5b4c97511f
|
|
@ -116,6 +116,16 @@ Boston, MA 02111-1307, USA.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--mirror</option></term>
|
||||||
|
|
||||||
|
<listitem><para>
|
||||||
|
Do a mirror pull (see the documentation for
|
||||||
|
<command>ostree pull --mirror</command>). This option can
|
||||||
|
only be used in combination with <option>--pull</option>.
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
</variablelist>
|
</variablelist>
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4567,7 +4567,8 @@ ostree_repo_pull_with_options (OstreeRepo *self,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pull_data->is_mirror && pull_data->summary_data && !refs_to_fetch && !configured_branches)
|
if (pull_data->is_mirror && pull_data->summary_data &&
|
||||||
|
!refs_to_fetch && !opt_collection_refs_set && !configured_branches)
|
||||||
{
|
{
|
||||||
GLnxFileReplaceFlags replaceflag =
|
GLnxFileReplaceFlags replaceflag =
|
||||||
pull_data->repo->disable_fsync ? GLNX_FILE_REPLACE_NODATASYNC : 0;
|
pull_data->repo->disable_fsync ? GLNX_FILE_REPLACE_NODATASYNC : 0;
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ static gchar *opt_cache_dir = NULL;
|
||||||
static gchar *opt_finders = NULL;
|
static gchar *opt_finders = NULL;
|
||||||
static gboolean opt_disable_fsync = FALSE;
|
static gboolean opt_disable_fsync = FALSE;
|
||||||
static gboolean opt_pull = FALSE;
|
static gboolean opt_pull = FALSE;
|
||||||
|
static gboolean opt_mirror = FALSE;
|
||||||
|
|
||||||
static GOptionEntry options[] =
|
static GOptionEntry options[] =
|
||||||
{
|
{
|
||||||
|
|
@ -42,6 +43,7 @@ static GOptionEntry options[] =
|
||||||
{ "disable-fsync", 0, 0, G_OPTION_ARG_NONE, &opt_disable_fsync, "Do not invoke fsync()", NULL },
|
{ "disable-fsync", 0, 0, G_OPTION_ARG_NONE, &opt_disable_fsync, "Do not invoke fsync()", NULL },
|
||||||
{ "finders", 0, 0, G_OPTION_ARG_STRING, &opt_finders, "Use the specified comma separated list of finders (e.g. config,lan,mount)", "FINDERS" },
|
{ "finders", 0, 0, G_OPTION_ARG_STRING, &opt_finders, "Use the specified comma separated list of finders (e.g. config,lan,mount)", "FINDERS" },
|
||||||
{ "pull", 0, 0, G_OPTION_ARG_NONE, &opt_pull, "Pull the updates after finding them", NULL },
|
{ "pull", 0, 0, G_OPTION_ARG_NONE, &opt_pull, "Pull the updates after finding them", NULL },
|
||||||
|
{ "mirror", 0, 0, G_OPTION_ARG_NONE, &opt_mirror, "Do a mirror pull (see ostree pull --mirror)", NULL},
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -188,6 +190,7 @@ ostree_builtin_find_remotes (int argc,
|
||||||
g_auto(OstreeRepoFinderResultv) results = NULL;
|
g_auto(OstreeRepoFinderResultv) results = NULL;
|
||||||
g_auto(GLnxConsoleRef) console = { 0, };
|
g_auto(GLnxConsoleRef) console = { 0, };
|
||||||
g_autoptr(GHashTable) refs_found = NULL; /* set (element-type OstreeCollectionRef) */
|
g_autoptr(GHashTable) refs_found = NULL; /* set (element-type OstreeCollectionRef) */
|
||||||
|
g_autoptr(GVariant) pull_options = NULL;
|
||||||
|
|
||||||
context = g_option_context_new ("COLLECTION-ID REF [COLLECTION-ID REF...]");
|
context = g_option_context_new ("COLLECTION-ID REF [COLLECTION-ID REF...]");
|
||||||
|
|
||||||
|
|
@ -210,6 +213,12 @@ ostree_builtin_find_remotes (int argc,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opt_mirror && !opt_pull)
|
||||||
|
{
|
||||||
|
ot_util_usage_error (context, "When --mirror is specified, --pull must also be", error);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
if (opt_disable_fsync)
|
if (opt_disable_fsync)
|
||||||
ostree_repo_set_disable_fsync (repo, TRUE);
|
ostree_repo_set_disable_fsync (repo, TRUE);
|
||||||
|
|
||||||
|
|
@ -359,13 +368,24 @@ ostree_builtin_find_remotes (int argc,
|
||||||
if (!opt_pull)
|
if (!opt_pull)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
{
|
||||||
|
GVariantBuilder builder;
|
||||||
|
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||||
|
|
||||||
|
if (opt_mirror)
|
||||||
|
g_variant_builder_add (&builder, "{s@v}", "flags",
|
||||||
|
g_variant_new_variant (g_variant_new_int32 (OSTREE_REPO_PULL_FLAGS_MIRROR)));
|
||||||
|
|
||||||
|
pull_options = g_variant_ref_sink (g_variant_builder_end (&builder));
|
||||||
|
}
|
||||||
|
|
||||||
/* Run the pull operation. */
|
/* Run the pull operation. */
|
||||||
if (console.is_tty)
|
if (console.is_tty)
|
||||||
progress = ostree_async_progress_new_and_connect (ostree_repo_pull_default_console_progress_changed, &console);
|
progress = ostree_async_progress_new_and_connect (ostree_repo_pull_default_console_progress_changed, &console);
|
||||||
|
|
||||||
ostree_repo_pull_from_remotes_async (repo,
|
ostree_repo_pull_from_remotes_async (repo,
|
||||||
(const OstreeRepoFinderResult * const *) results,
|
(const OstreeRepoFinderResult * const *) results,
|
||||||
NULL, /* no options */
|
pull_options,
|
||||||
progress, cancellable,
|
progress, cancellable,
|
||||||
get_result_cb, &pull_result);
|
get_result_cb, &pull_result);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ set -euo pipefail
|
||||||
|
|
||||||
. $(dirname $0)/libtest.sh
|
. $(dirname $0)/libtest.sh
|
||||||
|
|
||||||
echo '1..6'
|
echo '1..7'
|
||||||
|
|
||||||
cd ${test_tmpdir}
|
cd ${test_tmpdir}
|
||||||
|
|
||||||
|
|
@ -258,3 +258,15 @@ then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "ok 6 pull refs from local repos"
|
echo "ok 6 pull refs from local repos"
|
||||||
|
|
||||||
|
ostree_repo_init local-mirror
|
||||||
|
do_remote_add local-mirror collection-repo --collection-id org.example.CollectionRepo
|
||||||
|
# Generate a summary in the local mirror; don't use do_summary to avoid gpg
|
||||||
|
${CMD_PREFIX} ostree --repo=local-mirror summary --update
|
||||||
|
summarysig=$(sha256sum < local-mirror/summary | cut -f 1 -d ' ')
|
||||||
|
# Mirror subset of refs: A collection-ref version of https://github.com/ostreedev/ostree/issues/846
|
||||||
|
${CMD_PREFIX} ostree --repo=local-mirror find-remotes --pull --mirror --finders=config org.example.CollectionRepo goodcref1
|
||||||
|
newsummarysig=$(sha256sum < local-mirror/summary | cut -f 1 -d ' ')
|
||||||
|
assert_streq ${summarysig} ${newsummarysig}
|
||||||
|
|
||||||
|
echo "ok 7 mirror pull subset of collection-refs with summary"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue