Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-svneverever for openSUSE:Factory checked in at 2023-07-17 19:24:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-svneverever (Old) and /work/SRC/openSUSE:Factory/.python-svneverever.new.3193 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-svneverever" Mon Jul 17 19:24:54 2023 rev:4 rq:1098911 version:1.7.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python-svneverever/python-svneverever.changes 2022-10-18 12:45:40.169815206 +0200 +++ /work/SRC/openSUSE:Factory/.python-svneverever.new.3193/python-svneverever.changes 2023-07-17 19:24:55.174305059 +0200 @@ -1,0 +2,10 @@ +Sun Jul 16 09:03:30 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 1.7.2: + * Actions: Create pull requests from pre-commit autoupdate + output + * Drop support for end-of-life Python <=3.6 + * Pin GitHub Actions to specific commits for security + * Handle use of non-root repository path gracefully (fixes #74) + +------------------------------------------------------------------- Old: ---- v1.7.1.tar.gz New: ---- v1.7.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-svneverever.spec ++++++ --- /var/tmp/diff_new_pack.rDLtbs/_old 2023-07-17 19:24:56.502312752 +0200 +++ /var/tmp/diff_new_pack.rDLtbs/_new 2023-07-17 19:24:56.510312799 +0200 @@ -21,7 +21,7 @@ %define oldpython python %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-svneverever -Version: 1.7.1 +Version: 1.7.2 Release: 0 Summary: Tool collecting path entries across SVN history License: GPL-3.0-only ++++++ v1.7.1.tar.gz -> v1.7.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svneverever-1.7.1/.github/dependabot.yml new/svneverever-1.7.2/.github/dependabot.yml --- old/svneverever-1.7.1/.github/dependabot.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/svneverever-1.7.2/.github/dependabot.yml 2023-06-19 12:38:33.000000000 +0200 @@ -0,0 +1,12 @@ +version: 2 +updates: + + - package-ecosystem: "github-actions" + commit-message: + include: "scope" + prefix: "Actions" + directory: "/" + labels: + - "enhancement" + schedule: + interval: "weekly" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svneverever-1.7.1/.github/workflows/pre-commit-detect-outdated.yml new/svneverever-1.7.2/.github/workflows/pre-commit-detect-outdated.yml --- old/svneverever-1.7.1/.github/workflows/pre-commit-detect-outdated.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/svneverever-1.7.2/.github/workflows/pre-commit-detect-outdated.yml 2023-06-19 12:38:33.000000000 +0200 @@ -0,0 +1,62 @@ +# Copyright (c) 2022 Sebastian Pipping <sebast...@pipping.org> +# Licensed under GNU General Public License version 3.0 or later + +name: Detect outdated pre-commit hooks + +on: + schedule: + - cron: '0 16 * * 5' # Every Friday 4pm + +# NOTE: This will drop all permissions from GITHUB_TOKEN except metadata read, +# and then (re)add the ones listed below: +permissions: + contents: write + pull-requests: write + +jobs: + pre_commit_detect_outdated: + name: Detect outdated pre-commit hooks + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + + - name: Set up Python 3.10 + uses: actions/setup-python@bd6b4b6205c4dbad673328db7b31b7fab9e241c0 # v4.6.1 + with: + python-version: '3.10' + + - name: Install pre-commit + run: |- + pip install \ + --disable-pip-version-check \ + --no-warn-script-location \ + --user \ + pre-commit + echo "PATH=${HOME}/.local/bin:${PATH}" >> "${GITHUB_ENV}" + + - name: Check for outdated hooks + run: |- + pre-commit autoupdate + git diff -- .pre-commit-config.yaml + + - name: Create pull request from changes (if any) + id: create-pull-request + uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666 # v5.0.1 + with: + author: 'pre-commit <pre-commit@tools.invalid>' + base: master + body: |- + For your consideration. + + :warning: Please **CLOSE AND RE-OPEN** this pull request so that [further workflow runs get triggered](https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#triggering-further-workflow-runs) for this pull request. + branch: precommit-autoupdate + commit-message: "pre-commit: Autoupdate" + delete-branch: true + draft: true + labels: enhancement + title: "pre-commit: Autoupdate" + + - name: Log pull request URL + if: "${{ steps.create-pull-request.outputs.pull-request-url }}" + run: | + echo "Pull request URL is: ${{ steps.create-pull-request.outputs.pull-request-url }}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svneverever-1.7.1/.github/workflows/pre-commit-run.yml new/svneverever-1.7.2/.github/workflows/pre-commit-run.yml --- old/svneverever-1.7.1/.github/workflows/pre-commit-run.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/svneverever-1.7.2/.github/workflows/pre-commit-run.yml 2023-06-19 12:38:33.000000000 +0200 @@ -0,0 +1,37 @@ +# Copyright (c) 2022 Sebastian Pipping <sebast...@pipping.org> +# Licensed under GNU General Public License version 3.0 or later + +name: Run pre-commit on all files + +on: +- pull_request +- push + +jobs: + run_pre_commit: + name: Run pre-commit on all files + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + + - name: Set up Python 3.9 + uses: actions/setup-python@bd6b4b6205c4dbad673328db7b31b7fab9e241c0 # v4.6.1 + with: + python-version: 3.9 + + - name: Install pre-commit + run: |- + pip install \ + --disable-pip-version-check \ + --user \ + --no-warn-script-location \ + pre-commit + echo "PATH=${HOME}/.local/bin:${PATH}" >> "${GITHUB_ENV}" + + - name: Install pre-commit hooks + run: |- + pre-commit install --install-hooks + + - name: Run pre-commit on all files + run: |- + pre-commit run --all-files diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svneverever-1.7.1/.github/workflows/run-tests.yml new/svneverever-1.7.2/.github/workflows/run-tests.yml --- old/svneverever-1.7.1/.github/workflows/run-tests.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/svneverever-1.7.2/.github/workflows/run-tests.yml 2023-06-19 12:38:33.000000000 +0200 @@ -0,0 +1,45 @@ +# Copyright (c) 2023 Sebastian Pipping <sebast...@pipping.org> +# Licensed under GNU General Public License version 3.0 or later + +name: Run tests + +# Drop permissions to minimum for security +permissions: + contents: read + +on: + pull_request: + push: + schedule: + - cron: '0 16 * * 5' # Every Friday 4pm + workflow_dispatch: + +jobs: + run_tests: + name: Run tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + + - name: Install runtime dependencies + run: |- + sudo apt-get update + sudo apt-get install --yes --no-install-recommends -V \ + python3-svn + + - name: Install svneverever + run: |- + pip3 install \ + --disable-pip-version-check \ + --user \ + --no-warn-script-location \ + -e \ + . + echo "PATH=${HOME}/.local/bin:${PATH}" >> "${GITHUB_ENV}" + + - name: Smoke test + run: |- + set -x + svnadmin create bs2b_svn_store + time sh -c 'svnrdump dump svn://svn.code.sf.net/p/bs2b/code/ | svnadmin load bs2b_svn_store/' + svneverever bs2b_svn_store/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svneverever-1.7.1/.pre-commit-config.yaml new/svneverever-1.7.2/.pre-commit-config.yaml --- old/svneverever-1.7.1/.pre-commit-config.yaml 2021-07-09 00:50:45.000000000 +0200 +++ new/svneverever-1.7.2/.pre-commit-config.yaml 2023-06-19 12:38:33.000000000 +0200 @@ -1,19 +1,25 @@ repos: + - repo: https://github.com/PyCQA/flake8 + rev: 6.0.0 + hooks: + - id: flake8 + - repo: https://github.com/asottile/pyupgrade - rev: v2.19.4 + rev: v3.6.0 hooks: - id: pyupgrade + args: ['--py37-plus'] - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v2.5.0 + rev: v4.4.0 hooks: - id: check-merge-conflict + - id: check-yaml - id: end-of-file-fixer - - id: flake8 - id: trailing-whitespace - - repo: https://github.com/pre-commit/mirrors-isort - rev: v5.9.1 + - repo: https://github.com/pycqa/isort + rev: 5.12.0 hooks: - id: isort exclude: '^setup\.py$' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svneverever-1.7.1/README.md new/svneverever-1.7.2/README.md --- old/svneverever-1.7.1/README.md 2021-07-09 00:50:45.000000000 +0200 +++ new/svneverever-1.7.2/README.md 2023-06-19 12:38:33.000000000 +0200 @@ -1,3 +1,6 @@ +[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit) + + # About **svneverever** helps you inspect the structure of a SVN repository and the changes made to it over time. Its most common use is in combination with [svn-all-fast-export](https://github.com/svn-all-fast-export/svn2git) (or "KDE's svn2git" if you wish). @@ -5,7 +8,7 @@ # Installation ## Dependencies -**svneverever** requires Python 3.6 or higher +**svneverever** requires Python 3.7 or higher and [PySVN](https://pysvn.sourceforge.io/) (the one on SourceForge, not the one on PyPI). If you want to install **svneverever** with **pip** you need a few additional packages. @@ -39,9 +42,25 @@ # Usage **svneverever** needs the "server-side" of the repository with full history. There are two ways to obtain this. Let's take the SVN history of [headphone effect library bs2b](http://bs2b.sourceforge.net/) as an example. -The first way is to directly point **svneverever** to the server `svneverever svn://svn.code.sf.net/p/bs2b/code/`. However this is slow and it puts a lot of stress on the server. +The first way is to directly point **svneverever** to the server `svneverever svn://svn.code.sf.net/p/bs2b/code/`. However this is slow and it puts a lot of stress on the server, and will be little fun to run multiple times. + +The second and recommended method is first downloading the history with +`svnrdump dump` (that comes with Subversion >=1.7) or [`rsvndump`](https://github.com/jgehring/rsvndump) (with a slightly [different feature set](https://rsvndump.sourceforge.io/) and supporting older versions of Subversion). +For this method we first need to use `svnadmin` to create an empty repository and then load the output of svnrdump/rsvndump into it. This can be done in the following way: + +## With `svnrdump dump` + +```console +# svnadmin create bs2b_svn_store + +# time sh -c 'svnrdump dump svn://svn.code.sf.net/p/bs2b/code/ | svnadmin load bs2b_svn_store/' +[..] +real 0m3.008s +user 0m0.309s +sys 0m0.235s +``` -The second, and recommended, method is first downloading the history with **rsvndump**. For this method we first need to use `svnadmin` to create an empty repository and then load the output of **rsvndump** into it. This can be done in the following way: +## With `rsvndump` ```console # svnadmin create bs2b_svn_store diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svneverever-1.7.1/setup.py new/svneverever-1.7.2/setup.py --- old/svneverever-1.7.1/setup.py 2021-07-09 00:50:45.000000000 +0200 +++ new/svneverever-1.7.2/setup.py 2023-06-19 12:38:33.000000000 +0200 @@ -24,7 +24,7 @@ 'svneverever = svneverever.__main__:main', ], }, - python_requires='>=3.6', + python_requires='>=3.7', setup_requires=[ 'setuptools>=38.6.0', # for long_description_content_type ], @@ -42,7 +42,6 @@ 'Natural Language :: English', 'Programming Language :: Python', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3 :: Only', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svneverever-1.7.1/svneverever/__main__.py new/svneverever-1.7.2/svneverever/__main__.py --- old/svneverever-1.7.1/svneverever/__main__.py 2021-07-09 00:50:45.000000000 +0200 +++ new/svneverever-1.7.2/svneverever/__main__.py 2023-06-19 12:38:33.000000000 +0200 @@ -1,11 +1,9 @@ #!/usr/bin/env python3 -# -*- coding: utf-8 -*- # Copyright (C) 2010-2021 Sebastian Pipping <sebast...@pipping.org> # Copyright (C) 2011 Wouter Haffmans <wou...@boxplosive.nl> # Copyright (C) 2019 Kevin Lane <kevin.lan...@outlook.com> # Licensed under GPL v3 or later # -from __future__ import print_function import argparse import getpass @@ -66,13 +64,6 @@ return _OsTerminalSize(columns=80, lines=24) -def _for_print(text): - if sys.version_info >= (3, ): - return text - - return text.encode(sys.stdout.encoding or 'UTF-8', 'replace') - - def dump_tree(t, revision_digits, latest_revision, config, level=0, branch_level=-3, tag_level=-3, parent_dir=''): def indent_print(line_start, text): @@ -81,9 +72,9 @@ else: level_text = ' '*(4*level) if config.show_numbers: - print('{} {}{}'.format(line_start, level_text, _for_print(text))) + print(f'{line_start} {level_text}{text}') else: - print('{}{}'.format(level_text, _for_print(text))) + print(f'{level_text}{text}') items = ((k, v) for k, v in t.items() if k) @@ -116,7 +107,7 @@ tl = level dump_tree(children, revision_digits, latest_revision, config, level=level + 1, branch_level=bl, tag_level=tl, - parent_dir='{}/{}'.format(parent_dir, k)) + parent_dir=f'{parent_dir}/{k}') def dump_nick_stats(nick_stats, revision_digits, config): @@ -127,11 +118,11 @@ for nick, (first_commit_rev, last_commit_rev, commit_count) \ in sorted(nick_stats.items()): print(format % (commit_count, first_commit_rev, last_commit_rev, - _for_print(nick))) + nick)) else: for nick, (first_commit_rev, last_commit_rev, commit_count) \ in sorted(nick_stats.items()): - print(_for_print(nick)) + print(nick) def ensure_uri(text): @@ -148,7 +139,7 @@ def digit_count(n): if n == 0: return 1 - assert(n > 0) + assert n > 0 return int(math.floor(math.log10(n)) + 1) @@ -163,9 +154,9 @@ def make_progress_bar(percent, width, seconds_taken, seconds_expected): other_len = (6 + 1) + 2 + (1 + 8 + 1 + 9 + 1) + 3 + 1 - assert(width > 0) + assert width > 0 bar_content_len = width - other_len - assert(bar_content_len >= 0) + assert bar_content_len >= 0 fill_len = int(percent * bar_content_len / 100) open_len = bar_content_len - fill_len seconds_remaining = seconds_expected - seconds_taken @@ -258,7 +249,7 @@ try: if username: - print('Username: {} (as requested by SVN)'.format(username), + print(f'Username: {username} (as requested by SVN)', file=sys.stderr) else: print('Username: ', end='', file=sys.stderr) @@ -367,13 +358,23 @@ indicate_progress(rev) continue - summary = client.diff_summarize( - args.repo_uri, - revision1=pysvn.Revision(pysvn.opt_revision_kind.number, rev - 1), - url_or_path2=args.repo_uri, - revision2=pysvn.Revision(pysvn.opt_revision_kind.number, rev), - recurse=True, - ignore_ancestry=True) + try: + summary = client.diff_summarize( + args.repo_uri, + revision1=pysvn.Revision(pysvn.opt_revision_kind.number, + rev - 1), + url_or_path2=args.repo_uri, + revision2=pysvn.Revision(pysvn.opt_revision_kind.number, + rev), + recurse=True, + ignore_ancestry=True) + except pysvn.ClientError as e: + if not (rev == 1 and 'not found in the repository' in str(e)): + raise + print('ERROR: Path does not exist in the repository at revision 1' + '. Please use svneverever with the root of the repository.', + file=sys.stderr) + sys.exit(1) def is_directory_addition(summary_entry): return (summary_entry.summarize_kind diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svneverever-1.7.1/svneverever/version.py new/svneverever-1.7.2/svneverever/version.py --- old/svneverever-1.7.1/svneverever/version.py 2021-07-09 00:50:45.000000000 +0200 +++ new/svneverever-1.7.2/svneverever/version.py 2023-06-19 12:38:33.000000000 +0200 @@ -1,5 +1,5 @@ # Copyright (C) 2010-2021 Sebastian Pipping <sebast...@pipping.org> # Licensed under GPL v3 or later -VERSION = (1, 7, 1) +VERSION = (1, 7, 2) VERSION_STR = '.'.join(str(e) for e in VERSION)