소스 검색

Remove SyncOrder, at least temporarily (sorry fREW)

Doesn't actually work very well with the batched approach to needed
files, not documented, not exposed in UI. I'll be happy to reintegrate
if this is solved.
Jakob Borg 11 년 전
부모
커밋
75d4d2df8b
4개의 변경된 파일7개의 추가작업 그리고 177개의 파일을 삭제
  1. 7 51
      config/config.go
  2. 0 90
      config/config_test.go
  3. 0 33
      files/sort.go
  4. 0 3
      model/model.go

+ 7 - 51
config/config.go

@@ -11,7 +11,6 @@ import (
 	"io"
 	"os"
 	"reflect"
-	"regexp"
 	"sort"
 	"strconv"
 
@@ -31,42 +30,14 @@ type Configuration struct {
 	XMLName      xml.Name                  `xml:"configuration" json:"-"`
 }
 
-// SyncOrderPattern allows a user to prioritize file downloading based on a
-// regular expression.  If a file matches the Pattern the Priority will be
-// assigned to the file.  If a file matches more than one Pattern the
-// Priorities are summed.  This allows a user to, for example, prioritize files
-// in a directory, as well as prioritize based on file type.  The higher the
-// priority the "sooner" a file will be downloaded.  Files can be deprioritized
-// by giving them a negative priority.  While Priority is represented as an
-// integer, the expected range is something like -1000 to 1000.
-type SyncOrderPattern struct {
-	Pattern         string `xml:"pattern,attr"`
-	Priority        int    `xml:"priority,attr"`
-	compiledPattern *regexp.Regexp
-}
-
-func (s *SyncOrderPattern) CompiledPattern() *regexp.Regexp {
-	if s.compiledPattern == nil {
-		re, err := regexp.Compile(s.Pattern)
-		if err != nil {
-			l.Warnln("Could not compile regexp (" + s.Pattern + "): " + err.Error())
-			s.compiledPattern = regexp.MustCompile("^\\0$")
-		} else {
-			s.compiledPattern = re
-		}
-	}
-	return s.compiledPattern
-}
-
 type RepositoryConfiguration struct {
-	ID                string                  `xml:"id,attr"`
-	Directory         string                  `xml:"directory,attr"`
-	Nodes             []NodeConfiguration     `xml:"node"`
-	ReadOnly          bool                    `xml:"ro,attr"`
-	IgnorePerms       bool                    `xml:"ignorePerms,attr"`
-	Invalid           string                  `xml:"-"` // Set at runtime when there is an error, not saved
-	Versioning        VersioningConfiguration `xml:"versioning"`
-	SyncOrderPatterns []SyncOrderPattern      `xml:"syncorder>pattern"`
+	ID          string                  `xml:"id,attr"`
+	Directory   string                  `xml:"directory,attr"`
+	Nodes       []NodeConfiguration     `xml:"node"`
+	ReadOnly    bool                    `xml:"ro,attr"`
+	IgnorePerms bool                    `xml:"ignorePerms,attr"`
+	Invalid     string                  `xml:"-"` // Set at runtime when there is an error, not saved
+	Versioning  VersioningConfiguration `xml:"versioning"`
 
 	nodeIDs []protocol.NodeID
 }
@@ -121,21 +92,6 @@ func (r *RepositoryConfiguration) NodeIDs() []protocol.NodeID {
 	return r.nodeIDs
 }
 
-func (r RepositoryConfiguration) FileRanker() func(protocol.FileInfo) int {
-	if len(r.SyncOrderPatterns) <= 0 {
-		return nil
-	}
-	return func(f protocol.FileInfo) int {
-		ret := 0
-		for _, v := range r.SyncOrderPatterns {
-			if v.CompiledPattern().MatchString(f.Name) {
-				ret += v.Priority
-			}
-		}
-		return ret
-	}
-}
-
 type NodeConfiguration struct {
 	NodeID    protocol.NodeID `xml:"id,attr"`
 	Name      string          `xml:"name,attr,omitempty"`

+ 0 - 90
config/config_test.go

@@ -11,7 +11,6 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/calmh/syncthing/files"
 	"github.com/calmh/syncthing/protocol"
 )
 
@@ -233,92 +232,3 @@ func TestNodeAddresses(t *testing.T) {
 		t.Errorf("Nodes differ;\n  E: %#v\n  A: %#v", expected, cfg.Nodes)
 	}
 }
-
-func TestSyncOrders(t *testing.T) {
-	data := []byte(`
-<configuration version="2">
-    <repository directory="~/Sync">
-        <syncorder>
-            <pattern pattern="\.jpg$" priority="1" />
-        </syncorder>
-    </repository>
-</configuration>
-`)
-
-	expected := []SyncOrderPattern{
-		{
-			Pattern:  "\\.jpg$",
-			Priority: 1,
-		},
-	}
-
-	cfg, err := Load(bytes.NewReader(data), node1)
-	if err != nil {
-		t.Error(err)
-	}
-
-	for i := range expected {
-		if !reflect.DeepEqual(cfg.Repositories[0].SyncOrderPatterns[i], expected[i]) {
-			t.Errorf("Patterns[%d] differ;\n  E: %#v\n  A: %#v", i, expected[i], cfg.Repositories[0].SyncOrderPatterns[i])
-		}
-	}
-}
-
-func TestFileSorter(t *testing.T) {
-	rcfg := RepositoryConfiguration{
-		SyncOrderPatterns: []SyncOrderPattern{
-			{"\\.jpg$", 10, nil},
-			{"\\.mov$", 5, nil},
-			{"^camera-uploads", 100, nil},
-		},
-	}
-
-	f := []protocol.FileInfo{
-		{Name: "bar.mov"},
-		{Name: "baz.txt"},
-		{Name: "foo.jpg"},
-		{Name: "frew/foo.jpg"},
-		{Name: "frew/lol.go"},
-		{Name: "frew/rofl.copter"},
-		{Name: "frew/bar.mov"},
-		{Name: "camera-uploads/foo.jpg"},
-		{Name: "camera-uploads/hurr.pl"},
-		{Name: "camera-uploads/herp.mov"},
-		{Name: "camera-uploads/wee.txt"},
-	}
-
-	files.SortBy(rcfg.FileRanker()).Sort(f)
-
-	expected := []protocol.FileInfo{
-		{Name: "camera-uploads/foo.jpg"},
-		{Name: "camera-uploads/herp.mov"},
-		{Name: "camera-uploads/hurr.pl"},
-		{Name: "camera-uploads/wee.txt"},
-		{Name: "foo.jpg"},
-		{Name: "frew/foo.jpg"},
-		{Name: "bar.mov"},
-		{Name: "frew/bar.mov"},
-		{Name: "frew/lol.go"},
-		{Name: "baz.txt"},
-		{Name: "frew/rofl.copter"},
-	}
-
-	if !reflect.DeepEqual(f, expected) {
-		t.Errorf(
-			"\n\nexpected:\n" +
-				formatFiles(expected) + "\n" +
-				"got:\n" +
-				formatFiles(f) + "\n\n",
-		)
-	}
-}
-
-func formatFiles(f []protocol.FileInfo) string {
-	ret := ""
-
-	for _, v := range f {
-		ret += "   " + v.Name + "\n"
-	}
-
-	return ret
-}

+ 0 - 33
files/sort.go

@@ -1,33 +0,0 @@
-package files
-
-import (
-	"github.com/calmh/syncthing/protocol"
-	"sort"
-)
-
-type SortBy func(p protocol.FileInfo) int
-
-func (by SortBy) Sort(files []protocol.FileInfo) {
-	ps := &fileSorter{
-		files: files,
-		by:    by,
-	}
-	sort.Sort(ps)
-}
-
-type fileSorter struct {
-	files []protocol.FileInfo
-	by    func(p1 protocol.FileInfo) int
-}
-
-func (s *fileSorter) Len() int {
-	return len(s.files)
-}
-
-func (s *fileSorter) Swap(i, j int) {
-	s.files[i], s.files[j] = s.files[j], s.files[i]
-}
-
-func (s *fileSorter) Less(i, j int) bool {
-	return s.by(s.files[i]) > s.by(s.files[j])
-}

+ 0 - 3
model/model.go

@@ -318,9 +318,6 @@ func (m *Model) NeedFilesRepo(repo string) []protocol.FileInfo {
 			fs = append(fs, f)
 			return len(fs) < indexBatchSize
 		})
-		if r := m.repoCfgs[repo].FileRanker(); r != nil {
-			files.SortBy(r).Sort(fs)
-		}
 		return fs
 	}
 	return nil