Repository: VirtusLab/git-machete
Pull request #1424 (2025-04-15 09:25:52)

Release v3.34.1


Patch:
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 7164185..2e40d3e 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -298,6 +298,14 @@ only_master: &only_master
     branches:
       only: "master"
 
+only_special_branches: &only_special_branches
+  filters:
+    branches:
+      only:
+        - "/.*(ci|dependabot.pip|deploy|dry.run|hotfix|publish|release|windows).*/"
+        - "develop"
+        - "master"
+
 workflows:
   version: 2
   build:
@@ -312,19 +320,15 @@ workflows:
       - python 3_12 git 2_46_1
       - python 3_13 git 2_47_0
       - macos tests
-      - windows tests
+      - windows tests:
+          # Windows tests take a relatively long time on critical path,
+          # and fail very rarely when other tests don't fail
+          <<: *only_special_branches
       - coverage upload:
           requires:
             *test_jobs
       - dry run releases:
-          filters:
-            branches:
-              only:
-                - "/.*(ci|deploy|dry-run|publish|release).*/"
-                - "/dependabot.pip.*/"
-                - "develop"
-                - "/hotfix.*/"
-                - "master"
+          <<: *only_special_branches
           requires:
             *test_jobs
 
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index 4c86b09..24d116c 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -1,5 +1,9 @@
 # Release notes
 
+## New in git-machete 3.34.1
+
+- fixed: `yq` answer to retargeting a PR/MR in `traverse` was treated just as `y`/`yes` (no quitting)
+
 ## New in git-machete 3.34.0
 
 - added: new `full-no-branches` and `up-only-no-branches` values to `machete.github.prDescriptionIntroStyle` and `machete.gitlab.mrDescriptionIntroStyle` git config keys
diff --git a/ci/checks/enforce-yq-check-for-each-y-yes-yq-check.sh b/ci/checks/enforce-yq-check-for-each-y-yes-yq-check.sh
new file mode 100755
index 0000000..fb0c2c3
--- /dev/null
+++ b/ci/checks/enforce-yq-check-for-each-y-yes-yq-check.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+
+set -e -o pipefail -u
+
+# xargs for stripping the leading spaces
+y_yes_yq_checks=$(git grep 'if ans in.*yq' '*.py' | wc -l | xargs)
+yq_checks=$(git grep 'if ans ==.*yq' '*.py' | wc -l | xargs)
+
+if [[ $yq_checks != "$y_yes_yq_checks" ]]; then
+  echo "In Python code, the number of checks for 'y', 'yes', 'yq' answers on interactive input ($y_yes_yq_checks)"
+  echo "is NOT equal to the number of narrower checks for 'yq' answer ($yq_checks)."
+  echo
+  echo "Does it mean that 'yq' is treated just as 'y' in some cases (without quitting)?"
+  echo "See https://github.com/VirtusLab/git-machete/pull/1421 for a sample fix."
+  exit 1
+fi
diff --git a/ci/checks/run-all-checks.sh b/ci/checks/run-all-checks.sh
index d2fb00a..25ba6da 100755
--- a/ci/checks/run-all-checks.sh
+++ b/ci/checks/run-all-checks.sh
@@ -25,6 +25,7 @@ enforce-mocking-only-whitelisted-methods.sh
 enforce-newline-at-eof.sh
 enforce-release-notes-up-to-date.sh
 enforce-shell-scripts-pass-shellcheck.sh
+enforce-yq-check-for-each-y-yes-yq-check.sh
 prohibit-bash-usages-from-python.sh
 prohibit-current-date-in-tests.sh
 prohibit-deploy-step-in-circleci.sh
diff --git a/ci/tox/build-context/requirements.txt b/ci/tox/build-context/requirements.txt
index e6a1e58..a037dad 100644
--- a/ci/tox/build-context/requirements.txt
+++ b/ci/tox/build-context/requirements.txt
@@ -5,8 +5,8 @@ build==1.2.2.post1; python_version >= '3.8'
 setuptools==59.6.0; python_version <= '3.6'
 setuptools==68.0.0; python_version >= '3.7' and python_version < '3.8'
 setuptools==75.3.0; python_version >= '3.8' and python_version < '3.9'
-setuptools==77.0.3; python_version >= '3.9'
+setuptools==78.1.0; python_version >= '3.9'
 
 tox==3.28.0; python_version <= '3.6'
 tox==4.8.0; python_version >= '3.7' and python_version < '3.8'
-tox==4.24.2; python_version >= '3.8'
+tox==4.25.0; python_version >= '3.8'
diff --git a/docs/man/git-machete.1 b/docs/man/git-machete.1
index 43d7fcb..eff9f8b 100644
--- a/docs/man/git-machete.1
+++ b/docs/man/git-machete.1
@@ -27,9 +27,9 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
 .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
 ..
-.TH "GIT-MACHETE" "1" "Mar 27, 2025" "" "git-machete"
+.TH "GIT-MACHETE" "1" "Apr 14, 2025" "" "git-machete"
 .SH NAME
-git-machete \- git-machete 3.34.0
+git-machete \- git-machete 3.34.1
 .sp
 git machete is a robust tool that \fBsimplifies your git workflows\fP\&.
 .sp
diff --git a/git_machete/__init__.py b/git_machete/__init__.py
index 9a3e995..ec4bd94 100644
--- a/git_machete/__init__.py
+++ b/git_machete/__init__.py
@@ -1,1 +1,1 @@
-__version__ = '3.34.0'
+__version__ = '3.34.1'
diff --git a/git_machete/client.py b/git_machete/client.py
index c179375..2514aa4 100644
--- a/git_machete/client.py
+++ b/git_machete/client.py
@@ -1047,6 +1047,8 @@ class MacheteClient:
                             print(fmt(f'Description of {pr.display_text()} '
                                       f'(<b>{pr.head} {get_right_arrow()} {pr.base}</b>) has been updated'))
 
+                    if ans == 'yq':
+                        return
                 elif ans in ('q', 'quit'):
                     return
 
diff --git a/requirements/coverage.txt b/requirements/coverage.txt
index 3233ca4..e1479f3 100644
--- a/requirements/coverage.txt
+++ b/requirements/coverage.txt
@@ -1,9 +1,9 @@
 coverage==6.2; python_version <= '3.6'
 coverage==7.2.7; python_version >= '3.7' and python_version < '3.8'
 coverage==7.6.1; python_version >= '3.8' and python_version < '3.9'
-coverage==7.7.1; python_version >= '3.9'
+coverage==7.8.0; python_version >= '3.9'
 
 pytest-cov==4.0.0; python_version <= '3.6'
 pytest-cov==4.1.0; python_version >= '3.7' and python_version < '3.8'
 pytest-cov==5.0.0; python_version >= '3.8' and python_version < '3.9'
-pytest-cov==6.0.0; python_version >= '3.9'
+pytest-cov==6.1.1; python_version >= '3.9'
diff --git a/requirements/pep8-check.txt b/requirements/pep8-check.txt
index f920579..85c17ae 100644
--- a/requirements/pep8-check.txt
+++ b/requirements/pep8-check.txt
@@ -1,3 +1,3 @@
-flake8==7.1.2
+flake8==7.2.0
 flake8-unused-arguments==0.0.13
 flake8-use-fstring==1.4
diff --git a/requirements/pypi-publish.txt b/requirements/pypi-publish.txt
index 7dc377b..572e2a5 100644
--- a/requirements/pypi-publish.txt
+++ b/requirements/pypi-publish.txt
@@ -1,4 +1,4 @@
 build==1.2.2.post1
-setuptools==77.0.3
+setuptools==78.1.0
 twine==6.1.0
 wheel==0.45.1
diff --git a/requirements/typos.txt b/requirements/typos.txt
index 0c37b72..82af2d8 100644
--- a/requirements/typos.txt
+++ b/requirements/typos.txt
@@ -1,1 +1,1 @@
-typos==1.30.2
+typos==1.31.1


Test patch:
diff --git a/tests/test_traverse_gitlab.py b/tests/test_traverse_gitlab.py
index 7d42cd0..639eb35 100644
--- a/tests/test_traverse_gitlab.py
+++ b/tests/test_traverse_gitlab.py
@@ -193,8 +193,9 @@ class TestTraverseGitLab(BaseTest):
 
         mr2['target_branch'] = 'develop'
         check_out("build-chain")
+        self.patch_symbol(mocker, 'builtins.input', mock_input_returning("yq"))
         assert_success(
-            ["traverse", "-LWy"],
+            ["traverse", "-LW"],
             """
             Fetching origin...
 
@@ -212,17 +213,6 @@ class TestTraverseGitLab(BaseTest):
                   o-call-ws
 
             Branch build-chain has a different MR target (develop) in GitLab than in machete file (allow-ownership-link).
-            Retargeting MR !2 to allow-ownership-link...
+            Retarget MR !2 to allow-ownership-link? (y, N, q, yq)
             Target branch of MR !2 has been switched to allow-ownership-link
-
-              develop
-              |
-              o-allow-ownership-link
-                |
-                o-build-chain *  MR !2 (some_other_user)
-                  |
-                  o-call-ws
-
-            No successor of build-chain needs to be slid out or synced with upstream branch or remote; nothing left to update
-            Returned to the initial branch build-chain
             """)