diff options
| author | schu <schu-github@schulog.org> | 2011-07-07 21:24:12 +0200 |
|---|---|---|
| committer | schu <schu-github@schulog.org> | 2011-07-07 21:31:59 +0200 |
| commit | 73294339443011dce770c0d35a72b71113f0830b (patch) | |
| tree | fabac517ae33fa947e3d7aa23ba138c1845e2ea1 /src/refs.c | |
| parent | 6d4f090df63e06a01a0606c368aaa8e6c9104ade (diff) | |
| download | libgit2-73294339443011dce770c0d35a72b71113f0830b.tar.gz | |
reference_rename: fix flaw in force-renaming
reference_rename didn't respect the force flag. Fixed.
Reported-by: nulltoken <emeric.fermas@gmail.com>
Signed-off-by: schu <schu-github@schulog.org>
Diffstat (limited to 'src/refs.c')
| -rw-r--r-- | src/refs.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/refs.c b/src/refs.c index 5e0fe09b2..843c69a32 100644 --- a/src/refs.c +++ b/src/refs.c @@ -1309,8 +1309,12 @@ int git_reference_rename(git_reference *ref, const char *new_name, int force) new_name = normalized; error = git_reference_lookup(&new_ref, ref->owner, new_name); - if (error == GIT_SUCCESS && !force) - return git__throw(GIT_EEXISTS, "Failed to rename reference. Reference already exists"); + if (error == GIT_SUCCESS) { + if (!force) + return git__throw(GIT_EEXISTS, "Failed to rename reference. Reference already exists"); + + error = git_reference_delete(new_ref); + } if (error < GIT_SUCCESS && error != GIT_ENOTFOUND) goto cleanup; |
