[ostree] core: Make --recompose skip passed arguments if they were already composed
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] core: Make --recompose skip passed arguments if they were already composed
- Date: Fri, 6 Jan 2012 19:08:08 +0000 (UTC)
commit 95d0e94370074c3ff2d3de9c8a564fc020d44ca3
Author: Colin Walters <walters verbum org>
Date: Fri Jan 6 14:04:39 2012 -0500
core: Make --recompose skip passed arguments if they were already composed
This allows us to do "--recompose -b foo bar baz" and add bar and baz
iff they weren't already there.
src/ostree/ot-builtin-compose.c | 10 ++++++++++
tests/t0004-compose.sh | 10 +++++++++-
2 files changed, 19 insertions(+), 1 deletions(-)
---
diff --git a/src/ostree/ot-builtin-compose.c b/src/ostree/ot-builtin-compose.c
index 6e81087..15e1bb8 100644
--- a/src/ostree/ot-builtin-compose.c
+++ b/src/ostree/ot-builtin-compose.c
@@ -78,6 +78,7 @@ ostree_builtin_compose (int argc, char **argv, GFile *repo_path, GError **error)
OstreeCheckout *checkout = NULL;
char *parent = NULL;
GFile *destf = NULL;
+ GHashTable *seen_branches = NULL;
gboolean compose_metadata_builder_initialized = FALSE;
GVariantBuilder compose_metadata_builder;
gboolean commit_metadata_builder_initialized = FALSE;
@@ -144,6 +145,8 @@ ostree_builtin_compose (int argc, char **argv, GFile *repo_path, GError **error)
g_assert (parent);
g_assert (parent_commit);
+
+ seen_branches = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
g_variant_get_child (parent_commit, 1, "@a{sv}", &parent_commit_metadata);
@@ -167,12 +170,17 @@ ostree_builtin_compose (int argc, char **argv, GFile *repo_path, GError **error)
&compose_metadata_builder,
error))
goto out;
+
+ g_hash_table_insert (seen_branches, g_strdup (branch_name), (char*)branch_name);
}
}
for (i = 1; i < argc; i++)
{
const char *src_branch = argv[i];
+
+ if (seen_branches && g_hash_table_lookup (seen_branches, src_branch))
+ continue;
if (!add_branch (repo, mtree, src_branch,
&compose_metadata_builder,
@@ -239,6 +247,8 @@ ostree_builtin_compose (int argc, char **argv, GFile *repo_path, GError **error)
g_free (parent);
g_free (contents_checksum);
g_free (commit_checksum);
+ if (seen_branches)
+ g_hash_table_destroy (seen_branches);
ot_clear_gvariant (&commit_metadata);
ot_clear_gvariant (&parent_commit);
ot_clear_gvariant (&parent_commit_metadata);
diff --git a/tests/t0004-compose.sh b/tests/t0004-compose.sh
index 1a65c43..5014c00 100755
--- a/tests/t0004-compose.sh
+++ b/tests/t0004-compose.sh
@@ -19,7 +19,7 @@
set -e
-echo "1..6"
+echo "1..7"
. libtest.sh
@@ -91,3 +91,11 @@ $OSTREE checkout some-compose some-compose-checkout
cd some-compose-checkout
assert_file_has_content ./usr/bin/bar 'updated bar ELF file'
echo 'ok recompose'
+
+cd "${test_tmpdir}"
+$OSTREE compose --recompose -b some-compose -s 'Recompose' artifact-barapp
+rm -rf some-compose-checkout
+$OSTREE checkout some-compose some-compose-checkout
+cd some-compose-checkout
+assert_file_has_content ./usr/bin/bar 'updated bar ELF file'
+echo 'ok recompose with args'
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]