Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package git-repo for openSUSE:Factory checked in at 2026-02-06 19:09:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/git-repo (Old) and /work/SRC/openSUSE:Factory/.git-repo.new.1670 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "git-repo" Fri Feb 6 19:09:27 2026 rev:14 rq:1331486 version:2.61.1 Changes: -------- --- /work/SRC/openSUSE:Factory/git-repo/git-repo.changes 2025-12-17 17:38:32.529130166 +0100 +++ /work/SRC/openSUSE:Factory/.git-repo.new.1670/git-repo.changes 2026-02-06 19:14:59.891836859 +0100 @@ -1,0 +2,15 @@ +Thu Jan 29 21:10:29 UTC 2026 - BenoƮt Monin <[email protected]> + +- Update to version 2.61.1: + * Revert "init: change --manifest-depth default to 1" + * manifest_xml: prevent extend-project from inheriting local groups + * CONTRIBUTING: fix HTTP password URL + * project: disable auto-gc for depth=1 in git config + * run_tests/release: require Python 3.9+ + * tests: drop tox support + * github: add black check action + * tests: skip AF_UNIX tests when unavailable + * check-metadata: skip files that do not exist + * init: change --manifest-depth default to 1 + +------------------------------------------------------------------- Old: ---- git-repo-2.60.1.tar.xz New: ---- git-repo-2.61.1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ git-repo.spec ++++++ --- /var/tmp/diff_new_pack.0s32Dm/_old 2026-02-06 19:15:00.675869889 +0100 +++ /var/tmp/diff_new_pack.0s32Dm/_new 2026-02-06 19:15:00.699870900 +0100 @@ -17,7 +17,7 @@ Name: git-repo -Version: 2.60.1 +Version: 2.61.1 Release: 0 Summary: The Multiple Git Repository Tool License: Apache-2.0 ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.0s32Dm/_old 2026-02-06 19:15:00.795874944 +0100 +++ /var/tmp/diff_new_pack.0s32Dm/_new 2026-02-06 19:15:00.803875281 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://gerrit.googlesource.com/git-repo</param> - <param name="changesrevision">871e4c7ed153682a77de44e300b5f5461eb08538</param></service></servicedata> + <param name="changesrevision">5d88972390295e229ee940992cb33ce8cfd39cd5</param></service></servicedata> (No newline at EOF) ++++++ git-repo-2.60.1.tar.xz -> git-repo-2.61.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/.github/workflows/black.yml new/git-repo-2.61.1/.github/workflows/black.yml --- old/git-repo-2.60.1/.github/workflows/black.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/git-repo-2.61.1/.github/workflows/black.yml 2026-01-21 21:32:59.000000000 +0100 @@ -0,0 +1,16 @@ +# GitHub actions workflow. +# https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions +# https://black.readthedocs.io/en/stable/integrations/github_actions.html + +name: Format + +on: + push: + branches: [main] + +jobs: + format: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - uses: psf/black@stable diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/.github/workflows/test-ci.yml new/git-repo-2.61.1/.github/workflows/test-ci.yml --- old/git-repo-2.60.1/.github/workflows/test-ci.yml 2025-12-16 00:24:45.000000000 +0100 +++ new/git-repo-2.61.1/.github/workflows/test-ci.yml 2026-01-21 21:32:59.000000000 +0100 @@ -27,6 +27,6 @@ - name: Install dependencies run: | python -m pip install --upgrade pip - python -m pip install tox tox-gh-actions - - name: Test with tox - run: tox + python -m pip install pytest + - name: Run tests + run: python -m pytest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/CONTRIBUTING.md new/git-repo-2.61.1/CONTRIBUTING.md --- old/git-repo-2.60.1/CONTRIBUTING.md 2025-12-16 00:24:45.000000000 +0100 +++ new/git-repo-2.61.1/CONTRIBUTING.md 2026-01-21 21:32:59.000000000 +0100 @@ -43,17 +43,12 @@ Lint any changes by running: ```sh -$ tox -e lint -- file.py +$ flake8 ``` And format with: ```sh -$ tox -e format -- file.py -``` - -Or format everything: -```sh -$ tox -e format +$ black file.py ``` Repo uses [black](https://black.readthedocs.io/) with line length of 80 as its @@ -73,15 +68,11 @@ [PEP 8]: https://www.python.org/dev/peps/pep-0008/ [flake8 documentation]: https://flake8.pycqa.org/en/3.1.1/user/ignoring-errors.html#in-line-ignoring-errors -## Running tests -We use [pytest](https://pytest.org/) and [tox](https://tox.readthedocs.io/) for -running tests. You should make sure to install those first. +## Running tests -To run the full suite against all supported Python versions, simply execute: -```sh -$ tox -p auto -``` +We use [pytest](https://pytest.org/) for running tests. You should make sure to +install that first. We have [`./run_tests`](./run_tests) which is a simple wrapper around `pytest`: ```sh @@ -143,7 +134,7 @@ Ensure you have obtained an HTTP password to authenticate: - https://gerrit-review.googlesource.com/new-password + https://www.googlesource.com/new-password Ensure that you have the local commit hook installed to automatically add a ChangeId to your commits: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/git_config.py new/git-repo-2.61.1/git_config.py --- old/git-repo-2.60.1/git_config.py 2025-12-16 00:24:45.000000000 +0100 +++ new/git-repo-2.61.1/git_config.py 2026-01-21 21:32:59.000000000 +0100 @@ -222,6 +222,12 @@ value = "true" if value else "false" self.SetString(name, value) + def SetInt(self, name: str, value: int) -> None: + """Set an integer value for a key.""" + if value is not None: + value = str(value) + self.SetString(name, value) + def GetString(self, name: str, all_keys: bool = False) -> Union[str, None]: """Get the first value for a key, or None if it is not defined. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/manifest_xml.py new/git-repo-2.61.1/manifest_xml.py --- old/git-repo-2.60.1/manifest_xml.py 2025-12-16 00:24:45.000000000 +0100 +++ new/git-repo-2.61.1/manifest_xml.py 2026-01-21 21:32:59.000000000 +0100 @@ -1487,6 +1487,14 @@ continue if groups: p.groups |= groups + # Drop local groups so we don't mistakenly omit this + # project from the superproject override manifest. + p.groups = { + g + for g in p.groups + if not g.startswith(LOCAL_MANIFEST_GROUP_PREFIX) + } + if revision: if base_revision: if p.revisionExpr != base_revision: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/project.py new/git-repo-2.61.1/project.py --- old/git-repo-2.60.1/project.py 2025-12-16 00:24:45.000000000 +0100 +++ new/git-repo-2.61.1/project.py 2026-01-21 21:32:59.000000000 +0100 @@ -3316,6 +3316,15 @@ remote.ResetFetch(mirror=True) remote.Save() + # Disable auto-gc for depth=1 to prevent hangs during lazy fetches + # inside git checkout for partial clones. + effective_depth = ( + self.clone_depth or self.manifest.manifestProject.depth + ) + if effective_depth == 1: + self.config.SetBoolean("maintenance.auto", False) + self.config.SetInt("gc.auto", 0) + def _InitMRef(self): """Initialize the pseudo m/<manifest branch> ref.""" if self.manifest.branch: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/pyproject.toml new/git-repo-2.61.1/pyproject.toml --- old/git-repo-2.60.1/pyproject.toml 2025-12-16 00:24:45.000000000 +0100 +++ new/git-repo-2.61.1/pyproject.toml 2026-01-21 21:32:59.000000000 +0100 @@ -14,7 +14,6 @@ [tool.black] line-length = 80 -# NB: Keep in sync with tox.ini. target-version = ['py36', 'py37', 'py38', 'py39', 'py310', 'py311'] #, 'py312' [tool.pytest.ini_options] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/release/check-metadata.py new/git-repo-2.61.1/release/check-metadata.py --- old/git-repo-2.60.1/release/check-metadata.py 2025-12-16 00:24:45.000000000 +0100 +++ new/git-repo-2.61.1/release/check-metadata.py 2026-01-21 21:32:59.000000000 +0100 @@ -90,7 +90,10 @@ def check_path(opts: argparse.Namespace, path: Path) -> bool: """Check a single path.""" - data = path.read_text(encoding="utf-8") + try: + data = path.read_text(encoding="utf-8") + except FileNotFoundError: + return True lines = data.splitlines() # NB: Use list comprehension and not a generator so we run all the checks. return all( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/release/sign-launcher.py new/git-repo-2.61.1/release/sign-launcher.py --- old/git-repo-2.60.1/release/sign-launcher.py 2025-12-16 00:24:45.000000000 +0100 +++ new/git-repo-2.61.1/release/sign-launcher.py 2026-01-21 21:32:59.000000000 +0100 @@ -27,6 +27,9 @@ import util +assert sys.version_info >= (3, 9), "Release framework requires Python 3.9+" + + def sign(opts): """Sign the launcher!""" output = "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/release/sign-tag.py new/git-repo-2.61.1/release/sign-tag.py --- old/git-repo-2.60.1/release/sign-tag.py 2025-12-16 00:24:45.000000000 +0100 +++ new/git-repo-2.61.1/release/sign-tag.py 2026-01-21 21:32:59.000000000 +0100 @@ -30,6 +30,9 @@ import util +assert sys.version_info >= (3, 9), "Release framework requires Python 3.9+" + + # We currently sign with the old DSA key as it's been around the longest. # We should transition to RSA by Jun 2020, and ECC by Jun 2021. KEYID = util.KEYID_DSA diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/release/update-hooks new/git-repo-2.61.1/release/update-hooks --- old/git-repo-2.60.1/release/update-hooks 2025-12-16 00:24:45.000000000 +0100 +++ new/git-repo-2.61.1/release/update-hooks 2026-01-21 21:32:59.000000000 +0100 @@ -24,7 +24,7 @@ import urllib.request -assert sys.version_info >= (3, 8), "Python 3.8+ required" +assert sys.version_info >= (3, 9), "Release framework requires Python 3.9+" TOPDIR = Path(__file__).resolve().parent.parent diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/release/update_manpages.py new/git-repo-2.61.1/release/update_manpages.py --- old/git-repo-2.60.1/release/update_manpages.py 2025-12-16 00:24:45.000000000 +0100 +++ new/git-repo-2.61.1/release/update_manpages.py 2026-01-21 21:32:59.000000000 +0100 @@ -30,6 +30,10 @@ from typing import List +# NB: This script is currently imported by tests/ to unittest some logic. +assert sys.version_info >= (3, 6), "Python 3.6+ required" + + THIS_FILE = Path(__file__).resolve() TOPDIR = THIS_FILE.parent.parent MANDIR = TOPDIR.joinpath("man") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/run_tests new/git-repo-2.61.1/run_tests --- old/git-repo-2.60.1/run_tests 2025-12-16 00:24:45.000000000 +0100 +++ new/git-repo-2.61.1/run_tests 2026-01-21 21:32:59.000000000 +0100 @@ -21,7 +21,11 @@ import shutil import subprocess import sys -from typing import List + + +# NB: While tests/* support Python >=3.6 to match requirements.json for `repo`, +# the higher level runner logic does not need to be held back. +assert sys.version_info >= (3, 9), "Test/release framework requires Python 3.9+" ROOT_DIR = os.path.dirname(os.path.realpath(__file__)) @@ -38,7 +42,7 @@ return os.getenv("LUCI_CQ") == "yes" -def run_pytest(argv: List[str]) -> int: +def run_pytest(argv: list[str]) -> int: """Returns the exit code from pytest.""" if is_ci(): argv = ["-m", "not skip_cq"] + argv @@ -51,7 +55,7 @@ ).returncode -def run_pytest_py38(argv: List[str]) -> int: +def run_pytest_py38(argv: list[str]) -> int: """Returns the exit code from pytest under Python 3.8.""" if is_ci(): argv = ["-m", "not skip_cq"] + argv diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/tests/test_git_config.py new/git-repo-2.61.1/tests/test_git_config.py --- old/git-repo-2.60.1/tests/test_git_config.py 2025-12-16 00:24:45.000000000 +0100 +++ new/git-repo-2.61.1/tests/test_git_config.py 2026-01-21 21:32:59.000000000 +0100 @@ -166,6 +166,30 @@ config = self.get_config() self.assertIsNone(config.GetBoolean("foo.bar")) + def test_SetInt(self): + """Test SetInt behavior.""" + # Set a value. + self.assertIsNone(self.config.GetInt("foo.bar")) + self.config.SetInt("foo.bar", 10) + self.assertEqual(10, self.config.GetInt("foo.bar")) + + # Make sure the value was actually written out. + config = self.get_config() + self.assertEqual(10, config.GetInt("foo.bar")) + self.assertEqual("10", config.GetString("foo.bar")) + + # Update the value. + self.config.SetInt("foo.bar", 20) + self.assertEqual(20, self.config.GetInt("foo.bar")) + config = self.get_config() + self.assertEqual(20, config.GetInt("foo.bar")) + + # Delete the value. + self.config.SetInt("foo.bar", None) + self.assertIsNone(self.config.GetInt("foo.bar")) + config = self.get_config() + self.assertIsNone(config.GetInt("foo.bar")) + def test_GetSyncAnalysisStateData(self): """Test config entries with a sync state analysis data.""" superproject_logging_data = {} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/tests/test_git_trace2_event_log.py new/git-repo-2.61.1/tests/test_git_trace2_event_log.py --- old/git-repo-2.60.1/tests/test_git_trace2_event_log.py 2025-12-16 00:24:45.000000000 +0100 +++ new/git-repo-2.61.1/tests/test_git_trace2_event_log.py 2026-01-21 21:32:59.000000000 +0100 @@ -368,6 +368,7 @@ with self.assertRaises(TypeError): self._event_log_module.Write(path=1234) + @unittest.skipIf(not hasattr(socket, "AF_UNIX"), "Requires AF_UNIX sockets") def test_write_socket(self): """Test Write() with Unix domain socket for |path| and validate received traces.""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/tests/test_manifest_xml.py new/git-repo-2.61.1/tests/test_manifest_xml.py --- old/git-repo-2.60.1/tests/test_manifest_xml.py 2025-12-16 00:24:45.000000000 +0100 +++ new/git-repo-2.61.1/tests/test_manifest_xml.py 2026-01-21 21:32:59.000000000 +0100 @@ -549,6 +549,33 @@ # Check project has set group via extend-project element. self.assertIn("eg1", proj.groups) + def test_extend_project_does_not_inherit_local_groups(self): + """Check that extend-project does not inherit local groups.""" + root_m = self.manifest_dir / "root.xml" + root_m.write_text( + """ +<manifest> + <remote name="test-remote" fetch="http://localhost" /> + <default remote="test-remote" revision="refs/heads/main" /> + <project name="project1" path="project1" /> + <include name="man1.xml" groups="g1,local:g2" /> +</manifest> +""" + ) + (self.manifest_dir / "man1.xml").write_text( + """ +<manifest> + <extend-project name="project1" groups="g3" /> +</manifest> +""" + ) + include_m = manifest_xml.XmlManifest(str(self.repodir), str(root_m)) + proj = include_m.projects[0] + + self.assertIn("g1", proj.groups) + self.assertNotIn("local:g2", proj.groups) + self.assertIn("g3", proj.groups) + def test_allow_bad_name_from_user(self): """Check handling of bad name attribute from the user's input.""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-repo-2.60.1/tox.ini new/git-repo-2.61.1/tox.ini --- old/git-repo-2.60.1/tox.ini 2025-12-16 00:24:45.000000000 +0100 +++ new/git-repo-2.61.1/tox.ini 1970-01-01 01:00:00.000000000 +0100 @@ -1,63 +0,0 @@ -# Copyright (C) 2019 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# https://tox.readthedocs.io/ - -[tox] -envlist = lint, py36, py37, py38, py39, py310, py311, py312 -requires = virtualenv<20.22.0 - -[gh-actions] -python = - 3.6: py36 - 3.7: py37 - 3.8: py38 - 3.9: py39 - 3.10: py310 - 3.11: py311 - 3.12: py312 - -[testenv] -deps = - -c constraints.txt - black - flake8 - isort - pytest - pytest-timeout -commands = {envpython} run_tests {posargs} -setenv = - GIT_AUTHOR_NAME = Repo test author - GIT_COMMITTER_NAME = Repo test committer - EMAIL = [email protected] - -[testenv:lint] -skip_install = true -deps = - -c constraints.txt - black - flake8 -commands = - black --check {posargs:. repo run_tests release/update-hooks release/update-manpages} - flake8 - -[testenv:format] -skip_install = true -deps = - -c constraints.txt - black - flake8 -commands = - black {posargs:. repo run_tests release/update-hooks release/update-manpages} - flake8 ++++++ git-repo.obsinfo ++++++ --- /var/tmp/diff_new_pack.0s32Dm/_old 2026-02-06 19:15:01.295896009 +0100 +++ /var/tmp/diff_new_pack.0s32Dm/_new 2026-02-06 19:15:01.315896852 +0100 @@ -1,5 +1,5 @@ name: git-repo -version: 2.60.1 -mtime: 1765841085 -commit: 871e4c7ed153682a77de44e300b5f5461eb08538 +version: 2.61.1 +mtime: 1769027579 +commit: 5d88972390295e229ee940992cb33ce8cfd39cd5
