Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,22 @@ $ uvx --from 'vcspull' --prerelease allow vcspull
_Notes on upcoming releases will be added here_
<!-- END PLACEHOLDER - ADD NEW CHANGELOG ENTRIES BELOW THIS LINE -->

### What's new

#### `vcspull sync`: parallel batch sync via `--jobs` (#546)

{ref}`cli-sync` can now update repositories concurrently. Pass `--jobs N`
(or `-j N`, or set `VCSPULL_JOBS`) to sync up to N repositories at once;
the default scales with the machine and is capped to stay polite to
remote hosts. A large workspace of already-current repositories finishes
in a fraction of the previous wall-clock time.

In a terminal the progress display switches to a fixed set of active
rows, with each completed repository scrolling into history above them.
Pass `--jobs 1` to keep the original single-repository view. Branch and
revision failure guidance is emitted for every repository regardless of
the concurrency level.

## vcspull v1.65.0 (2026-07-05)

vcspull v1.65.0 sharpens the feedback you get when a sync cannot check out
Expand Down
1 change: 1 addition & 0 deletions src/vcspull/cli/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -516,6 +516,7 @@ def cli(_args: list[str] | None = None) -> None:
log_file=getattr(args, "log_file", None),
no_log_file=getattr(args, "no_log_file", False),
panel_lines=getattr(args, "panel_lines", None),
jobs=getattr(args, "jobs", None),
)
elif args.subparser_name == "list":
list_repos(
Expand Down
Loading