diff options
author | Jakob Pfender <jpfender@elegosoft.com> | 2011-05-17 15:31:05 +0200 |
---|---|---|
committer | Jakob Pfender <jpfender@elegosoft.com> | 2011-05-17 15:31:05 +0200 |
commit | 050e8877dda969b62f47a180b865a4447785e9c7 (patch) | |
tree | 42ba240edc5f0c0f49e7effe7f8881df2fdca775 /src/commit.c | |
parent | e3c7786b22b385d7ec5049c5315c74bd37182e8c (diff) | |
parent | c9662061f25ea51f39018a278b98c9a9b4410e84 (diff) | |
download | libgit2-050e8877dda969b62f47a180b865a4447785e9c7.tar.gz |
Merge branch 'development' into unmerged
Diffstat (limited to 'src/commit.c')
-rw-r--r-- | src/commit.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/commit.c b/src/commit.c index 9621703c3..54d7a47fe 100644 --- a/src/commit.c +++ b/src/commit.c @@ -224,9 +224,18 @@ int git_commit_create( if (error < GIT_SUCCESS) return error; - if (git_reference_type(head) == GIT_REF_SYMBOLIC) { - if ((error = git_reference_resolve(&head, head)) < GIT_SUCCESS) + error = git_reference_resolve(&head, head); + if (error < GIT_SUCCESS) { + if (error != GIT_ENOTFOUND) return error; + /* + * The target of the reference was not found. This can happen + * just after a repository has been initialized (the master + * branch doesn't exist yet, as it doesn't have anything to + * point to) or after an orphan checkout, so if the target + * branch doesn't exist yet, create it and return. + */ + return git_reference_create_oid_f(&head, repo, git_reference_target(head), oid); } error = git_reference_set_oid(head, oid); @@ -277,7 +286,7 @@ int commit_parse_buffer(git_commit *commit, const void *data, size_t len) if (buffer < buffer_end) { const char *line_end; - size_t message_len = buffer_end - buffer; + size_t message_len; /* Long message */ message_len = buffer_end - buffer; |