[ostree] core: Make --recompose skip passed arguments if they were already composed



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]