1663 lines
40 KiB
C
1663 lines
40 KiB
C
#include "cache.h"
|
|
#include "tag.h"
|
|
#include "commit.h"
|
|
#include "pkt-line.h"
|
|
#include "utf8.h"
|
|
#include "diff.h"
|
|
#include "revision.h"
|
|
#include "notes.h"
|
|
#include "gpg-interface.h"
|
|
#include "mergesort.h"
|
|
#include "commit-slab.h"
|
|
#include "prio-queue.h"
|
|
#include "sha1-lookup.h"
|
|
|
|
static struct commit_extra_header *read_commit_extra_header_lines(const char *buf, size_t len, const char **);
|
|
|
|
int save_commit_buffer = 1;
|
|
|
|
const char *commit_type = "commit";
|
|
|
|
struct commit *lookup_commit_reference_gently(const unsigned char *sha1,
|
|
int quiet)
|
|
{
|
|
struct object *obj = deref_tag(parse_object(sha1), NULL, 0);
|
|
|
|
if (!obj)
|
|
return NULL;
|
|
return object_as_type(obj, OBJ_COMMIT, quiet);
|
|
}
|
|
|
|
struct commit *lookup_commit_reference(const unsigned char *sha1)
|
|
{
|
|
return lookup_commit_reference_gently(sha1, 0);
|
|
}
|
|
|
|
struct commit *lookup_commit_or_die(const unsigned char *sha1, const char *ref_name)
|
|
{
|
|
struct commit *c = lookup_commit_reference(sha1);
|
|
if (!c)
|
|
die(_("could not parse %s"), ref_name);
|
|
if (hashcmp(sha1, c->object.sha1)) {
|
|
warning(_("%s %s is not a commit!"),
|
|
ref_name, sha1_to_hex(sha1));
|
|
}
|
|
return c;
|
|
}
|
|
|
|
struct commit *lookup_commit(const unsigned char *sha1)
|
|
{
|
|
struct object *obj = lookup_object(sha1);
|
|
if (!obj)
|
|
return create_object(sha1, alloc_commit_node());
|
|
return object_as_type(obj, OBJ_COMMIT, 0);
|
|
}
|
|
|
|
struct commit *lookup_commit_reference_by_name(const char *name)
|
|
{
|
|
unsigned char sha1[20];
|
|
struct commit *commit;
|
|
|
|
if (get_sha1_committish(name, sha1))
|
|
return NULL;
|
|
commit = lookup_commit_reference(sha1);
|
|
if ( |