mirror of
https://github.com/restic/restic.git
synced 2025-11-16 10:23:35 +00:00
restic: Use stable sorting in snapshot policy
sort.Sort is not guaranteed to be stable. Go 1.19 has changed the sorting algorithm which resulted in changes of the sort order. When comparing snapshots with identical timestamp but different paths and tags lists, there is not meaningful order among them. So just keep their order stable.
This commit is contained in:
committed by
Lorenz Bausch
parent
b82f4824f0
commit
f3fdc66b32
@@ -190,7 +190,7 @@ type KeepReason struct {
|
|||||||
// according to the policy p. list is sorted in the process. reasons contains
|
// according to the policy p. list is sorted in the process. reasons contains
|
||||||
// the reasons to keep each snapshot, it is in the same order as keep.
|
// the reasons to keep each snapshot, it is in the same order as keep.
|
||||||
func ApplyPolicy(list Snapshots, p ExpirePolicy) (keep, remove Snapshots, reasons []KeepReason) {
|
func ApplyPolicy(list Snapshots, p ExpirePolicy) (keep, remove Snapshots, reasons []KeepReason) {
|
||||||
sort.Sort(list)
|
sort.Stable(list)
|
||||||
|
|
||||||
if p.Empty() {
|
if p.Empty() {
|
||||||
for _, sn := range list {
|
for _, sn := range list {
|
||||||
|
|||||||
108
internal/restic/testdata/policy_keep_snapshots_0
vendored
108
internal/restic/testdata/policy_keep_snapshots_0
vendored
@@ -150,27 +150,6 @@
|
|||||||
"tree": null,
|
"tree": null,
|
||||||
"paths": null
|
"paths": null
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": [
|
|
||||||
"path1",
|
|
||||||
"path2"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
@@ -185,6 +164,27 @@
|
|||||||
"bar"
|
"bar"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"path1",
|
||||||
|
"path2"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"time": "2015-10-20T10:20:30Z",
|
"time": "2015-10-20T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
@@ -911,39 +911,6 @@
|
|||||||
],
|
],
|
||||||
"counters": {}
|
"counters": {}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"snapshot": {
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": [
|
|
||||||
"path1",
|
|
||||||
"path2"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"matches": [
|
|
||||||
"policy is empty"
|
|
||||||
],
|
|
||||||
"counters": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"snapshot": {
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"matches": [
|
|
||||||
"policy is empty"
|
|
||||||
],
|
|
||||||
"counters": {}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
@@ -970,6 +937,39 @@
|
|||||||
],
|
],
|
||||||
"counters": {}
|
"counters": {}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"policy is empty"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"path1",
|
||||||
|
"path2"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"policy is empty"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2015-10-20T10:20:30Z",
|
"time": "2015-10-20T10:20:30Z",
|
||||||
|
|||||||
@@ -1,5 +1,23 @@
|
|||||||
{
|
{
|
||||||
"keep": [
|
"keep": [
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
@@ -12,24 +30,6 @@
|
|||||||
"bar"
|
"bar"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"time": "2014-11-15T10:20:30Z",
|
"time": "2014-11-15T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
@@ -153,6 +153,36 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"reasons": [
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
@@ -171,36 +201,6 @@
|
|||||||
],
|
],
|
||||||
"counters": {}
|
"counters": {}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"snapshot": {
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"matches": [
|
|
||||||
"has tags [foo]"
|
|
||||||
],
|
|
||||||
"counters": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"snapshot": {
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"matches": [
|
|
||||||
"has tags [foo]"
|
|
||||||
],
|
|
||||||
"counters": {}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2014-11-15T10:20:30Z",
|
"time": "2014-11-15T10:20:30Z",
|
||||||
|
|||||||
@@ -1,5 +1,23 @@
|
|||||||
{
|
{
|
||||||
"keep": [
|
"keep": [
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
@@ -12,24 +30,6 @@
|
|||||||
"bar"
|
"bar"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"time": "2014-11-15T10:20:30Z",
|
"time": "2014-11-15T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
@@ -41,6 +41,36 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"reasons": [
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo, bar]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo, bar]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
@@ -59,36 +89,6 @@
|
|||||||
],
|
],
|
||||||
"counters": {}
|
"counters": {}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"snapshot": {
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"matches": [
|
|
||||||
"has tags [foo, bar]"
|
|
||||||
],
|
|
||||||
"counters": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"snapshot": {
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"matches": [
|
|
||||||
"has tags [foo, bar]"
|
|
||||||
],
|
|
||||||
"counters": {}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2014-11-15T10:20:30Z",
|
"time": "2014-11-15T10:20:30Z",
|
||||||
|
|||||||
100
internal/restic/testdata/policy_keep_snapshots_20
vendored
100
internal/restic/testdata/policy_keep_snapshots_20
vendored
@@ -1,5 +1,23 @@
|
|||||||
{
|
{
|
||||||
"keep": [
|
"keep": [
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
@@ -12,24 +30,6 @@
|
|||||||
"bar"
|
"bar"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"time": "2014-11-15T10:20:30Z",
|
"time": "2014-11-15T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
@@ -161,6 +161,38 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"reasons": [
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]",
|
||||||
|
"has tags [bar]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]",
|
||||||
|
"has tags [bar]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
@@ -180,38 +212,6 @@
|
|||||||
],
|
],
|
||||||
"counters": {}
|
"counters": {}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"snapshot": {
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"matches": [
|
|
||||||
"has tags [foo]",
|
|
||||||
"has tags [bar]"
|
|
||||||
],
|
|
||||||
"counters": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"snapshot": {
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"matches": [
|
|
||||||
"has tags [foo]",
|
|
||||||
"has tags [bar]"
|
|
||||||
],
|
|
||||||
"counters": {}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2014-11-15T10:20:30Z",
|
"time": "2014-11-15T10:20:30Z",
|
||||||
|
|||||||
108
internal/restic/testdata/policy_keep_snapshots_26
vendored
108
internal/restic/testdata/policy_keep_snapshots_26
vendored
@@ -150,27 +150,6 @@
|
|||||||
"tree": null,
|
"tree": null,
|
||||||
"paths": null
|
"paths": null
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": [
|
|
||||||
"path1",
|
|
||||||
"path2"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
@@ -185,6 +164,27 @@
|
|||||||
"bar"
|
"bar"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"path1",
|
||||||
|
"path2"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"time": "2015-10-20T10:20:30Z",
|
"time": "2015-10-20T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
@@ -662,39 +662,6 @@
|
|||||||
],
|
],
|
||||||
"counters": {}
|
"counters": {}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"snapshot": {
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": [
|
|
||||||
"path1",
|
|
||||||
"path2"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"matches": [
|
|
||||||
"within 1y1m1d"
|
|
||||||
],
|
|
||||||
"counters": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"snapshot": {
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"matches": [
|
|
||||||
"within 1y1m1d"
|
|
||||||
],
|
|
||||||
"counters": {}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
@@ -721,6 +688,39 @@
|
|||||||
],
|
],
|
||||||
"counters": {}
|
"counters": {}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1y1m1d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"path1",
|
||||||
|
"path2"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1y1m1d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2015-10-20T10:20:30Z",
|
"time": "2015-10-20T10:20:30Z",
|
||||||
|
|||||||
108
internal/restic/testdata/policy_keep_snapshots_29
vendored
108
internal/restic/testdata/policy_keep_snapshots_29
vendored
@@ -150,27 +150,6 @@
|
|||||||
"tree": null,
|
"tree": null,
|
||||||
"paths": null
|
"paths": null
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": [
|
|
||||||
"path1",
|
|
||||||
"path2"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
@@ -185,6 +164,27 @@
|
|||||||
"bar"
|
"bar"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"path1",
|
||||||
|
"path2"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"time": "2015-10-20T10:20:30Z",
|
"time": "2015-10-20T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
@@ -691,39 +691,6 @@
|
|||||||
],
|
],
|
||||||
"counters": {}
|
"counters": {}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"snapshot": {
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": [
|
|
||||||
"path1",
|
|
||||||
"path2"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"matches": [
|
|
||||||
"within 1y2m3d3h"
|
|
||||||
],
|
|
||||||
"counters": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"snapshot": {
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"matches": [
|
|
||||||
"within 1y2m3d3h"
|
|
||||||
],
|
|
||||||
"counters": {}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
@@ -750,6 +717,39 @@
|
|||||||
],
|
],
|
||||||
"counters": {}
|
"counters": {}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1y2m3d3h"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"path1",
|
||||||
|
"path2"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1y2m3d3h"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2015-10-20T10:20:30Z",
|
"time": "2015-10-20T10:20:30Z",
|
||||||
|
|||||||
62
internal/restic/testdata/policy_keep_snapshots_3
vendored
62
internal/restic/testdata/policy_keep_snapshots_3
vendored
@@ -150,27 +150,6 @@
|
|||||||
"tree": null,
|
"tree": null,
|
||||||
"paths": null
|
"paths": null
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": [
|
|
||||||
"path1",
|
|
||||||
"path2"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
@@ -185,6 +164,27 @@
|
|||||||
"bar"
|
"bar"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"path1",
|
||||||
|
"path2"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"time": "2015-10-20T10:20:30Z",
|
"time": "2015-10-20T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
@@ -955,14 +955,7 @@
|
|||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
"paths": [
|
"paths": null
|
||||||
"path1",
|
|
||||||
"path2"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"matches": [
|
"matches": [
|
||||||
"last snapshot"
|
"last snapshot"
|
||||||
@@ -992,7 +985,11 @@
|
|||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
"paths": null
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"matches": [
|
"matches": [
|
||||||
"last snapshot"
|
"last snapshot"
|
||||||
@@ -1005,7 +1002,10 @@
|
|||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
"paths": null,
|
"paths": [
|
||||||
|
"path1",
|
||||||
|
"path2"
|
||||||
|
],
|
||||||
"tags": [
|
"tags": [
|
||||||
"foo",
|
"foo",
|
||||||
"bar"
|
"bar"
|
||||||
|
|||||||
62
internal/restic/testdata/policy_keep_snapshots_4
vendored
62
internal/restic/testdata/policy_keep_snapshots_4
vendored
@@ -150,27 +150,6 @@
|
|||||||
"tree": null,
|
"tree": null,
|
||||||
"paths": null
|
"paths": null
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": [
|
|
||||||
"path1",
|
|
||||||
"path2"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"time": "2015-10-22T10:20:30Z",
|
|
||||||
"tree": null,
|
|
||||||
"paths": null,
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
@@ -185,6 +164,27 @@
|
|||||||
"bar"
|
"bar"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"path1",
|
||||||
|
"path2"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"time": "2015-10-20T10:20:30Z",
|
"time": "2015-10-20T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
@@ -975,14 +975,7 @@
|
|||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
"paths": [
|
"paths": null
|
||||||
"path1",
|
|
||||||
"path2"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"foo",
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"matches": [
|
"matches": [
|
||||||
"last snapshot"
|
"last snapshot"
|
||||||
@@ -1012,7 +1005,11 @@
|
|||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
"paths": null
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"matches": [
|
"matches": [
|
||||||
"last snapshot"
|
"last snapshot"
|
||||||
@@ -1025,7 +1022,10 @@
|
|||||||
"snapshot": {
|
"snapshot": {
|
||||||
"time": "2015-10-22T10:20:30Z",
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"tree": null,
|
"tree": null,
|
||||||
"paths": null,
|
"paths": [
|
||||||
|
"path1",
|
||||||
|
"path2"
|
||||||
|
],
|
||||||
"tags": [
|
"tags": [
|
||||||
"foo",
|
"foo",
|
||||||
"bar"
|
"bar"
|
||||||
|
|||||||
Reference in New Issue
Block a user