Merge pull request #4378 from MichaelEischer/add-version-to-snapshot

Add program version to snapshot
This commit is contained in:
Michael Eischer 2023-07-07 23:50:44 +02:00 committed by GitHub
commit 1b3870dc43
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 29 additions and 0 deletions

View file

@ -0,0 +1,8 @@
Enhancement: `backup` includes restic version in snapshot metadata
The restic version used backup the snapshot is now included in its metadata.
The program version is shown when inspecting a snapshot using `restic cat
snapshot <snapshotID>` or `restic snapshots --json`.
https://github.com/restic/restic/issues/4188
https://github.com/restic/restic/pull/4378

View file

@ -645,6 +645,7 @@ func runBackup(ctx context.Context, opts BackupOptions, gopts GlobalOptions, ter
Time: timeStamp,
Hostname: opts.Host,
ParentSnapshot: parentSnapshot,
ProgramVersion: "restic " + version,
}
if !gopts.JSON {

View file

@ -440,6 +440,22 @@ func TestBackupTags(t *testing.T) {
"expected parent to be %v, got %v", parent.ID, newest.Parent)
}
func TestBackupProgramVersion(t *testing.T) {
env, cleanup := withTestEnvironment(t)
defer cleanup()
testSetupBackupData(t, env)
testRunBackup(t, "", []string{env.testdata}, BackupOptions{}, env.gopts)
newest, _ := testRunSnapshots(t, env.gopts)
if newest == nil {
t.Fatal("expected a backup, got nil")
}
resticVersion := "restic " + version
rtest.Assert(t, newest.ProgramVersion == resticVersion,
"expected %v, got %v", resticVersion, newest.ProgramVersion)
}
func TestQuietBackup(t *testing.T) {
env, cleanup := withTestEnvironment(t)
defer cleanup()

View file

@ -680,6 +680,7 @@ type SnapshotOptions struct {
Excludes []string
Time time.Time
ParentSnapshot *restic.Snapshot
ProgramVersion string
}
// loadParentTree loads a tree referenced by snapshot id. If id is null, nil is returned.
@ -796,6 +797,7 @@ func (arch *Archiver) Snapshot(ctx context.Context, targets []string, opts Snaps
return nil, restic.ID{}, err
}
sn.ProgramVersion = opts.ProgramVersion
sn.Excludes = opts.Excludes
if opts.ParentSnapshot != nil {
sn.Parent = opts.ParentSnapshot.ID()

View file

@ -25,6 +25,8 @@ type Snapshot struct {
Tags []string `json:"tags,omitempty"`
Original *ID `json:"original,omitempty"`
ProgramVersion string `json:"program_version,omitempty"`
id *ID // plaintext ID, used during restore
}