summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin-reflog.c2
-rwxr-xr-xt/t1301-shared-repo.sh15
2 files changed, 17 insertions, 0 deletions
diff --git a/builtin-reflog.c b/builtin-reflog.c
index 897d1dcac6..b151e24ff9 100644
--- a/builtin-reflog.c
+++ b/builtin-reflog.c
@@ -307,6 +307,8 @@ static int expire_reflog(const char *ref, const unsigned char *sha1, int unused,
unlink(newlog_path);
} else if (cmd->updateref && commit_ref(lock)) {
status |= error("Couldn't set %s", lock->ref_name);
+ } else {
+ adjust_shared_perm(log_file);
}
}
free(newlog_path);
diff --git a/t/t1301-shared-repo.sh b/t/t1301-shared-repo.sh
index 5e4252a320..6c78c8bc9b 100755
--- a/t/t1301-shared-repo.sh
+++ b/t/t1301-shared-repo.sh
@@ -83,4 +83,19 @@ do
done
+test_expect_success 'git reflog expire honors core.sharedRepository' '
+ git config core.sharedRepository group &&
+ git reflog expire --all &&
+ actual="$(ls -l .git/logs/refs/heads/master)" &&
+ case "$actual" in
+ -rw-rw-*)
+ : happy
+ ;;
+ *)
+ echo Ooops, .git/logs/refs/heads/master is not 0662 [$actual]
+ false
+ ;;
+ esac
+'
+
test_done