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
 

Reply via email to