mirror of
https://github.com/ostreedev/ostree.git
synced 2024-10-26 17:25:36 +03:00
lib/pull: When --require-static-deltas, use them even for file:/// repos
I didn't fully spelunk this, but from what `static-delta-generate-crosscheck.sh` had, we appeared to be doing this before, and it's clearly useful for local testing rather than needing to spin up a HTTP server. Closes: #1313 Approved by: jlebon
This commit is contained in:
parent
7f8ff5756e
commit
80ff73ba26
@ -1438,6 +1438,10 @@ static char *
|
||||
get_real_remote_repo_collection_id (OstreeRepo *repo,
|
||||
const gchar *remote_name)
|
||||
{
|
||||
/* remote_name == NULL can happen for pull-local */
|
||||
if (!remote_name)
|
||||
return NULL;
|
||||
|
||||
g_autofree gchar *remote_collection_id = NULL;
|
||||
if (!ostree_repo_get_remote_option (repo, remote_name, "collection-id", NULL,
|
||||
&remote_collection_id, NULL) ||
|
||||
@ -3544,8 +3548,12 @@ ostree_repo_pull_with_options (OstreeRepo *self,
|
||||
g_autofree char *first_scheme = _ostree_fetcher_uri_get_scheme (first_uri);
|
||||
|
||||
/* NB: we don't support local mirrors in mirrorlists, so if this passes, it
|
||||
* means that we're not using mirrorlists (see also fetch_mirrorlist()) */
|
||||
if (g_str_equal (first_scheme, "file"))
|
||||
* means that we're not using mirrorlists (see also fetch_mirrorlist())
|
||||
* Also, we explicitly disable the "local repo" path if static deltas
|
||||
* were explicitly requested to be required; this is going to happen
|
||||
* most often for testing deltas without setting up a HTTP server.
|
||||
*/
|
||||
if (g_str_equal (first_scheme, "file") && !pull_data->require_static_deltas)
|
||||
{
|
||||
g_autofree char *path = _ostree_fetcher_uri_get_path (first_uri);
|
||||
g_autoptr(GFile) remote_repo_path = g_file_new_for_path (path);
|
||||
|
@ -52,7 +52,7 @@ function verify_initial_contents() {
|
||||
assert_file_has_content baz/cow '^moo$'
|
||||
}
|
||||
|
||||
echo "1..32"
|
||||
echo "1..33"
|
||||
|
||||
# Try both syntaxes
|
||||
repo_init --no-gpg-verify
|
||||
@ -348,12 +348,24 @@ repo_init --no-gpg-verify
|
||||
${CMD_PREFIX} ostree --repo=repo pull origin main@${prev_rev}
|
||||
${CMD_PREFIX} ostree --repo=repo pull --dry-run --require-static-deltas origin ${delta_target} >dry-run-pull.txt
|
||||
# Compression can vary, so we support 400-699
|
||||
assert_file_has_content dry-run-pull.txt 'Delta update: 0/1 parts, 0 bytes/[456][0-9][0-9] bytes, 455 bytes total uncompressed'
|
||||
delta_dry_run_regexp='Delta update: 0/1 parts, 0 bytes/[456][0-9][0-9] bytes, 455 bytes total uncompressed'
|
||||
assert_file_has_content dry-run-pull.txt "${delta_dry_run_regexp}"
|
||||
rev=$(${CMD_PREFIX} ostree --repo=repo rev-parse origin:main)
|
||||
assert_streq "${prev_rev}" "${rev}"
|
||||
${CMD_PREFIX} ostree --repo=repo fsck
|
||||
done
|
||||
|
||||
# Test pull via file:/// - this should still use the deltas path for testing
|
||||
cd ${test_tmpdir}
|
||||
repo_init --no-gpg-verify
|
||||
${CMD_PREFIX} ostree --repo=repo remote delete origin
|
||||
${CMD_PREFIX} ostree --repo=repo remote add --set=gpg-verify=false origin file://$(pwd)/ostree-srv/gnomerepo
|
||||
${CMD_PREFIX} ostree --repo=repo pull origin main@${prev_rev}
|
||||
${CMD_PREFIX} ostree --repo=repo pull --dry-run --require-static-deltas origin ${delta_target} >dry-run-pull.txt
|
||||
# See above
|
||||
assert_file_has_content dry-run-pull.txt "${delta_dry_run_regexp}"
|
||||
echo "ok pull file:// + deltas required"
|
||||
|
||||
# Explicitly test delta fetches via ref name as well as commit hash
|
||||
for delta_target in main ${new_rev}; do
|
||||
cd ${test_tmpdir}
|
||||
|
Loading…
Reference in New Issue
Block a user