Den tis 18 nov. 2025 kl 22:02 skrev Orion Poplawski <[email protected]>:

> * xz support (available in python 3.3+)
> * add --no-increment option to avoid incremented version backups
>
> diff -u ./subversion-1.14.5/tools/backup/hot-backup.py.in.orig
> ./subversion-1.14.5/tools/backup/hot-backup.py.in
> --- ./subversion-1.14.5/tools/backup/hot-backup.py.in.orig      2025-11-18
> 13:12:03.909124112 -0700
> +++ ./subversion-1.14.5/tools/backup/hot-backup.py.in   2025-11-18
> 13:12:32.105055197 -0700
> @@ -54,6 +54,7 @@
>  archive_map = {
>    'gz'  : ".tar.gz",
>    'bz2' : ".tar.bz2",
> +  'xz' : ".tar.xz",
>    'zip' : ".zip",
>    'zip64' : ".zip"
>    }
> @@ -104,8 +105,10 @@
>    --archive-type=FMT Create an archive of the backup. FMT can be one of:
>                         bz2  : Creates a bzip2 compressed tar file.
>                         gz   : Creates a gzip compressed tar file.
> +                       xz   : Creates a xz compressed tar file.
>                         zip  : Creates a compressed zip file.
>                         zip64: Creates a zip64 file (can be > 2GB).
> +  --no-increment     Do not create an incremented backup version if the
> revision already exists.
>    --num-backups=N    Number of prior backups to keep around (0 to keep
> all).
>    --verify           Verify the backup.
>    --help      -h     Print this help message and exit.
> @@ -115,6 +118,7 @@
>
>  try:
>    opts, args = getopt.gnu_getopt(sys.argv[1:], "h?", ["archive-type=",
> +                                                      "no-increment",
>                                                        "num-backups=",
>                                                        "verify",
>                                                        "help"])
> @@ -125,11 +129,14 @@
>    sys.exit(2)
>
>  archive_type = None
> +no_increment = False
>  verify_copy = False
>
>  for o, a in opts:
>    if o == "--archive-type":
>      archive_type = a
> +  elif o == "--no-increment":
> +    no_increment = True
>    elif o == "--num-backups":
>      num_backups = int(a)
>    elif o == "--verify":
> @@ -138,7 +145,7 @@
>      usage()
>      sys.exit()
>
> -if archive_type not in (None, 'bz2', 'gz', 'zip', 'zip64'):
> +if archive_type not in (None, 'bz2', 'gz', 'xz', 'zip', 'zip64'):
>    sys.stderr.write("ERROR: Bad --archive-type\n")
>    usage(sys.stderr)
>    sys.exit(2)
> @@ -256,6 +263,10 @@
>  directory_list = os.listdir(backup_dir)
>  young_list = [x for x in directory_list if regexp.search(x)]
>  if young_list:
> +  if no_increment:
> +    print(f"Backup of revision {youngest} already exists, not doing
> incremented backup.")
> +    sys.exit(0)
> +
>    young_list.sort(key = functools.cmp_to_key(comparator))
>    increment = regexp.search(young_list.pop()).groupdict()['increment']
>    if increment:
> @@ -294,7 +305,7 @@
>    err_msg = ""
>
>    print("Archiving backup to '" + archive_path + "'...")
> -  if archive_type == 'gz' or archive_type == 'bz2':
> +  if archive_type in ('gz', 'bz2', 'xz'):
>      try:
>        import tarfile
>        tar = tarfile.open(archive_path, 'w:' + archive_type)
>
> PS - not subscribed so please cc me in replies.
>
> FYI - zstd is in Python 3.14.
>
> --
> Orion Poplawski
> he/him/his  - surely the least important thing about me
> Manager of IT Systems                      720-772-5637
> NWRA, Boulder Office                  FAX: 303-415-9702
> 3380 Mitchell Lane                       [email protected]
> Boulder, CO 80301                 https://www.nwra.com/
>
>
Hi,

Thanks for your contribution! I just took a cursory look but it looks good
to me. Not tested yet though.

Do I understand correctly that support for xz only exists in Python 3.14?
In that case, may I suggest that the xz option is only added if Python
version is at least 3.14?

Cheers,
Daniel

Reply via email to