| /* |
| * Copyright (C) the libgit2 contributors. All rights reserved. |
| * |
| * This file is part of libgit2, distributed under the GNU GPL v2 with |
| * a Linking Exception. For full terms see the included COPYING file. |
| */ |
| #ifndef INCLUDE_annotated_commit_h__ |
| #define INCLUDE_annotated_commit_h__ |
| |
| #include "oidarray.h" |
| |
| #include "git2/oid.h" |
| |
| typedef enum { |
| GIT_ANNOTATED_COMMIT_REAL = 1, |
| GIT_ANNOTATED_COMMIT_VIRTUAL = 2, |
| } git_annotated_commit_t; |
| |
| /** |
| * Internal structure for merge inputs. An annotated commit is generally |
| * "real" and backed by an actual commit in the repository, but merge will |
| * internally create "virtual" commits that are in-memory intermediate |
| * commits backed by an index. |
| */ |
| struct git_annotated_commit { |
| git_annotated_commit_t type; |
| |
| /* real commit */ |
| git_commit *commit; |
| git_tree *tree; |
| |
| /* virtual commit structure */ |
| git_index *index; |
| git_array_oid_t parents; |
| |
| /* how this commit was looked up */ |
| const char *description; |
| |
| const char *ref_name; |
| const char *remote_url; |
| |
| char id_str[GIT_OID_HEXSZ+1]; |
| }; |
| |
| extern int git_annotated_commit_from_head(git_annotated_commit **out, |
| git_repository *repo); |
| extern int git_annotated_commit_from_commit(git_annotated_commit **out, |
| git_commit *commit); |
| |
| #endif |