From 9b1a15d9ac7f0be0e2e657c82825f66b70f28c32 Mon Sep 17 00:00:00 2001 From: Steve Streeting Date: Tue, 8 Sep 2015 15:00:28 +0100 Subject: [PATCH] Add new prune config settings --- lfs/config.go | 14 ++++++++++++++ lfs/config_test.go | 17 ++++++++++++----- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/lfs/config.go b/lfs/config.go index 62527433..df6e1802 100644 --- a/lfs/config.go +++ b/lfs/config.go @@ -34,6 +34,10 @@ type FetchPruneConfig struct { // Number of days added to FetchRecent*; data outside combined window will be // deleted when prune is run. (default 3) PruneOffsetDays int + // Always verify with remote before pruning + PruneVerifyRemoteAlways bool + // Name of remote to check for unpushed and verify checks + PruneRemoteName string } type Configuration struct { @@ -249,6 +253,8 @@ func (c *Configuration) FetchPruneConfig() *FetchPruneConfig { FetchRecentRefsIncludeRemotes: true, FetchRecentCommitsDays: 0, PruneOffsetDays: 3, + PruneVerifyRemoteAlways: false, + PruneRemoteName: "origin", } if v, ok := c.GitConfig("lfs.fetchrecentrefsdays"); ok { n, err := strconv.Atoi(v) @@ -278,6 +284,14 @@ func (c *Configuration) FetchPruneConfig() *FetchPruneConfig { c.fetchPruneConfig.PruneOffsetDays = n } } + if v, ok := c.GitConfig("lfs.pruneverifyremotealways"); ok { + if b, err := parseConfigBool(v); err == nil { + c.fetchPruneConfig.PruneVerifyRemoteAlways = b + } + } + if v, ok := c.GitConfig("lfs.pruneremotetocheck"); ok { + c.fetchPruneConfig.PruneRemoteName = v + } } return c.fetchPruneConfig diff --git a/lfs/config_test.go b/lfs/config_test.go index fc75cb17..50377ecc 100644 --- a/lfs/config_test.go +++ b/lfs/config_test.go @@ -389,23 +389,30 @@ func TestFetchPruneConfigDefault(t *testing.T) { assert.Equal(t, 0, fp.FetchRecentCommitsDays) assert.Equal(t, 3, fp.PruneOffsetDays) assert.Equal(t, true, fp.FetchRecentRefsIncludeRemotes) + assert.Equal(t, 3, fp.PruneOffsetDays) + assert.Equal(t, "origin", fp.PruneRemoteName) + assert.Equal(t, false, fp.PruneVerifyRemoteAlways) } func TestFetchPruneConfigCustom(t *testing.T) { config := &Configuration{ gitConfig: map[string]string{ - "lfs.fetchrecentrefsdays": "12", - "lfs.fetchrecentremoterefs": "false", - "lfs.fetchrecentcommitsdays": "9", - "lfs.pruneoffsetdays": "30", + "lfs.fetchrecentrefsdays": "12", + "lfs.fetchrecentremoterefs": "false", + "lfs.fetchrecentcommitsdays": "9", + "lfs.pruneoffsetdays": "30", + "lfs.pruneverifyremotealways": "true", + "lfs.pruneremotetocheck": "upstream", }, } fp := config.FetchPruneConfig() assert.Equal(t, 12, fp.FetchRecentRefsDays) assert.Equal(t, 9, fp.FetchRecentCommitsDays) - assert.Equal(t, 30, fp.PruneOffsetDays) assert.Equal(t, false, fp.FetchRecentRefsIncludeRemotes) + assert.Equal(t, 30, fp.PruneOffsetDays) + assert.Equal(t, "upstream", fp.PruneRemoteName) + assert.Equal(t, true, fp.PruneVerifyRemoteAlways) } // only used for tests