Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
refs: factor delete_ref loose ref step into a helper
author
Brad King
<brad.king@kitware.com>
Wed, 4 Sep 2013 15:22:41 +0000
(11:22 -0400)
committer
Junio C Hamano
<gitster@pobox.com>
Wed, 4 Sep 2013 18:09:09 +0000
(11:09 -0700)
Factor loose ref deletion into helper function delete_ref_loose to allow
later use elsewhere.
Signed-off-by: Brad King <brad.king@kitware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
refs.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
4738a33
)
diff --git
a/refs.c
b/refs.c
index 4347826dcb86a55423b57cf84dde9c6156e01e57..ab9d22ec7af9bc85b5f9fde7f0643090013d4de5 100644
(file)
--- a/
refs.c
+++ b/
refs.c
@@
-2450,24
+2450,31
@@
static int repack_without_ref(const char *refname)
return commit_packed_refs();
}
return commit_packed_refs();
}
+static int delete_ref_loose(struct ref_lock *lock, int flag)
+{
+ if (!(flag & REF_ISPACKED) || flag & REF_ISSYMREF) {
+ /* loose */
+ int err, i = strlen(lock->lk->filename) - 5; /* .lock */
+
+ lock->lk->filename[i] = 0;
+ err = unlink_or_warn(lock->lk->filename);
+ lock->lk->filename[i] = '.';
+ if (err && errno != ENOENT)
+ return 1;
+ }
+ return 0;
+}
+
int delete_ref(const char *refname, const unsigned char *sha1, int delopt)
{
struct ref_lock *lock;
int delete_ref(const char *refname, const unsigned char *sha1, int delopt)
{
struct ref_lock *lock;
- int
err, i = 0,
ret = 0, flag = 0;
+ int ret = 0, flag = 0;
lock = lock_ref_sha1_basic(refname, sha1, delopt, &flag);
if (!lock)
return 1;
lock = lock_ref_sha1_basic(refname, sha1, delopt, &flag);
if (!lock)
return 1;
- if (!(flag & REF_ISPACKED) || flag & REF_ISSYMREF) {
- /* loose */
- i = strlen(lock->lk->filename) - 5; /* .lock */
- lock->lk->filename[i] = 0;
- err = unlink_or_warn(lock->lk->filename);
- if (err && errno != ENOENT)
- ret = 1;
+ ret |= delete_ref_loose(lock, flag);
- lock->lk->filename[i] = '.';
- }
/* removing the loose one could have resurrected an earlier
* packed one. Also, if it was not loose we need to repack
* without it.
/* removing the loose one could have resurrected an earlier
* packed one. Also, if it was not loose we need to repack
* without it.