Hello community, here is the log from the commit of package syncthing for openSUSE:Factory checked in at 2015-09-08 17:44:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/syncthing (Old) and /work/SRC/openSUSE:Factory/.syncthing.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "syncthing" Changes: -------- --- /work/SRC/openSUSE:Factory/syncthing/syncthing.changes 2015-08-31 22:59:22.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.syncthing.new/syncthing.changes 2015-09-08 17:58:20.000000000 +0200 @@ -1,0 +2,8 @@ +Sun Sep 6 10:32:23 UTC 2015 - sor.ale...@meowr.ru + +- Update to 0.11.24: + * Correctly handle (?i) in ignores. + * Adjust defaults for number of hashers based on OS. + * Allow fractional free space percentages. + +------------------------------------------------------------------- Old: ---- syncthing-0.11.23.tar.gz New: ---- syncthing-0.11.24.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ syncthing.spec ++++++ --- /var/tmp/diff_new_pack.e7ojcY/_old 2015-09-08 17:58:28.000000000 +0200 +++ /var/tmp/diff_new_pack.e7ojcY/_new 2015-09-08 17:58:28.000000000 +0200 @@ -17,7 +17,7 @@ Name: syncthing -Version: 0.11.23 +Version: 0.11.24 Release: 0 Summary: FOSS Continuous File Synchronization License: MPL-2.0 ++++++ syncthing-0.11.23.tar.gz -> syncthing-0.11.24.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/syncthing-0.11.23/gui/syncthing/folder/editFolderModalView.html new/syncthing-0.11.24/gui/syncthing/folder/editFolderModalView.html --- old/syncthing-0.11.23/gui/syncthing/folder/editFolderModalView.html 2015-08-30 13:37:18.000000000 +0200 +++ new/syncthing-0.11.24/gui/syncthing/folder/editFolderModalView.html 2015-09-06 08:47:52.000000000 +0200 @@ -40,8 +40,8 @@ </p> </div> <div class="form-group" ng-class="{'has-error': folderEditor.minDiskFreePct.$invalid && folderEditor.minDiskFreePct.$dirty}"> - <label for="minDiskFreePct"><span translate>Minimum Free Disk Space</span> (0-100%)</label> - <input name="minDiskFreePct" id="minDiskFreePct" class="form-control" type="number" ng-model="currentFolder.minDiskFreePct" required min="0" max="100"></input> + <label for="minDiskFreePct"><span translate>Minimum Free Disk Space</span> (0.0 - 100.0%)</label> + <input name="minDiskFreePct" id="minDiskFreePct" class="form-control" type="number" ng-model="currentFolder.minDiskFreePct" required min="0.0" max="100.0"></input> <p class="help-block"> <span translate ng-if="!folderEditor.minDiskFreePct.$valid && folderEditor.minDiskFreePct.$dirty">The minimum free disk space percentage must be a non-negative number between 0 and 100 (inclusive).</span> </p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/syncthing-0.11.23/lib/auto/gui.files.go new/syncthing-0.11.24/lib/auto/gui.files.go --- old/syncthing-0.11.23/lib/auto/gui.files.go 2015-08-30 13:37:18.000000000 +0200 +++ new/syncthing-0.11.24/lib/auto/gui.files.go 2015-09-06 08:47:52.000000000 +0200 @@ -5,7 +5,7 @@ ) const ( - AssetsBuildDate = "Sun, 30 Aug 2015 11:36:51 GMT" + AssetsBuildDate = "Sun, 06 Sep 2015 06:47:10 GMT" ) func Assets() map[string][]byte { @@ -89,7 +89,7 @@ assets["syncthing/device/idqrModalView.html"], _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/zSQPXLCMBCFe59iZxug0PgCttPQ0OQOQlqbnegnSAsJo+jukQ00Gj3pvW/e7uCj1Q7Yjsj2mhCyaLnlpsIcEdjEMOI1mWgJQVgcjVjK7kh3NgQnS0F4ZqOFY9jBH0jSITstVCsoKMVuxk/taS8Xzs/c/nCoFcHptDTcgzKCcTG/7lMHMFi+tzedW5Mfcg7WQ2UPQr+ifAwxf+tWYJOmlaCEUyn+cTrWOvQtvVHYLxAWxfOI6xe+kc+EOrtovqCZlFxu/hw0O1z9OZl16P5jxY9vLPZTN/TbvqbuHwAA//8BAAD//2Nevvg4AQAA") assets["syncthing/device/module.js"], _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/0rMSy/NSSzSy81PKc1J1VAvrsxLLsnIzEvXS0kty0xOVddRiI7VtOYCAAAA//8BAAD//23b1z0oAAAA") assets["syncthing/folder/editFolderModalDirective.js"], _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/1yOMQ+CMBCFd35Ft4OElF0mFzdH3Rt6wCVHa46rxhj+uxUSor7xfe/uPReGxE7sFH1iLGF+hk5HCoPtI3sUqAqTZT0Jdkr3HEFPelrhOXrHUJs+5SOKwZSVea35jwQ1SfgyNnNWoU4PBo5Q/yDF6cZO8SKc6T6k2YY0f7VXwocddWLYnyxtsVRt8QYAAP//AQAA//+34Oi50wAAAA==") - assets["syncthing/folder/editFolderModalView.html"], _ = base64.StdEncoding.DecodeString("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") + assets["syncthing/folder/editFolderModalView.html"], _ = base64.StdEncoding.DecodeString("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") assets["syncthing/folder/editIgnoresModalDirective.js"], _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/1yOsc7CMAyE9z5FtrRSle5/p39kYIQ9atzWkusgxwEh1HcnUKkCbrzz+T7PUyYvbokhE9Q23XnQGXlyY6QAYpvKFLmAAoPitZxAQD1MHAXSMQZPtjVjLi2MbOrGPN6FlwQ0C38Ym5lUcNA/Y/9t+xUpLBfyCiehku4k3UbS/e6eEW5u1oXs/mXtq7XpqycAAAD//wEAAP//eXHskdUAAAA=") assets["syncthing/folder/editIgnoresModalView.html"], _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/5xVz27bPgy+9yn48+GHdGhiFOguneNL0QE9DNjQBxgYi7aFypIg0WmzIO8+2nFcB02XbofApkzx+/jxTzKl16DVMiGl+aGyLlBMoDAY4zJpnEIDJSpKgHGlraKXZTK/TvILgP7m1HGuNBpXwd4wVe91yq9wlsny8P2UR02CGUYHcalvjj1Ys+lYBbTRIFO+5w7fkZmCjVla34zxUwF4H2zl1GYK5SdR74VpAL2P7YfYV+CsWPLBaEuLLPWT20wvjIHwgFG60PQZB2cSCO5Zzq4/J3mWHjzzi0maIZ2a/hAlNmiMXIoe7YTej1YXT1C1WhGwg9h67wKTGqlmaXcjh1mGUAcql0nN7G/TVLkiLuLGFlxrWy0scdpGCjHtc+2Oam5MV/ZQES+TnyuD9mkqeNkaAxKmbaSWyNrZLMX88vZYDmUOKSgpq0T+JVJIU4llMYgcMKQ2XukucZ4VTlH+X5b2T6kg53Ku3ijwYNfCWsDBlcA1QaXXZEEEl37ujmd6QQvhCdYx0EthWkWXgywSVp0G/nQW+FE0MgSG1mTgWRtVYFAwa5CLmqKcdMICgtKBCnZhI01jNh9APg/9rTWs30Vuuq9eqL0i967xPHaansW+c01X7yt4rkVmaRkFyL3wUVqFuypgPxYnwcQyH5zK0jk+XgETFy+9NzdU8tuRuO/qbqtD4+8T226LNgTh/dUZWSwLGY96t9tu4yYyNb35SB4Dily73SLyfuJf1XhlKkRWLbN0Fm88LZO9Ma7MFVuQ39wH3aBI373HJgFbzQsjwyqjjGsaFu3sMgGFjLI5Y6PH3I+Hoc/vsExQtvFcylw8dRukT/F/u4r+y5v2FJTBYaL+nuxfpqKoROmpMZV/YMy6kb+VPzO+My6epTwpxfg6vAyP3wAAAP//AQAA//8ktcnt0QYAAA==") assets["syncthing/folder/module.js"], _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/0rMSy/NSSzSy81PKc1J1VAvrsxLLsnIzEvXS8vPSUktUtdRiI7VtOYCAAAA//8BAAD//4Nu4g4oAAAA") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/syncthing-0.11.23/lib/config/config.go new/syncthing-0.11.24/lib/config/config.go --- old/syncthing-0.11.23/lib/config/config.go 2015-08-30 13:37:18.000000000 +0200 +++ new/syncthing-0.11.24/lib/config/config.go 2015-09-06 08:47:52.000000000 +0200 @@ -74,7 +74,7 @@ RescanIntervalS int `xml:"rescanIntervalS,attr" json:"rescanIntervalS"` IgnorePerms bool `xml:"ignorePerms,attr" json:"ignorePerms"` AutoNormalize bool `xml:"autoNormalize,attr" json:"autoNormalize"` - MinDiskFreePct int `xml:"minDiskFreePct" json:"minDiskFreePct"` + MinDiskFreePct float64 `xml:"minDiskFreePct" json:"minDiskFreePct"` Versioning VersioningConfiguration `xml:"versioning" json:"versioning"` Copiers int `xml:"copiers" json:"copiers"` // This defines how many files are handled concurrently. Pullers int `xml:"pullers" json:"pullers"` // Defines how many blocks are fetched at the same time, possibly between separate copier routines. @@ -238,7 +238,7 @@ DatabaseBlockCacheMiB int `xml:"databaseBlockCacheMiB" json:"databaseBlockCacheMiB" default:"0"` PingTimeoutS int `xml:"pingTimeoutS" json:"pingTimeoutS" default:"30"` PingIdleTimeS int `xml:"pingIdleTimeS" json:"pingIdleTimeS" default:"60"` - MinHomeDiskFreePct int `xml:"minHomeDiskFreePct" json:"minHomeDiskFreePct" default:"1"` + MinHomeDiskFreePct float64 `xml:"minHomeDiskFreePct" json:"minHomeDiskFreePct" default:"1"` } func (orig OptionsConfiguration) Copy() OptionsConfiguration { @@ -534,6 +534,13 @@ } f.SetInt(i) + case float64: + i, err := strconv.ParseFloat(v, 64) + if err != nil { + return err + } + f.SetFloat(i) + case bool: f.SetBool(v == "true") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/syncthing-0.11.23/lib/config/config_test.go new/syncthing-0.11.24/lib/config/config_test.go --- old/syncthing-0.11.23/lib/config/config_test.go 2015-08-30 13:37:18.000000000 +0200 +++ new/syncthing-0.11.24/lib/config/config_test.go 2015-09-06 08:47:52.000000000 +0200 @@ -166,7 +166,7 @@ DatabaseBlockCacheMiB: 42, PingTimeoutS: 60, PingIdleTimeS: 120, - MinHomeDiskFreePct: 5, + MinHomeDiskFreePct: 5.2, } cfg, err := Load("testdata/overridenvalues.xml", device1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/syncthing-0.11.23/lib/config/testdata/overridenvalues.xml new/syncthing-0.11.24/lib/config/testdata/overridenvalues.xml --- old/syncthing-0.11.23/lib/config/testdata/overridenvalues.xml 2015-08-30 13:37:18.000000000 +0200 +++ new/syncthing-0.11.24/lib/config/testdata/overridenvalues.xml 2015-09-06 08:47:52.000000000 +0200 @@ -26,6 +26,6 @@ <databaseBlockCacheMiB>42</databaseBlockCacheMiB> <pingTimeoutS>60</pingTimeoutS> <pingIdleTimeS>120</pingIdleTimeS> - <minHomeDiskFreePct>5</minHomeDiskFreePct> + <minHomeDiskFreePct>5.2</minHomeDiskFreePct> </options> </configuration> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/syncthing-0.11.23/lib/fnmatch/fnmatch.go new/syncthing-0.11.24/lib/fnmatch/fnmatch.go --- old/syncthing-0.11.23/lib/fnmatch/fnmatch.go 2015-08-30 13:37:18.000000000 +0200 +++ new/syncthing-0.11.24/lib/fnmatch/fnmatch.go 2015-09-06 08:47:52.000000000 +0200 @@ -38,14 +38,6 @@ } } - // Support case insensitive ignores. We do the loop because we may in some - // circumstances end up with multiple insensitivity prefixes - // ("(?i)(?i)foo"), which should be accepted. - for ignore := strings.TrimPrefix(pattern, "(?i)"); ignore != pattern; ignore = strings.TrimPrefix(pattern, "(?i)") { - flags |= CaseFold - pattern = ignore - } - if flags&NoEscape != 0 { pattern = strings.Replace(pattern, "\\", "\\\\", -1) } else { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/syncthing-0.11.23/lib/fnmatch/fnmatch_test.go new/syncthing-0.11.24/lib/fnmatch/fnmatch_test.go --- old/syncthing-0.11.23/lib/fnmatch/fnmatch_test.go 2015-08-30 13:37:18.000000000 +0200 +++ new/syncthing-0.11.24/lib/fnmatch/fnmatch_test.go 2015-09-06 08:47:52.000000000 +0200 @@ -53,10 +53,6 @@ {"**/foo.txt", "bar/baz/foo.txt", PathName, true}, {"foo.txt", "foo.TXT", CaseFold, true}, - {"(?i)foo.txt", "foo.TXT", 0, true}, - {"(?i)(?i)foo.txt", "foo.TXT", 0, true}, // repeated prefix should be fine - {"(?i)**foo.txt", "/dev/tmp/foo.TXT", 0, true}, - {"(?i)!**foo.txt", "/dev/tmp/foo.TXT", 0, false}, // These characters are literals in glob, but not in regexp. {"hey$hello", "hey$hello", 0, true}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/syncthing-0.11.23/lib/ignore/ignore.go new/syncthing-0.11.24/lib/ignore/ignore.go --- old/syncthing-0.11.23/lib/ignore/ignore.go 2015-08-30 13:37:18.000000000 +0200 +++ new/syncthing-0.11.24/lib/ignore/ignore.go 2015-09-06 08:47:52.000000000 +0200 @@ -206,22 +206,28 @@ include = false } + flags := fnmatch.PathName + if strings.HasPrefix(line, "(?i)") { + line = line[4:] + flags |= fnmatch.CaseFold + } + if strings.HasPrefix(line, "/") { // Pattern is rooted in the current dir only - exp, err := fnmatch.Convert(line[1:], fnmatch.PathName) + exp, err := fnmatch.Convert(line[1:], flags) if err != nil { return fmt.Errorf("Invalid pattern %q in ignore file", line) } patterns = append(patterns, Pattern{exp, include}) } else if strings.HasPrefix(line, "**/") { // Add the pattern as is, and without **/ so it matches in current dir - exp, err := fnmatch.Convert(line, fnmatch.PathName) + exp, err := fnmatch.Convert(line, flags) if err != nil { return fmt.Errorf("Invalid pattern %q in ignore file", line) } patterns = append(patterns, Pattern{exp, include}) - exp, err = fnmatch.Convert(line[3:], fnmatch.PathName) + exp, err = fnmatch.Convert(line[3:], flags) if err != nil { return fmt.Errorf("Invalid pattern %q in ignore file", line) } @@ -236,13 +242,13 @@ } else { // Path name or pattern, add it so it matches files both in // current directory and subdirs. - exp, err := fnmatch.Convert(line, fnmatch.PathName) + exp, err := fnmatch.Convert(line, flags) if err != nil { return fmt.Errorf("Invalid pattern %q in ignore file", line) } patterns = append(patterns, Pattern{exp, include}) - exp, err = fnmatch.Convert("**/"+line, fnmatch.PathName) + exp, err = fnmatch.Convert("**/"+line, flags) if err != nil { return fmt.Errorf("Invalid pattern %q in ignore file", line) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/syncthing-0.11.23/lib/model/model.go new/syncthing-0.11.24/lib/model/model.go --- old/syncthing-0.11.23/lib/model/model.go 2015-08-30 13:37:18.000000000 +0200 +++ new/syncthing-0.11.24/lib/model/model.go 2015-09-06 08:47:52.000000000 +0200 @@ -1424,8 +1424,16 @@ return folderCfg.Hashers } + if runtime.GOOS == "windows" || runtime.GOOS == "darwin" { + // Interactive operating systems; don't load the system too heavily by + // default. + return 1 + } + + // For other operating systems and architectures, lets try to get some + // work done... Divide the available CPU cores among the configured + // folders. if perFolder := runtime.GOMAXPROCS(-1) / numFolders; perFolder > 0 { - // We have CPUs to spare, divide them per folder. return perFolder } @@ -1662,7 +1670,7 @@ // CheckFolderHealth checks the folder for common errors and returns the // current folder error, or nil if the folder is healthy. func (m *Model) CheckFolderHealth(id string) error { - if minFree := float64(m.cfg.Options().MinHomeDiskFreePct); minFree > 0 { + if minFree := m.cfg.Options().MinHomeDiskFreePct; minFree > 0 { if free, err := osutil.DiskFreePercentage(m.cfg.ConfigPath()); err == nil && free < minFree { return errors.New("home disk is out of space") } @@ -1683,7 +1691,7 @@ err = errors.New("folder path missing") } else if !folder.HasMarker() { err = errors.New("folder marker missing") - } else if free, errDfp := osutil.DiskFreePercentage(folder.Path()); errDfp == nil && free < float64(folder.MinDiskFreePct) { + } else if free, errDfp := osutil.DiskFreePercentage(folder.Path()); errDfp == nil && free < folder.MinDiskFreePct { err = errors.New("out of disk space") } } else if os.IsNotExist(err) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/syncthing-0.11.23/lib/model/rwfolder.go new/syncthing-0.11.24/lib/model/rwfolder.go --- old/syncthing-0.11.23/lib/model/rwfolder.go 2015-08-30 13:37:18.000000000 +0200 +++ new/syncthing-0.11.24/lib/model/rwfolder.go 2015-09-06 08:47:52.000000000 +0200 @@ -508,14 +508,13 @@ return true }) - // Check if we are able to store all files on disk - if pullFileSize > 0 { - folder, ok := p.model.cfg.Folders()[p.folder] - if ok { - if free, err := osutil.DiskFreeBytes(folder.Path()); err == nil && free < pullFileSize { - l.Infof("Puller (folder %q): insufficient disk space available to pull %d files (%.2fMB)", p.folder, changed, float64(pullFileSize)/1024/1024) - return 0 - } + // Check if we are able to store all files on disk. Only perform this + // check if there is a minimum free space threshold set on the folder. + folderCfg := p.model.cfg.Folders()[p.folder] + if folderCfg.MinDiskFreePct > 0 || pullFileSize > 0 { + if free, err := osutil.DiskFreeBytes(folderCfg.Path()); err == nil && free < pullFileSize { + l.Warnf(`Folder "%s": insufficient disk space available to pull %d files (%.2f MiB)`, p.folder, changed, float64(pullFileSize)/1024/1024) + return 0 } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/syncthing-0.11.23/test/ignore_test.go new/syncthing-0.11.24/test/ignore_test.go --- old/syncthing-0.11.23/test/ignore_test.go 2015-08-30 13:37:18.000000000 +0200 +++ new/syncthing-0.11.24/test/ignore_test.go 2015-09-06 08:47:52.000000000 +0200 @@ -31,23 +31,23 @@ // Create eight empty files and directories - files := []string{"f1", "f2", "f3", "f4", "f11", "f12", "f13", "f14"} dirs := []string{"d1", "d2", "d3", "d4", "d11", "d12", "d13", "d14"} + files := []string{"f1", "f2", "f3", "f4", "f11", "f12", "f13", "f14", "d1/f1.TXT"} all := append(files, dirs...) - for _, file := range files { - fd, err := os.Create(filepath.Join("s1", file)) + for _, dir := range dirs { + err := os.Mkdir(filepath.Join("s1", dir), 0755) if err != nil { t.Fatal(err) } - fd.Close() } - for _, dir := range dirs { - err := os.Mkdir(filepath.Join("s1", dir), 0755) + for _, file := range files { + fd, err := os.Create(filepath.Join("s1", file)) if err != nil { t.Fatal(err) } + fd.Close() } var syms []string @@ -81,7 +81,7 @@ if err != nil { t.Fatal(err) } - _, err = fd.WriteString("f1*\nf2\nd1*\nd2\ns1*\ns2") // [fds][34] only non-ignored items + _, err = fd.WriteString("f1*\nf2\nd1*\nd2\ns1*\ns2\n(?i)*.txt") // [fds][34] only non-ignored items if err != nil { t.Fatal(err) } @@ -130,7 +130,7 @@ if err != nil { t.Fatal(err) } - expected = len(all) * 7 / 8 // seven out of eight items of each type should remain + expected = len(all)*7/8 + 1 // seven out of eight items of each type should remain, plus the foo.TXT if m.LocalFiles != expected { t.Fatalf("Incorrect number of files after second ignore, %d != %d", m.LocalFiles, expected) }