diff options
author | Carlos Martín Nieto <cmn@dwim.me> | 2014-03-19 06:59:09 +0100 |
---|---|---|
committer | Carlos Martín Nieto <cmn@dwim.me> | 2014-03-19 15:54:33 +0100 |
commit | afc57eb48fc69d3e4808648c090aa6f91f9b29aa (patch) | |
tree | 4ec544c36feec5390288b2810bb3e20433134517 /src/refdb_fs.c | |
parent | 1afe1400433f010734ae4c43bf35dcc94edcc9de (diff) | |
download | libgit2-afc57eb48fc69d3e4808648c090aa6f91f9b29aa.tar.gz |
reflog: simplify the append logic
Remove some duplicated logic.
Diffstat (limited to 'src/refdb_fs.c')
-rw-r--r-- | src/refdb_fs.c | 29 |
1 files changed, 7 insertions, 22 deletions
diff --git a/src/refdb_fs.c b/src/refdb_fs.c index 4bcc5fac3..f2edf0c56 100644 --- a/src/refdb_fs.c +++ b/src/refdb_fs.c @@ -1572,11 +1572,10 @@ success: /* Append to the reflog, must be called under reference lock */ static int reflog_append(refdb_fs_backend *backend, const git_reference *ref, const git_oid *old, const git_oid *new, const git_signature *who, const char *message) { - int error, is_symbolic, currently_exists; + int error, is_symbolic; git_oid old_id = {{0}}, new_id = {{0}}; git_buf buf = GIT_BUF_INIT, path = GIT_BUF_INIT; git_repository *repo = backend->repo; - git_reference *current_ref = NULL; is_symbolic = ref->type == GIT_REF_SYMBOLIC; @@ -1586,37 +1585,23 @@ static int reflog_append(refdb_fs_backend *backend, const git_reference *ref, co !(old && new)) return 0; - error = git_reference_lookup(¤t_ref, repo, ref->name); - if (error < 0 && error != GIT_ENOTFOUND) - return error; - - currently_exists = !!current_ref; - - git_reference_free(current_ref); /* From here on is_symoblic also means that it's HEAD */ if (old) { git_oid_cpy(&old_id, old); - } else if (currently_exists) { + } else { error = git_reference_name_to_id(&old_id, repo, ref->name); - if (error == GIT_ENOTFOUND) { - memset(&old_id, 0, sizeof(git_oid)); - error = 0; - } - - if (error < 0) + if (error < 0 && error != GIT_ENOTFOUND) return error; } if (is_symbolic) { error = git_reference_name_to_id(&new_id, repo, git_reference_symbolic_target(ref)); - if (error != 0 && error != GIT_ENOTFOUND) - goto cleanup; + if (error < 0 && error != GIT_ENOTFOUND) + return error; /* detaching HEAD does not create an entry */ - if (error == GIT_ENOTFOUND) { - error = 0; - goto cleanup; - } + if (error == GIT_ENOTFOUND) + return 0; giterr_clear(); } |