Fix regression to not handle non-symbolic-ref during rebase action
[tig.git] / refs.h
blob17446778b35101f4d1deae19e824d105aa29ac8d
1 /* Copyright (c) 2006-2012 Jonas Fonseca <fonseca@diku.dk>
3 * This program is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU General Public License as
5 * published by the Free Software Foundation; either version 2 of
6 * the License, or (at your option) any later version.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
14 #ifndef TIG_REFS_H
15 #define TIG_REFS_H
17 #include "tig.h"
19 struct ref {
20 char id[SIZEOF_REV]; /* Commit SHA1 ID */
21 unsigned int head:1; /* Is it the current HEAD? */
22 unsigned int tag:1; /* Is it a tag? */
23 unsigned int ltag:1; /* If so, is the tag local? */
24 unsigned int remote:1; /* Is it a remote ref? */
25 unsigned int replace:1; /* Is it a replace ref? */
26 unsigned int tracked:1; /* Is it the remote for the current HEAD? */
27 char name[1]; /* Ref name; tag or head names are shortened. */
30 struct ref_list {
31 char id[SIZEOF_REV]; /* Commit SHA1 ID */
32 size_t size; /* Number of refs. */
33 struct ref **refs; /* References for this ID. */
36 struct ref *get_ref_head();
37 struct ref_list *get_ref_list(const char *id);
38 void foreach_ref(bool (*visitor)(void *data, const struct ref *ref), void *data);
39 int reload_refs(const char *git_dir, const char *remote_name, char *head, size_t headlen);
41 #endif