diff options
| author | schu <schu-github@schulog.org> | 2011-11-21 11:30:14 +0100 |
|---|---|---|
| committer | schu <schu-github@schulog.org> | 2011-11-21 13:11:10 +0100 |
| commit | 64093ce51879b5f9f6015b94fce095499c14159c (patch) | |
| tree | 66e974622547ad938dc9649bc8bdd82b4d377ca1 /src/refs.c | |
| parent | bdbdefac39256da42f72532161363d92df00566b (diff) | |
| download | libgit2-64093ce51879b5f9f6015b94fce095499c14159c.tar.gz | |
reference_rename: make sure to rollback
Actually rollback when we can't create the new reference. Mark the
rolled back reference as loose.
Signed-off-by: schu <schu-github@schulog.org>
Diffstat (limited to 'src/refs.c')
| -rw-r--r-- | src/refs.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/refs.c b/src/refs.c index 569efbf78..d7396f203 100644 --- a/src/refs.c +++ b/src/refs.c @@ -1352,7 +1352,7 @@ int git_reference_rename(git_reference *ref, const char *new_name, int force) } if (error < GIT_SUCCESS) - goto cleanup; + goto rollback; /* * Check if we have to update HEAD. @@ -1398,6 +1398,9 @@ rollback: error = git_reference_create_oid( NULL, ref->owner, ref->name, &ref->target.oid, 0); + /* The reference is no longer packed */ + ref->flags &= ~GIT_REF_PACKED; + return error == GIT_SUCCESS ? git__rethrow(GIT_ERROR, "Failed to rename reference. Did rollback") : git__rethrow(error, "Failed to rename reference. Failed to rollback"); |
