mirror of
https://github.com/borgbackup/borg.git
synced 2025-03-06 19:49:20 +00:00
Merge pull request #8053 from ThomasWaldmann/remote-version-1.4
implement "borg version", fixes #7829
This commit is contained in:
commit
266c9f6e8f
1 changed files with 45 additions and 0 deletions
|
@ -288,6 +288,17 @@ class Archiver:
|
|||
storage_quota=args.storage_quota,
|
||||
).serve()
|
||||
|
||||
def do_version(self, args):
|
||||
"""Display the borg client / borg server version"""
|
||||
from borg.version import parse_version, format_version
|
||||
client_version = parse_version(__version__)
|
||||
if args.location.proto == 'ssh':
|
||||
with RemoteRepository(args.location.omit_archive(), lock=False, args=args) as repository:
|
||||
server_version = repository.server_version
|
||||
else:
|
||||
server_version = client_version
|
||||
print(f"{format_version(client_version)} / {format_version(server_version)}")
|
||||
|
||||
@with_repository(create=True, exclusive=True, manifest=False)
|
||||
def do_init(self, args, repository):
|
||||
"""Initialize an empty repository"""
|
||||
|
@ -4134,6 +4145,40 @@ class Archiver:
|
|||
help='format output as JSON')
|
||||
define_archive_filters_group(subparser)
|
||||
|
||||
# borg version
|
||||
version_epilog = process_epilog("""
|
||||
This command displays the borg client version / borg server version.
|
||||
|
||||
If a local repo is given, the client code directly accesses the repository,
|
||||
thus we show the client version also as the server version.
|
||||
|
||||
If a remote repo is given (e.g. ssh:), the remote borg is queried and
|
||||
its version is displayed as the server version.
|
||||
|
||||
Examples::
|
||||
|
||||
# local repo (client uses 1.4.0 alpha version)
|
||||
$ borg version /mnt/backup
|
||||
1.4.0a / 1.4.0a
|
||||
|
||||
# remote repo (client uses 1.4.0 alpha, server uses 1.2.7 release)
|
||||
$ borg version ssh://borg@borgbackup:repo
|
||||
1.4.0a / 1.2.7
|
||||
|
||||
Due to the version tuple format used in borg client/server negotiation, only
|
||||
a simplified version is displayed (as provided by borg.version.format_version).
|
||||
|
||||
There is also borg --version to display a potentially more precise client version.
|
||||
""")
|
||||
subparser = subparsers.add_parser('version', parents=[common_parser], add_help=False,
|
||||
description=self.do_version.__doc__, epilog=version_epilog,
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
help='display borg client version / borg server version')
|
||||
subparser.set_defaults(func=self.do_version)
|
||||
subparser.add_argument('location', metavar='REPOSITORY', nargs='?', default='',
|
||||
type=location_validator(archive=False),
|
||||
help='repository (used to determine client/server situation)')
|
||||
|
||||
# borg init
|
||||
init_epilog = process_epilog("""
|
||||
This command initializes an empty repository. A repository is a filesystem
|
||||
|
|
Loading…
Add table
Reference in a new issue