aboutsummaryrefslogtreecommitdiffstats
path: root/modules/git/git.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/git/git.go')
-rw-r--r--modules/git/git.go27
1 files changed, 27 insertions, 0 deletions
diff --git a/modules/git/git.go b/modules/git/git.go
index 24cfea8c7f..a31afc077a 100644
--- a/modules/git/git.go
+++ b/modules/git/git.go
@@ -201,6 +201,23 @@ func InitFull(ctx context.Context) (err error) {
return syncGitConfig()
}
+func enableReflogs() error {
+ if err := configSet("core.logAllRefUpdates", "true"); err != nil {
+ return err
+ }
+ err := configSet("gc.reflogExpire", fmt.Sprintf("%d", setting.Git.Reflog.Expiration))
+ return err
+}
+
+func disableReflogs() error {
+ if err := configUnsetAll("core.logAllRefUpdates", "true"); err != nil {
+ return err
+ } else if err := configUnsetAll("gc.reflogExpire", ""); err != nil {
+ return err
+ }
+ return nil
+}
+
// syncGitConfig only modifies gitconfig, won't change global variables (otherwise there will be data-race problem)
func syncGitConfig() (err error) {
if err = os.MkdirAll(HomeDir(), os.ModePerm); err != nil {
@@ -224,6 +241,16 @@ func syncGitConfig() (err error) {
return err
}
+ if setting.Git.Reflog.Enabled {
+ if err := enableReflogs(); err != nil {
+ return err
+ }
+ } else {
+ if err := disableReflogs(); err != nil {
+ return err
+ }
+ }
+
if CheckGitVersionAtLeast("2.10") == nil {
if err := configSet("receive.advertisePushOptions", "true"); err != nil {
return err