Changelog

To install the unreleased vcspull version, see developmental releases.

pip:

$ pip install --user --upgrade --pre vcspull

pipx:

$ pipx install --suffix=@next 'vcspull' --pip-args '\--pre' --force
// Usage: vcspull@next sync [config]

vcspull v1.34.x (unreleased)

  • Notes on upcoming releases will be added here

vcspull v1.33.0 (2024-11-23)

Maintenance only, no bug fixes, or new features

Breaking changes

Project and package management: poetry to uv (#457)

uv is the new package and project manager for the project, replacing Poetry.

Build system: poetry to hatchling (#457)

Build system moved from poetry to hatchling.

libvcs 0.33.0 -> 0.34.0 (#456)

First libvcs release built with uv package and project manager. No changes to libvcs API itself.

vcspull v1.32.0 (2024-10-13)

Maintenance only, no bug fixes or new features

New features

Python 3.13 support

Added Python 3.13 to package trove classifiers and CI tests.

libvcs 0.30.1 -> 0.33.0 (#453)

Faster, cached pytest fixtures. Upstream tests are 50% faster.

Faster tests fixtures (#453)

libvcs’s included test fixtures beyond v0.31.0+ are 33%+ faster.

vcspull v1.31.0 (2024-06-18)

Breaking changes

  • libvcs: 0.29.0 -> 0.30.1 (#449, #450)

    AWS CodeCommit support. Example:

    ~/study/aws-codecommit:
    test:
      repo: "codecommit::us-east-1://test"
    

Documentation

  • Automatically linkify links that were previously only text.

Development

vcspull v1.30.0 (2024-03-24)

Maintenance only, no bug fixes or new features

Development

  • Aggressive automated lint fixes via ruff (#442)

    via ruff v0.3.4, all automated lint fixes, including unsafe and previews were applied:

    ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; ruff format .
    

    Branches were treated with:

    git rebase \
        --strategy-option=theirs \
        --exec 'poetry run ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; poetry run ruff format .; git add src tests; git commit --amend --no-edit' \
        origin/master
    

vcspull v1.29.0 (2024-03-24)

Maintenance only, no bug fixes or new features

Breaking changes

  • libvcs: 0.28.2 -> 0.29.0 (#443)

    Internal refactorings and maintenance.

Development

vcspull v1.28.1 (2024-02-17)

Fixes

  • libvcs: 0.28.0 -> 0.28.1 (#440)

    Fixes '--max-count': not an integer issue when syncing git repos.

Testing

  • CI: Bump actions for Node 20 (#439)

vcspull v1.28.0 (2024-02-07)

Maintenance only, no bug fixes or new features

Breaking changes

  • libvcs: 0.27.0 -> 0.28.0 (#437)

    QueryList generic typing improvements.

vcspull v1.27.0 (2024-02-07)

Maintenance only, no bug fixes, or new features

Breaking changes

  • libvcs: v0.26.0 -> v0.27.0 (#435)

    Renamings of dir to path.

  • Fix shadowing of python builtins

    • dir -> path (#435)

Development

Documentation

  • Refactor API docs to split across multiple pages (#431)

  • Remove unused reStructuredText section headers from some modules (#431)

vcspull v1.26.0 (2023-12-16)

Maintenance only, no bug fixes, or new features

CI

  • ci: Add pydocstyle rule to ruff (#428)

Documentation

  • Add docstrings to functions, methods, classes, and packages (#428)

vcspull v1.25.0 (2023-11-26)

Packaging

  • libvcs 0.25.1 -> 0.26.0: Minor bug fixes, docstring updates

CI

  • Move CodeQL from advanced configuration file to GitHub’s default

vcspull v1.24.1 (2023-11-24)

Packaging

  • libvcs 0.25.0 -> 0.25.1 (maintenance release)

vcspull v1.24.0 (2023-11-19)

Maintenance only, no bug fixes, or new features

Packaging

Development

  • Move formatting from black to ruff format (#427)

    This retains the same formatting style of black while eliminating a dev dependency by using our existing rust-based ruff linter.

  • CI: Update action packages to fix warnings

vcspull v1.23.0 (2023-10-22)

Breaking changes

  • libvcs: Bumped from 0.22.2 -> 0.24.0 (#419)

Bug fixes

  • Git Remote URLs: Fix bug that would cause git remotes with @ to be chopped off after the protocol (#419, fixes #425)

Development

  • Refactor of two testsuites to used NamedTuple parametrization (#423):

    • test_config_variations

    • test_updating_remote

vcspull v1.22.0 (2023-09-02)

Maintenance only, no bug fixes, or new features

Development

  • Code quality improved via ruff rules (#417)

    This includes fixes made by hand, and with ruff’s automated fixes. With the expanded set of linting rules (which include import sorting) - ruff runs are still instant when checking the whole codebase.

vcspull v1.21.1 (2023-05-28)

Maintenance only, no bug fixes, or new features

Development

  • Add back black for formatting

    This is still necessary to accompany ruff, until it replaces black.

vcspull v1.21.0 (2023-05-27)

Maintenance only, no bug fixes or features

Internal improvements

  • Move formatting, import sorting, and linting to ruff.

    This rust-based checker has dramatically improved performance. Linting and formatting can be done almost instantly.

    This change replaces black, isort, flake8 and flake8 plugins.

  • libvcs: 0.21.1 -> 0.21.2 (addition of ruff)

  • poetry: 1.4.0 -> 1.5.0

    See also: https://github.com/python-poetry/poetry/releases/tag/1.5.0

vcspull v1.20.3 (2023-05-14)

Bug fix

  • Refactor .types imports to not require typing-extensions on production builds (fixes #412 via #414, thank you for the report @Jasha10)

vcspull v1.20.2 (2023-04-07)

Maintenance only, no bug fixes or features

Development

  • Update mypy to 1.2.0

  • libvcs: 0.21.1 -> 0.21.2

    Typing update only

vcspull v1.20.1 (2023-03-15)

  • libvcs: 0.21.0 -> 0.21.1

    This removes even more typing-extensions runtime dependencies from production builds.

vcspull v1.20.0 (2023-03-15)

Bug fix

  • libvcs: 0.20.0 -> 0.21.0

    This removes the typing-extensions requirement from production builds.

vcspull v1.19.0 (2022-12-31)

Internal

  • mypy: Add --strict typings (#386)

vcspull v1.18.0 (2022-10-31)

Python 3.11 support (#409)

  • Bump libvcs 0.19.1 -> 0.20.0

    Adds python 3.11 support

vcspull v1.17.1 (2022-10-23)

Maintenance release, no features or fixes

Internal

  • Bump libvcs 0.19.0 -> 0.19.1

    Doc fixes and test improvements

vcspull v1.17.0 (2022-10-23)

Maintenance release, no features or fixes

Internal

  • Bump libvcs 0.18.1 -> 0.19.0 (#408)

    Refactor of sync and commands. Syncing now uses commands instead of invoking directly through run().

vcspull v1.16.0 (2022-10-23)

Maintenance release, no features or fixes

Internal

  • sync(): Rename repo_terms to repo_patterns (#406)

  • Bump libvcs 0.17.0 to 0.18.1

    • 0.18.0 includes support for URL Matcher weights

vcspull v1.15.8 (2022-10-16)

CLI

  • Doc fix for sphinx-argparse CLI generation

vcspull v1.15.7 (2022-10-16)

CLI

  • vcspull and vcspull sync Copy updates and metavar updates (#404)

vcspull v1.15.6 (2022-10-16)

CLI

  • vcspull: Add usage examples to CLI output

vcspull v1.15.5 (2022-10-16)

CLI

  • vcspull sync: Fix showing of help when no arguments passed (#405)

vcspull v1.15.4 (2022-10-16)

CLI

  • File completions for -c / --config files (#403)

    After updating, you can re-run shtab’s setup (see completions page) completion of:

    $ vcspull sync -c [tab]
    
    $ vcspull sync --config [tab]
    

Documentation

  • Fix readme example for syncing repositories

vcspull v1.15.3 (2022-10-09)

Documentation

  • Updates for migrations page

  • Add back page on completions

CLI

  • Capitalization fixes and help text updates

vcspull v1.15.2 (2022-10-08)

Packaging

  • Add missing pyyaml dependency (needed after #397’s transition to ConfigReader)

vcspull v1.15.1 (2022-10-02)

Bug fix

  • Fix help text for vcspull sync arguments and flags

vcspull v1.15.0 (2022-10-02)

Maintenance release, no features or fixes

Internal

Packaging

  • Drop click dependency (#400)

vcspull v1.14.0 (2022-10-01)

Maintenance release, no features or fixes

Internal

  • Move test fixtures over to libvcs’s pytest plugin (#398)

  • Move conftest.py to root directory (#399)

  • Add ConfigReader: Our clean, typed parser for raw strings and files (#397)

    This is our shiny, new, 200-line, doctested and typed parser that replaces kaptan.

Packaging

  • Drop kaptan dependency (#397)

vcspull v1.13.0 (2022-09-25)

What’s new

  • Refreshed logo

  • vcspull sync:

    • Empty command will now show help output

      $ vcspull sync
      Usage: vcspull sync [OPTIONS] [REPO_TERMS]...
      
      Options:
      -c, --config PATH Specify config
      -x, --exit-on-error Exit immediately when encountering an error syncing
      multiple repos
      -h, --help Show this message and exit.
      

      To achieve the equivalent behavior of syncing all repos, pass '*':

      $ vcspull sync '*'
      

      Depending on how shell escaping works in your shell setup with wild card / asterisk, you may not need to quote *.

    • Terms with no match in config will show a notice (#394)

      No repo found in config(s) for “non_existent_repo”

    • Syncing will now skip to the next repos if an error is encountered

    • Learned --exit-on-error / -x

      Usage:

      $ vcspull sync --exit-on-error grako django
      

      Print traceback for errored repos:

      $ vcspull --log-level DEBUG sync --exit-on-error grako django
      
    • Syncing in git repositories with untracked files has been improved (via libvcs 0.17)

      See also https://github.com/vcs-python/libvcs/pull/425

Development

Testing

  • Add CLI tests (#387)

Documentation

  • Render changelog in sphinx-autoissues (#378)

Bug fixes

  • Fix cloning of mercurial repositories

Infrastructure

  • CI speedups (#383)

    • Split out release to separate job so the PyPI Upload docker image isn’t pulled on normal runs

    • Clean up CodeQL

  • Upgraded poetry 1.1.x to 1.2.x

Packaging

  • Remove MANIFEST.in

    Redundant since poetry has pyproject.toml with include

  • Remove unused .tmuxp-before-script.sh, which was used as a before_script in .tmuxp.yaml

  • Move .coveragerc into pyproject.toml (#384)

vcspull 1.12.3 (2022-06-01)

Bug fixes

  • Fix cloning of mercurial repositories (backported fix from libvcs 0.13.x)

vcspull 1.12.2 (2022-05-15)

Packaging

  • Update tags and description

Documentation

  • Update README

vcspull 1.12.1 (2022-05-02)

Bug fixes

vcspull 1.12.0 (2022-04-24)

Patch branch: v1.12.x

Breaking changes

  • Config location uses XDG_CONFIG_HOME from XDG Base Directory, (#367).

    Old path: ~/.vcspull

    New path: XDG_CONFIG_HOME, usually ~/.config/vcspull

  • Override config directory via VCSPULL_CONFIGDIR (#367)

  • Switch from str to pathlib.Path (#364)

  • Requires click 8+

Compatibility

  • Allow click 8.1.x (#372)

  • vcspull learned -h for help (thanks HN 2022-04-11)

  • Python 3.7 and 3.8 dropped (#356)

    Branch v1.11.x opened for security / bug fixes.

  • --version learned to show libvcs version

  • --version learned to accept the -V flag

  • vcspull sync accepts config file params via --config. Before it was only -c. Assume myrepos.yaml in your path:

    $ vcspull sync --config myrepos.yaml
    

Development

  • Publish to PyPI via CI when git tags are pushed

Documentation

  • Sidebar reorganized into sections

  • Added documentation on fetching developmental releases of libvcs

vcspull 1.11.5 (2022-04-20)

Compatibility

  • vcspull sync accepts config file params via --config. Before it was only -c. Assume myrepos.yaml in your path:

    $ vcspull sync --config myrepos.yaml
    

    (backport from vcspull v1.12.0b22)

vcspull 1.11.4 (2022-04-17)

Compatibility

  • Allow click 8.1.x (backport of #372)

vcspull 1.11.3 (2022-04-11)

Compatibility

  • vcspull learned -h for help (thanks HN 2022-04-11)

  • vcspull learned -V for version

  • vcspull shows libvcs version with -V / --version

vcspull 1.11.2 (2022-03-21)

Fix

  • Tab-completion for repository names and configurations (retracted in v1.15)

vcspull 1.11.1 (2022-03-12)

Security

  • Update libvcs 0.11.0 -> 0.11.1 to patch CVE-2022-21187: mercurial URL injection vulnerability with URLs arguments (libvcs#306)

Development

  • Run pyupgrade formatting (#353)

  • Tests: Move from pytest tmp_dir (py.path.local) to tmp_path (pathlib.Path)

Documentation

  • Move to furo theme

  • Root: make start_docs, make design_docs

  • docs/: make start, make design

vcspull 1.11.0 (2022-02-28)

Development

  • CLI moved from cli.py -> cli/__init__.py, cli/sync.py

  • CLI: Default groups removed

Documentation

  • Updates for vcspull sync changed in 1.10.0

vcspull 1.10.0 (2022-02-28)

Breaking

  • Sync through vcspull sync

    Syncing is no longer ran by default when vcspull is typed

Improvements

  • Experimental completion (retracted in v1.15):

    • Completion for sync:

      • vcspull sync <tab>

      • vcspull sync -c <tab> <tab>

Documentation

  • Added completion:

vcspull 1.9.0 (2022-02-26)

Compatibility

  • Drop Python 3.6 (#329)

  • Add Python 3.10 (#329)

Documentation

✨ Renewed

  • GitLab config importer example script, credit @aschleifer (#336, #337, #341)

    These are hosted on the new config generation page.

  • Rename examples page to configuration

  • Theme has been moved to furo

  • Broken URLs have ben fixed

  • Added copy paste button next to code snippets

  • Inline tab examples for configuration and config generators

Development

  • CI: Use poetry 1.1.12 and new install-poetry.py install location (#329)

vcspull 1.8.1 (2021-12-05)

  • Update libvcs 0.10.0 to 0.10.1

  • #313: Update poetry to 1.1

    • CI: Use poetry 1.1.7 and install-poetry.py installer

    • Relock poetry.lock at 1.1 (w/ 1.1.7’s fix)

vcspull 1.8.0 (2021-06-16)

  • #277: Convert to markdown

  • Update libvcs to 0.10.0

vcspull 1.7.0post0 (2021-06-14)

  • Fix image in README

vcspull 1.7.0 (2021-06-14)

  • #308: Update to libvcs 0.9.0 (python 3.6+ only)

vcspull 1.6.1 (2021-06-14)

  • Remove some python 2.7 compat imports

vcspull 1.6.0 (2021-06-14)

  • #307: Drop python 2.7

vcspull 1.5.0 (2020-08-11)

  • #304, #299 (tests) - Fix adding of remotes

  • #303 - Overhaul docs and packaging

  • #303 - Add docs for CLI via sphinx-click

vcspull 1.4.3 (2020-08-05)

  • Bump libvcs to 0.4.4

vcspull 1.4.2 (2020-08-01)

  • Bump libvcs to 0.4.3, fix issue with updating branches that have special characters (e.g. hyphens)

vcspull 1.4.1 (2020-08-01)

  • Bump libvcs to 0.4.2, fixes issues with checking out branches where branch doesn’t exist upstream

vcspull 1.4.0 (2020-08-01)

  • :issue:300 Update libvcs to 0.4.0, also fixes :issue:298 issue on initial checkout

  • :issue:301 Move from Travis to GitHub Actions

vcspull 1.3.1 (2020-07-26)

  • :issue:231 Add updating / merging of remote URLs (via PR :issue:297)

  • Fix colorama constraint

  • poetry lockfile: Fix (accidentally pushed lockfile via prerelease version of poetry)

vcspull 1.3.0post2 (2020-07-26)

  • Fix pyproject.toml libvcs pin

vcspull 1.3.0post1 (2020-07-26)

  • Fix pyproject.toml release version

  • Fixes to contribution docs

vcspull 1.3.0 (2020-07-25)

  • :issue:257 - Move from Pipfile to poetry

  • Removed dependency on releases for CHANGES, use plain reStructuredText for now

  • Loosen constraints for colorama

  • Update click to 7/8

  • Add project_urls to setup.py

vcspull 1.2.0 (2018-07-08)

  • Sort imports

  • Add isort package, isort configuration in setup.cfg, and make isort task to Makefile.

  • Add make sync_pipfile for updating Pipfile dependencies against requirements/*.txt files.

  • Update Pipfile

  • Package updates

    Base / Core dependencies:

    • kaptan: 0.5.9 to >=0.5.9,<1 (adds Python 3.7 compatibility)

    • pyyaml: >=3.12,<4 (adds Python 3.7 compatibility)

    Docs:

    • sphinx: 1.7.1 to 1.7.5

    • alagitpull: 0.0.19 to 0.0.21

    • releases: 1.4.0 to 1.7.1

    Testing:

    • pytest: 3.4.2 to 3.6.3

vcspull 1.1.0 (2018-03-11)

  • Move to new organization, vcs-python

  • Fix a bug in libvcs that prevented syncing on Ubuntu 18.04 LTS beta.

  • Update libvcs to 0.3.0

  • Various package updates for support infrastructure, including pytest and sphinx

vcspull 1.0.3 (2016-12-19)

vcspull 1.0.2 (2016-12-19)

  • Update to new documentation domain at vcspull.git-pull.com

  • Fix travis tests via pip install -u mock in .travis.yaml.

vcspull 1.0.1 (2016-11-24)

  • :issue:43 - fix missing test dependency on anaconda by updating libvcs

  • README tweaks

vcspull 1.0.0 (2016-09-13)

  • :issue:41 Transition uses libvcs_ backend

  • :issue:41 Transition tests from unittest to pytest

  • :issue:40 Major API refactorings and removal of unused code, see the api reference for more.

  • :issue:38 Improve SVN and git support, thanks @jcfr!

  • :issue:35 Don’t run mercurial tests if hg(1) missing, by @jcfr

  • :issue:36 , :issue:37 Documentation updates from @jcfr

  • :issue:34 Fix missing mock library, thanks @jfcr

vcspull 0.9.0 (2016-05-26)

  • [cli] [internal]: command line arg parsing now uses click library.

  • [cli] vcspull will use the beginning part of the argument to determine if its searching by vcs URL, repository name or system path.

  • [config] repo (the longform for the vcs url) is now url.

  • [config] [internal] repos are now passed around in a list of :py:mod:dict. :class:vcspull.config.expand_config has been simplified.

  • [internal] flake8 and sort imports

  • [internal] [dev] Add Makefile for watch_test (re-running tests on file change), watch_flake (re-running flake8 check on changes)

  • [internal] [dev] Move .tmuxp.yaml commands to use Makefile

  • [internal] [dev] split up requirements into requirements/ folder.

  • Drop Python 2.6 support

  • [internal] find_config renamed to find_config_files.

  • Rename get_repos to filter_repos, simplify argument signature.

  • [cli] Experimental support for concurrently synchroniznig repos via :py:mod:multiprocessing.

  • [api][internal]: Refactor :class:vcspull.repo.Repo factory class into :func:vcspull.repo.create_repo.

  • [internal]: major internal cleanup of dead code, pep8 style updates.

  • [git] [tests]: fix git+https remotes #14, add regression tests.

vcspull 0.2.2 (2015-07-10)

  • [internal]: devendorize colorama

vcspull 0.2.1 (2015-06-12)

  • [internal] [tests]: handle ERROR in git cloning, add tests. Fixes cases like ERROR: Repository not found.

vcspull 0.2.0 (2015-05-19)

  • [api] Change the API of :class:vcspull.repo.base.BaseRepo and :class:vcspull.repo.Repo to accept arguments as kwargs

  • [api]: Rename parent_path to cwd.

  • [docs]: Pydoc documentation for Repo usage.

  • [docs]: Python API example

vcspull 0.1.1 (2015-05-09)

  • [testing] Fix sniffer on Python 3

  • [cli] remove redundant message when adding remotes

  • [docs] add animated screencast preview for ReadTheDocs and README.rst

vcspull 0.1.0 (2015-04-30)

  • [cli]: support for specifying for config file path with -c.

  • [cli]: clarify error output when no repositories found

vcspull 0.0.10 (2015-04-08)

  • [cli]: fix message when adding remotes

  • [internals]: split config-related functions into config module.

  • [tests]: consolidate tests from testsuite.cli into testsuite.config.

  • [tests]: remove stub TestSuites insite of cli tests.

  • [tests]: Refactor helpers. Tests should now run much faster.

  • [cli]: vcspull now checks for configs in ~/.vcspull (yaml and json files) as well as the standard ~/.vcspull.{yaml,json} files.

vcspull 0.0.9-1 (2015-03-27)

  • [internals]: move to __about__.py convention for pulling package data.

  • [internals]: remove extraneous url from stdout in git repositories.

vcspull 0.0.9 (2015-03-25)

  • [dev]: support for tmuxp before_script to set up local virtualenv + dependencies.

  • [dev]: Clean up __init__.py imports

  • [internals]: move :meth:update to :meth:update_dict in utils.

  • [cli]: -d / --dirmatch for matching directories, accepts fnmatch’s.

  • [cli]: -r / --repomatch for matching directories, accepts fnmatch’s.

  • [cli]: -c / --config YAML / JSON file of repositories

  • [config/vcs]: Exception for private / ssh GitHub repository URLs and message to change to correct format.

  • [docs]: Update docs to reflect updates on new commands and how to clone private / privileged GitHub repos.

vcspull 0.0.8-4 (2014-02-06)

  • [cli] Update documentation when no config found to show yaml and json. Remove mentioning of conf.

vcspull 0.0.8-3 (2014-02-06)

  • [logging] #6 - fix issue where log templates would not concatenate correctly.

vcspull 0.0.8-2 (2014-02-05)

  • [packaging] Fix issue where package_metadata.py missing from MANIFEST.in.

vcspull 0.0.8-1 (2014-02-05)

vcspull 0.0.8 (2014-02-05)

  • Use werkzeug/flask style unit test suites.

  • [docs] Fix section headings.

  • [internals] use conventions from tony/cookiecutter-pypackage.

vcspull 0.0.7 (2014-01-07)

  • New logging system from pypa/pip with support showing current stderr (checkout, pull, cloning) progress.

  • unicode_literals, __future__ for python 3 support.

vcspull 0.0.6 (2013-12-03)

  • Renamed to vcspull.

vcspull 0.0.5 (2013-11-28)

  • [tests] tests for loading multiple configs, config conflict cases

  • [internal] fix recursive imports, using explicit importing

  • [git] handle cli case where git is on a different branch, just fetch repo.

  • [py3] python 3 support

vcspull 0.0.4 (2013-11-25)

  • [svn] [git] [hg] added functionality for pip’s netloc and vcs functionality.

  • [docs] update license docs for methods from salt (apache) and pip (mit).

  • [cli] autocomplete

  • [config] [tests] Support for expanding environment variables in syntax with ${envvar} and ~.

  • [cli] Exit with Ctrl-C gracefully.

vcspull 0.0.3 (2013-11-23)

  • [docs] [examples] more docs and examples

  • [internal] remove developer logger message that would show when updating.

  • [cli] - fixed bug where logger would output message twice

  • [pep257] [pep8] [logger] update vcspull.log module to latest code (from tmuxp_ project).

vcspull 0.0.2 (2013-11-23)

  • [tests] Move tests for making directory paths to test_repo TestSuite.

  • [tests] [git] more work on remotes with :class:vcspull.repo.git.GitRepo.

vcspull 0.0.2 (2013-11-16)

  • [tests] refactor tests modules

  • [git] add some functions with saltstack to :py:class:vcspull.repo.git.GitRepo.

  • [version] reset to 0.1.0 w/o dev tag to begin releases.

vcspull 0.0.1 (2013-11-15)

  • [cli] [tests] #1 for making directories recursively.

  • [tests] :py:mod:tempfile.

  • [cli] [config] remove .ini support

vcspull 0.0.1 (2013-11-09)

vcspull 0.0.1 (2013-10-23)

  • add example

vcspull 0.0.1 (2013-10-17)

vcspull 0.0.1 (2013-10-08)

  • move to semver

vcspull 0.0.1 (2013-10-06)