From bbac74b17225642380a52da1d96ace6c401285d7 Mon Sep 17 00:00:00 2001 From: Michael Eischer Date: Mon, 19 Jun 2023 19:30:41 +0200 Subject: [PATCH] add program version to snapshot --- changelog/unreleased/issue-4188 | 7 +++++++ cmd/restic/cmd_backup.go | 1 + internal/archiver/archiver.go | 2 ++ internal/restic/snapshot.go | 2 ++ 4 files changed, 12 insertions(+) create mode 100644 changelog/unreleased/issue-4188 diff --git a/changelog/unreleased/issue-4188 b/changelog/unreleased/issue-4188 new file mode 100644 index 000000000..377468a76 --- /dev/null +++ b/changelog/unreleased/issue-4188 @@ -0,0 +1,7 @@ +Enhancement: Include client version in snapshot metadata + +The client version number is now included in the `program_version` field of a snapshot. +It can be inspected by using either `restic cat snapshot snapshotID` or `restic snapshots --json`. + +https://github.com/restic/restic/issues/4188 +https://github.com/restic/restic/pull/4378 diff --git a/cmd/restic/cmd_backup.go b/cmd/restic/cmd_backup.go index f12f70e39..d7e899eaf 100644 --- a/cmd/restic/cmd_backup.go +++ b/cmd/restic/cmd_backup.go @@ -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 { diff --git a/internal/archiver/archiver.go b/internal/archiver/archiver.go index 3c1cc33d0..98819d797 100644 --- a/internal/archiver/archiver.go +++ b/internal/archiver/archiver.go @@ -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() diff --git a/internal/restic/snapshot.go b/internal/restic/snapshot.go index 1f6e4534b..13e795ec8 100644 --- a/internal/restic/snapshot.go +++ b/internal/restic/snapshot.go @@ -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 }