<refsect1>
<title>'Refs' Options</title>
+ <variablelist>
+ <varlistentry>
+ <term><option>--revision</option>, <option>-r</option></term>
+
+ <listitem><para>
+ Also print the revisions for each ref. The revisions will
+ be separated by a tab character.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+
<variablelist>
<varlistentry>
<term><option>--cache-dir</option>=DIR</term>
#include "ot-main.h"
#include "ot-remote-builtins.h"
+static gboolean opt_revision;
static char* opt_cache_dir;
/* ATTENTION:
*/
static GOptionEntry option_entries[] = {
+ { "revision", 'r', 0, G_OPTION_ARG_NONE, &opt_revision, "Show revisions in listing", NULL },
{ "cache-dir", 0, 0, G_OPTION_ARG_FILENAME, &opt_cache_dir, "Use custom cache dir", NULL },
{ NULL }
};
for (iter = ordered_keys; iter; iter = iter->next)
{
- g_print ("%s:%s\n", remote_name, (const char *) iter->data);
+ const char *ref = iter->data;
+
+ if (opt_revision)
+ {
+ const char *rev = g_hash_table_lookup (refs, ref);
+ g_print ("%s:%s\t%s\n", remote_name, ref, rev);
+ }
+ else
+ {
+ g_print ("%s:%s\n", remote_name, ref);
+ }
}
}
--- /dev/null
+#!/bin/bash
+#
+# Copyright © 2023 Endless OS Foundation LLC
+#
+# SPDX-License-Identifier: LGPL-2.0+
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library. If not, see <https://www.gnu.org/licenses/>.
+#
+# Authors:
+# - Dan Nicholson <dbn@endlessos.org>
+
+set -euo pipefail
+
+. $(dirname $0)/libtest.sh
+
+echo "1..2"
+
+setup_fake_remote_repo2 "archive"
+${CMD_PREFIX} ostree --repo=${test_tmpdir}/ostree-srv/repo summary -u
+${CMD_PREFIX} ostree --repo=${test_tmpdir}/ostree-srv/repo refs > origin-refs
+${CMD_PREFIX} ostree --repo=${test_tmpdir}/ostree-srv/repo refs --revision > origin-refs-revs
+
+cd ${test_tmpdir}
+rm -rf repo
+ostree_repo_init repo --mode=archive
+${OSTREE} remote add --no-sign-verify origin $(cat httpd-address)/ostree/repo
+
+${OSTREE} remote refs origin > refs
+sed 's/^/origin:/' origin-refs > expected-refs
+assert_files_equal refs expected-refs
+
+echo "ok remote refs listing"
+
+${OSTREE} remote refs origin --revision > refs-revs
+sed 's/^/origin:/' origin-refs-revs > expected-refs-revs
+assert_files_equal refs-revs expected-refs-revs
+
+echo "ok remote refs revisions"