From 390b781d3a13262ad8b391a39f2cae1820067f18 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 21 Jan 2014 08:57:34 +0000 Subject: [PATCH] pull: Add remotename:ref syntax This is really the common case. --- src/ostree/ot-builtin-pull.c | 26 ++++++++++++++++++++------ tests/pull-test.sh | 2 ++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/ostree/ot-builtin-pull.c b/src/ostree/ot-builtin-pull.c index 7aa028a7..6d8ffc90 100644 --- a/src/ostree/ot-builtin-pull.c +++ b/src/ostree/ot-builtin-pull.c @@ -36,7 +36,7 @@ ostree_builtin_pull (int argc, char **argv, OstreeRepo *repo, GCancellable *canc { GOptionContext *context; gboolean ret = FALSE; - const char *remote; + gs_free char *remote = NULL; OstreeRepoPullFlags pullflags = 0; GSConsole *console = NULL; gs_unref_ptrarray GPtrArray *refs_to_fetch = NULL; @@ -53,14 +53,28 @@ ostree_builtin_pull (int argc, char **argv, OstreeRepo *repo, GCancellable *canc ot_util_usage_error (context, "REMOTE must be specified", error); goto out; } - remote = argv[1]; - if (argc > 2) + + if (strchr (argv[1], ':') == NULL) { - int i; + remote = g_strdup (argv[1]); + if (argc > 2) + { + int i; + refs_to_fetch = g_ptr_array_new (); + for (i = 2; i < argc; i++) + g_ptr_array_add (refs_to_fetch, argv[i]); + g_ptr_array_add (refs_to_fetch, NULL); + } + } + else + { + char *ref_to_fetch; refs_to_fetch = g_ptr_array_new (); - for (i = 2; i < argc; i++) - g_ptr_array_add (refs_to_fetch, argv[i]); + if (!ostree_parse_refspec (argv[1], &remote, &ref_to_fetch, error)) + goto out; + /* Transfer ownership */ + g_ptr_array_add (refs_to_fetch, ref_to_fetch); g_ptr_array_add (refs_to_fetch, NULL); } diff --git a/tests/pull-test.sh b/tests/pull-test.sh index 82e70042..8231cefd 100755 --- a/tests/pull-test.sh +++ b/tests/pull-test.sh @@ -23,7 +23,9 @@ cd ${test_tmpdir} mkdir repo ${CMD_PREFIX} ostree --repo=repo init ${CMD_PREFIX} ostree --repo=repo remote add --set=gpg-verify=false origin $(cat httpd-address)/ostree/gnomerepo +# Try both syntaxes ${CMD_PREFIX} ostree --repo=repo pull origin main +${CMD_PREFIX} ostree --repo=repo pull origin:main ${CMD_PREFIX} ostree --repo=repo fsck echo "ok pull"