------------------------------------------------------------------- Thu Aug 07 06:55:50 UTC 2025 - Benoît Monin - Update to version 2.57.3: * project: fallback to reading HEAD when rev-parse fails * hooks: verify hooks project has worktree before running * sync: fix connection error on macOS for interleaved sync * project: Fix GetHead to handle detached HEADs * sync: Don't checkout if no worktree * sync: Default to interleaved mode * project: Use git rev-parse to read HEAD * sync: Improve UI and error reporting for interleaved mode * project: Use plumbing commands to manage HEAD * progress: Make end() idempotent * sync: support post-sync hook in * init: Add environment variable for git-lfs ------------------------------------------------------------------- Wed Jun 25 13:01:50 UTC 2025 - Benoît Monin - Update to version 2.56: * sync: Share final error handling logic between sync modes * sync: Share manifest list update logic between sync modes * sync: Share self-update logic between sync modes * sync: clarify job flags when using interleaved * sync: Implement --interleaved sync worker * sync: Add orchestration logic for --interleaved * upload: fix FileNotFoundError when no superproject * sync: Add scaffolding for interleaved sync ------------------------------------------------------------------- Fri Jun 13 17:37:23 UTC 2025 - Benoît Monin - Update to version 2.55.2: * info: fix mismatched format args and wrong symbol name * hooks: add internal check for external hook API * git_superproject: Replace walrus operator * upload: Add rev to rootRepo push option * info: print superproject revision * subcmds: delete redundant dest= settings * upload: Add superproject identifier as push option * manifest: generalize --json as --format= * run_tests: only allow help2man skipping in CI * update-manpages: include in unittests * flake8: Ignore .venv directory * man: regenerate man pages * manifest: Remove redundant re-raise of BaseExceptions * Fallback to full sync when depth enabled fetch of a sha1 fails ------------------------------------------------------------------- Tue May 27 18:54:58 UTC 2025 - Benoît Monin - Update to version 2.54: * project: use --netrc-optional instead of --netrc * launcher: switch command quoting to shlex.quote * sync: Warn about excessive job counts * run_tests: fix running when cwd is not the root * run_tests: enable Python 3.8 CI coverage * Fix EROFS error when root fs is mounted read-only * pager: drop unused global vars * launcher: change RunError to subprocess.CalledProcessError * launcher: change collections.namedtuple to typing.NamedTuple * tox: sync black settings with run_tests * black: update to v25 * run_tests: move test filtering to pytest markers * run_tests: move CQ test skips here * run_tests: run all tests all the time * launcher: change RunResult to subprocess.CompletedProcess * Sync: Fix full submodule sync while shallow specified * sync: Refresh index before updating repo * gc: Add tags to remote pack list * Activate submodules * Use 'gitfile' in submodule checkouts * Update internal filesystem layout for submodules * Revert "sync: skip network half on repo upgrade" * docs: smart-sync: split out & expand details * run_tests: update to python 3.11 & pytest 8.3.4 * git_config: prefer XDG config location * sync: Recover from errors during read-tree * gc: Add repack option * gc: extract deletion from Execute method * sync: Handle KeyboardInterrupt during checkout * sync: skip network half on repo upgrade * gc: Introduce new command to remove old projects * sync: Delete symlinks relative to client topdir * Add smoke test for subcmd forall * Remove gitc support from repo * branches: Escape percent signs in branch names * sync: Do not fail to sync a manifest with no projects * Fix event log command event hierarchy. * Make repo installation work without .git * sync: fix connection error on macOS * upload: Return correct tuple values in _ProcessResults * worktree: Do not try to fix relative paths * forall: Fix returning results early * Use full name of the revision when checking dest-branch * Add REPO_SKIP_SELF_UPDATE check in sync * manifest: add optional base check on remove and extend * [event_log] Stop leaking semaphore resources * progress: always show done message * subcmds: reduce multiprocessing serialization overhead * sync: reduce multiprocessing serialization overhead * Fix incremental syncs for prjs with submodules * sync: Always use WORKER_BATCH_SIZE * project: Handle git sso auth failures as repo exit * superproject: Remove notice about beta * project: run fetch --refetch on unable to not parse commit * Disable git terminal prompt during fetch/clone * init: add --manifest-upstream-branch * man: regenerate man pages * project: Copy and link files even with local branches * sync: include TARGET_RELEASE when constructing smart sync target. * color: fix have_fg not re assign to true * tox.ini: Make the lint and format environments run black for all code * tox.ini, constraints.txt: Lock the version of black to <24 * project: run fetch --refetch onacould not parse commit * Add a `--rebase` option to sync command * sync: Fix git command for aborting rebase being called incorrectly. * project: ignore more curl failure modes * logging: Fix log formatting with colored output * upload: add a --topic option for setting topic explicitly * sync: Abort rebase in progress if force-checkout is set * ssh: Set git protocol version 2 on SSH ControlMaster * upload: drop check for uncommitted local changes * git: raise hard version to 1.9.1 * release: update-hooks: helper for automatically syncing hooks * gitc: delete a few more dead references * man: regenerate man pages * Remove platform_utils.realpath * Fix drive mounted directory on Windows * git_command: unify soft/hard versions with requirements.json - increase the required version of python3-pytest to 8.3.4 - increase the required version of git to 1.9.1 ------------------------------------------------------------------- Mon Apr 15 20:09:30 UTC 2024 - Björn Bidar - Update to version 2.45: * project: Check if dotgit exists w/out symlink check * git: raise soft version to 2.7.4 * git: raise hard version to 1.7.9 * docs: release: add recent git/python/ssh/debian info * main: Stringify project name in error_info ------------------------------------------------------------------- Sat Mar 16 09:01:39 UTC 2024 - sebix@sebix.at - Update to version 2.44: * ssh: Print details if running the command fails * upload: Fix patchset description destination * sync: Fix sorting for nested projects * sync: introduce --force-checkout * upload: Add support for setting patchset description * sync: Introduce git checkout levels * git_command: Return None from GetEventTargetPath() if set to empty string * trace: Save trace2 sid in REPO_TRACE file * subcmds: sync: Remove deprecated _AUTO_GC * launcher: Set shebang to python3 * sync: ensure RepoChangedException propagated * stop passing project to UpdateManifestError * project: Rename if deletion fails * Clean up remaining `repo sync` log spam. * docs: fix some grammar typos * project: Check references during sync * tests: setup user identity for tests * manifest_xml: fix url normalization for inits and remotes * git_trace2: Add socket timeout * manifest_xml: do not allow / before : in scp-like syntax * repo: Drop reexec of python3 from check_python_version() * repo: Remove Python 2 compatibility code * repo: Remove a Python 2 related comment * Don't log spam `repo sync` by default * tox: Remove pylint timeout * Update commit-msg hook * sync: Fix partial sync false positive * repo: add repo main script's directory to PYTHONPATH. * info: Handle undefined mergeBranch * manifest_xml: support nested submanifests * repo_logging: Ensure error details are printed * repo: Use the worktree when checking the repo rev. * git_superproject: tell git that superproject is bare * Correctly handle schema-less URIs for remote fetch URL * main: Log ManifestParseError exception messages * repo: Remove unreachable code. * cleanup: Update codebase to expect Python 3.6 ------------------------------------------------------------------- Mon Feb 19 10:20:34 UTC 2024 - sebix@sebix.at - Update to version 2.39: * sync: PersistentTransport call parent init * sync: TeeStringIO write should return int * sync: Fix tracking of broken links * project: Speculative fix for project corruption * cleanup: convert exceptions to OSError * cleanup: delete redundant "r" open mode * cleanup: use new dict & set generator styles * manifest_xml: Fix empty project list when DOCTYPE is present * cleanup: leverage yield from in more places * git_config: GetBoolean should return bool * project: using --depth results in error when including submanifests * repo: drop Python 2 compat logic * delete Python 2 (object) compat * tests: Set HOME to a temporary directory when running tests. * tests: added python 3.12 * github: add python 3.11 to test-ci.yml * github: pin ubuntu to 20.04 to make py36 work * python-support: update with current status & guidelines * hooks: drop support for Python 2 * main: drop Python 2 check * Update logger.warn to logger.warning * git_command: read1 needs a size in py3.6 * git_command: lru_cache needs maxsize for py36 & 37 * sync: Fix print statement in _PostRepoFetch * git_command: Augment underlying git errors with suggestions * project: Invoke realpath on dotgit for symmetry with gitdir to ensure a short relpath. * Reset info logs back to print in sync * Track expected git errors in logs * tests: Fix tox error in py36 use virtualenv<20.22.0 * Use non-deprecated API for obtaining UTC time * main: Use repo logger * project: Use repo logger * subcmds: Use repo logger * github: add PR closer * tests: test_subcmds_sync.py: fix for py3.6 & 3.7 * tests: test_git_superproject.py: fix py3.6 & 3.7 * start: Use repo logger * project: Use IsId instead of ID_RE.match * project: Optimise GetCommitRevisionId when revisionId is set * manifest_xml: use a set instead of (sorted) list in projectsDiff * Log ErrorEvent for failing GitCommands * logging: Use log.formatter for coloring logs * sync: Preserve errors on KeyboardInterrupt * fix black formatting of standalone programs * sync: Use repo logger within sync * project: Preserve stderr on upload * tox.ini: add isort as dependency * isort: format codebase * tweak stdlib imports to follow Google style guide * upload: Suggest full sync if hooks fail with partially synced tree * sync: Ignore repo project when checking partial syncs * upload: fix error handling * docs: Document .repo_localsyncstate.json * gitc: drop support * tox: enable python 3.11 testing * flake8: exclude venv and .tox folder * Raise RepoExitError in place of sys.exit * sync: Warn if partial sync state is detected * main: Pass path to python binary as arg0 when restarting repo * Raise repo exit errors in place of sys.exit * Prefix error events with RepoErrorEvent: * Refactor errors for sync command * Update errors to extend BaseRepoError * [repo logging] Add logging module * sync: Track last completed fetch/checkout ------------------------------------------------------------------- Sun Jul 16 09:50:59 UTC 2023 - Sebastian Wagner - Only execute pytest, not black and flake8 tests. We do not care about formatting - On Leap 15.4 and 15.5 skip a test that fails there, but not on Tumbleweed ------------------------------------------------------------------- Sun Jul 16 09:13:35 UTC 2023 - sebix@sebix.at - Update to version 2.35: * main: Fix exitcode logging * sync: Track new/existing project count * manifest: enable remove-project using path * update links from monorail to issuetracker * sync: Handle case when output isn't connected to a terminal * sync: Update sync progress even when _sync_dict is empty * sync: Handle race condition when reading active jobs * pager: set $LESS only when missing * Add envar to replace shallow clones with partial * sync: Show number of running fetch jobs * upload: use f-string * project: Include tags option during fetch retry * Parse OpenSSH versions with no SSH_EXTRAVERSION * sync: Show elapsed time for the longest syncing project * [git_trace2] Add logs for critical cmds * [trace2] Add absolute time on trace2 exit events * SUBMITTING_PATCHES: update with commit queue details * sync: Fix how sync times for shared projects are recorded * manifest: add support for revision in include * sync: Display total elapsed fetch time * [SyncAnalysisState] Preserve synctime µs * tests: do not allow underscores in cli options * upload: Add `--no-follow-tags` by default to git push * run_tests: Check flake8 * Update abandon to support multiple branches * run_tests: Always check black and check it last * Format codebase with black and check formatting in CQ * Make black with line length 80 repo's code style * docs: update Focal Python version * upload: Skip upload if merge branch doesn't match project revision and dest_branch. * tests: Change docstring for CopyLinkTestCase * tests: Rework run_tests to use pytest directly and add vpython3 file * sync: Remove unused variable * Handle KeyboardInterrupt during repo sync * Update sync progress * project: clean up error message * Update bug tracking links * git_superproject: Log actual error fmt instead of the entire error message. * sync: Silence 'not found in manifest' message * Enable use of REPO_CONFIG_DIR to customize .repoconfig location * init: Silence the "rm -r .repo and try again" message if quiet * Fix flake8 warnings for some files * update_manpages.py: treat regex as raw string * Use 'backslashreplace' for decode * Use print with flush=True instead of stdout.flush * pylint: remove unused imports * update-manpages: clean up symlink in checkout * upload: Allow user to configure unusual commit threshold * repo_trace: Avoid race conditions with trace_file updating. * github: enable flake8 postsubmit testing * Use --negotiation-tip in superproject fetches. * tests: clean up repo_trace._TRACE_FILE patching * wrapper: switch to functools.lru_cache * tests: drop old unittest.main logic * sync: fix manifest sync-j handling * sync: Fix undefined variable in _FetchOne * sync: finish marking REPO_AUTO_GC=1 as deprecated. * test_manifest_config_properties: use assertEqual * sync: cleanup output when not doing GC * Revert "sync: save any cruft after calling git gc." * sync: mark REPO_AUTO_GC=1 as deprecated. * Fix ManifestProject.partial_clone_exclude property. * release-process: update to use ./release/sign-tag.py * wrapper.py: Replacing load_module() with exec_module() * Fixed wrapper related warnings in tests * test_capture: allow both Unix and Windows line sep * test_bad_path_name_checks: allow Windows path sep * test: Fix char encoding issues on windows * test: fix path seperator errors on windows * tox: Allow passing positional arguments * trace: make test timeout after 2min * tox: Make all tests timeout after 5min * Update GH Action test-ci.yml dependencies * tox: enable python 3.10 testing * Resolved DeprecationWarning for currentThread() * Set repo version to 2.30 (current) * Extract env building into a testable helper. * Do not set ALT object dirs when said path resolves to the same dir. * tests: Fix update-manpages test. * subcmds: display correct path multitree messages * update-manpages: explicitly strip color codes * repo_trace: drop notification of trace file name. * repo_trace: adjust formatting, update man page. * upload: track projects by path, rather than name * trace: restore Progress indicator. * sync: REPO_AUTO_GC=1 to restore old behavior. * Fix TRACE_FILE renaming. * sync: no garbage collection by default * Improve always-on-trace * GitcInit: fix gitc-init failure * sync: clear preciousObjects when set in error. * Set tracing to always on and save to .repo/TRACE_FILE. * tests: Make the tests pass for Python < 3.8 * init: add --manifest-depth for shallow manifest clone * Revert "init: change --depth default to 1 for manifest repo" * sync: uninitialized variable on mirror sync failure * sync: do not require python 3.9 * sync: only use --cruft when git supports it. * project: Add a missing call to _CopyAndLinkFiles * manifest: allow extend-project to override dest-branch and upstream * sync: use namedtuples for internal return values * sync: incorporate review feedback. * diffmanifests: Handle Missing Projects in Repo Workspace * update-manpages: force use of active interp * sync: save any cruft after calling git gc. * Revert "project: initialize new manifests in temp dirs" * sync: Correctly sync multi manifest workspaces ------------------------------------------------------------------- Tue Aug 23 18:45:06 UTC 2022 - sebix+novell.com@sebix.at - Update to version 2.29: * manifest_xml: improve topdir accuracy. * init: hide identify spam when reinitializing * init: show a notice when reinitializing * stage: add missing flush before project prompt * upload: respect --yes with large upload confirmation * launcher: make missing .repo/repo/repo an error * launcher: initialize repo in a temp dir * cherry-pick: tighten up output * git_command: fix input passing * project: initialize new manifests in temp dirs * init: change --depth default to 1 for manifest repo * add a few more docs to existing funcs * init: use --current-branch by default * start: do not swallow git output all the time * pager: catch startup failures on Windows * upload: add --push-options tips & doc link * project: simplify GetRemote a bit * upload: Add ready flag to remove wip * commit-msg: Sync commit-msg from gerrit 3.6.1 * sync: handle smartsync HTML responses better * sync: start clearing git settings that disabled pruning * sync: rework --jobs to provide better defaults * Fix the printed path of the ".repo" dir after a fresh init. * Omit local_manifest groups from superproject override. * status, diff: display correct path for multi-manifest * project: simplify if-statement * upload: add ‘--ignore-untracked-files’ option * man: regenerate * Fix Projects.shareable_dirs * Only sync superproject if it will be used. ------------------------------------------------------------------- Fri May 27 06:29:59 UTC 2022 - sebix+novell.com@sebix.at - Update to version 2.26: * sync: add multi-manifest support * project: initial separation of shared project objects * upload: move label validation to core function * tests: switch to tempfile.TemporaryDirectory * project: fix --use-superproject logic for init. ------------------------------------------------------------------- Sun May 22 18:43:53 UTC 2022 - sebix+novell.com@sebix.at - Update to version 2.25: * manifest: add submanifest.default_groups attribute * project: Do not exit early on --standalone-manifest. * project: Add missing imports ------------------------------------------------------------------- Thu Apr 21 17:19:48 UTC 2022 - sebix+novell.com@sebix.at - Update to version 2.24: * progress: optimize progress bar updates a bit * Override the manifest for the entire command * sync: refactor use of self.manifest * Stop passing optparse.Values to git_superproject * ManifestProject: add manifest_platform * forall: fix multi-manifest variables. * git_superproject: only print beta notice once. ------------------------------------------------------------------- Mon Apr 18 08:37:38 UTC 2022 - sebix+novell.com@sebix.at - Update to version 2.23: * manifest_xml: use Superproject to hold XML content * sync: respect `sync-c` manifest option * manifest_xml: Add Load and Unload methods * Fix sub manifest handling * init: add multi-manifest support * Move manifest config logic into ManifestProject * project: add ManifestProject.Sync() * project: Isolate ManifestProject from RepoProject * manifest_file must be an absolute path * trace: allow writing traces to a socket * manifest_xml: group for submanifest projects ------------------------------------------------------------------- Fri Feb 25 20:18:03 UTC 2022 - sebix+novell.com@sebix.at - Update to version 2.22: * Add multi-manifest support with element * Move local-manifest check to manifest_xml.py * project.py: pass --recurse-submodules={value} ------------------------------------------------------------------- Fri Feb 04 11:15:47 UTC 2022 - sebix+novell.com@sebix.at - remove obsolete patch fix-python-readlink.patch - Update to version 2.21: * project: mark gc.log as safe to discard when migrating .git/ * init: add an option --enable-git-lfs-filter * init: make bad --repo-rev settings more clear * project: Ignore failure to remove the sample hooks * branches: Fix "not in" handling * project: store objects in project-objects directly * project: move --reference handling to project-objects * test_project: use os.readlink instead of Path.readlink ------------------------------------------------------------------- Tue Jan 11 10:42:42 UTC 2022 - Sebastian Wagner - add fix-python-readlink.patch, fixing the project for python < 3.9. ------------------------------------------------------------------- Tue Jan 11 09:49:42 UTC 2022 - sebix+novell.com@sebix.at - Update to version 2.20: * project: prune sample hooks * project: drop support for symlinking internal .git files * project: abort a bit earlier before migrating .git/ * Revert "sync: dropped "NOTICE: --use-superproject is in beta ..." message." * project: stop symlinking info dir under .git/ * project: stop symlinking description file under .git/ * project: stop symlinking svn under .git/ * project: clean up now unused code * sync: dropped "NOTICE: --use-superproject is in beta ..." message. * sync: With --mirror option, don't display no-use-superproject... message. ------------------------------------------------------------------- Mon Jan 10 22:23:54 UTC 2022 - sebix+novell.com@sebix.at - Update to version 2.19: * project: migrate worktree .git/ dirs to symlinks * init, sync: fixed flake8 warnings. * superproject: Inherit --no-use-superproject with --mirror option. * sync: Handle tag ref in "upstream" field * project: init hooks in objdir only * sync: link the internal-fs-layout doc into checkouts * git-review: add config file * SUBMITTING_PATCHES: link to commit message style docs * man: refresh pages * help: fix grammar in help text ------------------------------------------------------------------- Thu Jan 6 09:10:45 UTC 2022 - Sebastian Wagner - initial package for version 2.19.