- parent = 1;
- if (len > 2 && name[len-1] >= '1' && name[len-1] <= '9') {
- parent = name[len-1] - '0';
- len--;
- }
- if (len > 1 && name[len-1] == '^') {
- int ret;
- name[len-1] = 0;
- ret = get_parent(name, sha1, parent);
- name[len-1] = '^';
- if (!ret)
- return 0;
+ if (type != show_type)
+ putchar('^');
+ if (symbolic && name)
+ show(name);
+ else
+ show(sha1_to_hex(sha1));
+}
+
+/* Output a flag, only if filter allows it. */
+static void show_flag(char *arg)
+{
+ if (!(filter & DO_FLAGS))
+ return;
+ if (filter & (is_rev_argument(arg) ? DO_REVS : DO_NOREV))
+ show(arg);
+}
+
+static void show_default(void)
+{
+ char *s = def;
+
+ if (s) {
+ unsigned char sha1[20];
+
+ def = NULL;
+ if (!get_sha1(s, sha1)) {
+ show_rev(NORMAL, sha1, s);
+ return;
+ }