Files
torsten 08097c6f4f
Qt6 Migration CI / migrate (push) Has been cancelled
Moves prompts somewhere else
2026-09-04 21:34:36 +02:00

5.0 KiB

Task: Work in this workspace with multiple Git repositories. Before making any changes, determine the correct target repository for each file based strictly on its path, then perform changes, validation, and commits only in the matching repository.

Repository layout detected under ./:

  • ./.git
  • ./qt-migration-legatus/.git
  • ./qt-migration-legatus/qt5-before/qt5-legatus-legacy/.git
  • ./jenkins-ci-rme/.git
  • ./rpmbuild/.git

Critical constraint: There are multiple Git repositories in this workspace. You must first determine for each planned change which repository root it belongs to, based strictly on the file path. Each change must be made and committed in the matching Git repository only.

Repository mapping in this workspace:

  • files under ./qt-migration-legatus/ -> commit only in ./qt-migration-legatus
  • files under ./jenkins-ci-rme/ -> commit only in ./jenkins-ci-rme
  • files under ./rpmbuild/ -> commit only in ./rpmbuild
  • files at workspace root ./... not inside one of the sub-repositories -> commit only in ./

Rules derived from this:

  • Never commit a file from one repository into another repository.
  • Never use ./ as the commit target for files that belong to ./qt-migration-legatus, ./qt-migration-legatus/qt5-before/qt5-legatus-legacy/, ./jenkins-ci-rme, or ./rpmbuild.
  • Never use a sub-repository as the commit target for files that belong to workspace root ./.
  • Before changing any file, determine its owning repository from its path and show that mapping explicitly.
  • If a planned change spans multiple repositories, handle each repository separately.
  • Create separate status checks, validation runs, and commits per repository.
  • If repository ownership for any file is ambiguous, stop and report it instead of guessing.

Signed commit requirement:

  • Only signed commits are allowed.
  • Do not create unsigned commits.
  • Before committing in any repository, verify that commit signing is configured and usable for that repository context.
  • Check at minimum:
    • git config --global --list
    • cd <repo> && git config --get commit.gpgsign
    • cd <repo> && git config --get user.signingkey
  • If repository-local signing settings exist, inspect and respect them as well.
  • If signing is required but not configured or not functional, stop and report the exact reason.
  • When committing, create a signed commit only.
  • After committing, show evidence that the created commit is signed by running:
    • cd <repo> && git log -1 --show-signature

Required checks before making any changes:

  1. ssh -T devel
  2. git config --global --list
  3. find . -type d -name .git -prune | sort

Then, for each repository that will actually be modified, run these checks in that repository before making changes:

  1. cd <repo> && pwd
  2. cd <repo> && git rev-parse --is-inside-work-tree
  3. cd <repo> && git rev-parse --show-toplevel
  4. cd <repo> && git remote -v
  5. cd <repo> && git branch --show-current
  6. cd <repo> && git status --short
  7. cd <repo> && git config --get remote.origin.url

Repository-selection procedure:

  • List every file you plan to modify.
  • For each file, map it to exactly one repository root using the path rules above.
  • Group planned changes by repository before making any edits.
  • Show the grouping explicitly before changing files.

Hard rules:

  • Do not guess. Do not silently switch repositories.
  • Do not modify files before their owning repository has been identified and checked.
  • If any repository check fails: stop for that repository and report the exact reason.
  • If a file would be committed from the wrong repository: stop.
  • If git rev-parse --show-toplevel does not match the expected repository root for a file: stop.
  • If there is no sensible remote or no plausible write access for a repository: stop for that repository.
  • Do not combine changes from different repositories into one commit.
  • Do not skip validation for any repository being changed.

Validation:

  • Run all relevant tests for the changes in each affected repository.
  • Run all locally checkable check-in policies for each affected repository.
  • Keep validation scoped to the repository being changed.
  • If tests or policies fail, or cannot be executed, do not commit in that repository.

Automatic commit:

  • If all checks, tests, and check-in policies pass for a repository, commit automatically in that repository.
  • Before committing, show: cd <repo> && git status --short
  • After committing, output:
    • cd <repo> && git rev-parse HEAD
    • current branch
    • remote URL
    • changed files

Output format:

  • Show every global check command with raw output.
  • Show the discovered .git directories.
  • Show the list of planned changed files and the repository mapping for each file.
  • Show all per-repository check commands with raw output.
  • Show all test and policy results per repository.
  • On failure in any repository: stop committing in that repository, do not guess, and report exact reasons.
  • On success: commit separately per repository and print commit hash, branch, remote, and changed files for each commit.