mirror of
https://github.com/octoleo/syncthing.git
synced 2024-11-14 09:14:10 +00:00
Add repoPath and repoID as parameters to versioner factory (fixes #531)
This commit is contained in:
parent
668b429615
commit
d20df12168
@ -113,7 +113,7 @@ func newPuller(repoCfg config.RepositoryConfiguration, model *Model, slots int,
|
|||||||
if !ok {
|
if !ok {
|
||||||
l.Fatalf("Requested versioning type %q that does not exist", repoCfg.Versioning.Type)
|
l.Fatalf("Requested versioning type %q that does not exist", repoCfg.Versioning.Type)
|
||||||
}
|
}
|
||||||
p.versioner = factory(repoCfg.Versioning.Params)
|
p.versioner = factory(repoCfg.ID, repoCfg.Directory, repoCfg.Versioning.Params)
|
||||||
}
|
}
|
||||||
|
|
||||||
if slots > 0 {
|
if slots > 0 {
|
||||||
@ -632,7 +632,7 @@ func (p *puller) handleEmptyBlock(b bqBlock) {
|
|||||||
if debug {
|
if debug {
|
||||||
l.Debugln("pull: deleting with versioner")
|
l.Debugln("pull: deleting with versioner")
|
||||||
}
|
}
|
||||||
if err := p.versioner.Archive(p.repoCfg.Directory, of.filepath); err == nil {
|
if err := p.versioner.Archive(of.filepath); err == nil {
|
||||||
p.model.updateLocal(p.repoCfg.ID, f)
|
p.model.updateLocal(p.repoCfg.ID, f)
|
||||||
} else if debug {
|
} else if debug {
|
||||||
l.Debugln("pull: error:", err)
|
l.Debugln("pull: error:", err)
|
||||||
@ -762,7 +762,7 @@ func (p *puller) closeFile(f protocol.FileInfo) {
|
|||||||
osutil.ShowFile(of.temp)
|
osutil.ShowFile(of.temp)
|
||||||
|
|
||||||
if p.versioner != nil {
|
if p.versioner != nil {
|
||||||
err := p.versioner.Archive(p.repoCfg.Directory, of.filepath)
|
err := p.versioner.Archive(of.filepath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if debug {
|
if debug {
|
||||||
l.Debugf("pull: error: %q / %q: %v", p.repoCfg.ID, f.Name, err)
|
l.Debugf("pull: error: %q / %q: %v", p.repoCfg.ID, f.Name, err)
|
||||||
|
@ -22,10 +22,11 @@ func init() {
|
|||||||
// The type holds our configuration
|
// The type holds our configuration
|
||||||
type Simple struct {
|
type Simple struct {
|
||||||
keep int
|
keep int
|
||||||
|
repoPath string
|
||||||
}
|
}
|
||||||
|
|
||||||
// The constructor function takes a map of parameters and creates the type.
|
// The constructor function takes a map of parameters and creates the type.
|
||||||
func NewSimple(params map[string]string) Versioner {
|
func NewSimple(repoID, repoPath string, params map[string]string) Versioner {
|
||||||
keep, err := strconv.Atoi(params["keep"])
|
keep, err := strconv.Atoi(params["keep"])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
keep = 5 // A reasonable default
|
keep = 5 // A reasonable default
|
||||||
@ -33,6 +34,7 @@ func NewSimple(params map[string]string) Versioner {
|
|||||||
|
|
||||||
s := Simple{
|
s := Simple{
|
||||||
keep: keep,
|
keep: keep,
|
||||||
|
repoPath: repoPath,
|
||||||
}
|
}
|
||||||
|
|
||||||
if debug {
|
if debug {
|
||||||
@ -43,7 +45,7 @@ func NewSimple(params map[string]string) Versioner {
|
|||||||
|
|
||||||
// Move away the named file to a version archive. If this function returns
|
// Move away the named file to a version archive. If this function returns
|
||||||
// nil, the named file does not exist any more (has been archived).
|
// nil, the named file does not exist any more (has been archived).
|
||||||
func (v Simple) Archive(repoPath, filePath string) error {
|
func (v Simple) Archive(filePath string) error {
|
||||||
_, err := os.Stat(filePath)
|
_, err := os.Stat(filePath)
|
||||||
if err != nil && os.IsNotExist(err) {
|
if err != nil && os.IsNotExist(err) {
|
||||||
if debug {
|
if debug {
|
||||||
@ -52,7 +54,7 @@ func (v Simple) Archive(repoPath, filePath string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
versionsDir := filepath.Join(repoPath, ".stversions")
|
versionsDir := filepath.Join(v.repoPath, ".stversions")
|
||||||
_, err = os.Stat(versionsDir)
|
_, err = os.Stat(versionsDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
@ -71,7 +73,7 @@ func (v Simple) Archive(repoPath, filePath string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
file := filepath.Base(filePath)
|
file := filepath.Base(filePath)
|
||||||
inRepoPath, err := filepath.Rel(repoPath, filepath.Dir(filePath))
|
inRepoPath, err := filepath.Rel(v.repoPath, filepath.Dir(filePath))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
package versioner
|
package versioner
|
||||||
|
|
||||||
type Versioner interface {
|
type Versioner interface {
|
||||||
Archive(repoPath, filePath string) error
|
Archive(filePath string) error
|
||||||
}
|
}
|
||||||
|
|
||||||
var Factories = map[string]func(map[string]string) Versioner{}
|
var Factories = map[string]func(repoID string, repoDir string, params map[string]string) Versioner{}
|
||||||
|
Loading…
Reference in New Issue
Block a user