forked from TrueCloudLab/restic
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:
parent
b82f4824f0
commit
f3fdc66b32
9 changed files with 371 additions and 371 deletions
|
@ -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"
|
||||||
|
|
Loading…
Add table
Reference in a new issue