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]
- Notes on upcoming releases will be added here
Maintenance only, no bug fixes, or new features
uv is the new package and project manager for the project, replacing Poetry.
Build system moved from poetry to hatchling.
First libvcs release built with uv
package and project manager. No changes to libvcs API itself.
Maintenance only, no bug fixes or new features
Added Python 3.13 to package trove classifiers and CI tests.
Faster, cached pytest fixtures. Upstream tests are 50% faster.
- https://github.com/vcs-python/libvcs/blob/v0.32.1/CHANGES#libvcs-0310-2024-10-12
- https://libvcs.git-pull.com/history.html#libvcs-0-32-1-2024-10-12
libvcs's included test fixtures beyond v0.31.0+ are 33%+ faster.
-
libvcs: 0.29.0 -> 0.30.1 (#449, #450)
AWS CodeCommit support. Example:
~/study/aws-codecommit: test: repo: "codecommit::us-east-1://test"
- Automatically linkify links that were previously only text.
-
poetry: 1.8.1 -> 1.8.2
See also: https://github.com/python-poetry/poetry/blob/1.8.2/CHANGELOG.md
-
Code quality: Use f-strings in more places (#445)
via ruff 0.4.2.
Maintenance only, no bug fixes or new features
-
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
Maintenance only, no bug fixes or new features
-
libvcs: 0.28.2 -> 0.29.0 (#443)
Internal refactorings and maintenance.
-
poetry: 1.7.1 -> 1.8.1
See also: https://github.com/python-poetry/poetry/blob/1.8.1/CHANGELOG.md
-
ruff 0.2.2 -> 0.3.0 (#441)
Related formattings. Update CI to use
ruff check .
instead ofruff .
.See also: https://github.com/astral-sh/ruff/blob/v0.3.0/CHANGELOG.md
-
libvcs: 0.28.0 -> 0.28.1 (#440)
Fixes
'--max-count': not an integer
issue when syncing git repos.
- CI: Bump actions for Node 20 (#439)
Maintenance only, no bug fixes or new features
-
libvcs: 0.27.0 -> 0.28.0 (#437)
QueryList generic typing improvements.
Maintenance only, no bug fixes, or new features
-
libvcs: v0.26.0 -> v0.27.0 (#435)
Renamings of
dir
topath
. -
Fix shadowing of python builtins
dir
->path
(#435)
-
Strengthen linting (#436)
-
Add flake8-commas (COM)
-
Add flake8-builtins (A)
-
Add flake8-errmsg (EM)
-
- Refactor API docs to split across multiple pages (#431)
- Remove unused reStructuredText section headers from some modules (#431)
Maintenance only, no bug fixes, or new features
- ci: Add pydocstyle rule to ruff (#428)
- Add docstrings to functions, methods, classes, and packages (#428)
- libvcs 0.25.1 -> 0.26.0: Minor bug fixes, docstring updates
- Move CodeQL from advanced configuration file to GitHub's default
- libvcs 0.25.0 -> 0.25.1 (maintenance release)
Maintenance only, no bug fixes, or new features
-
libvcs 0.24.0 -> 0.25.0 (maintenance release)
-
Add Python 3.12 to trove classifiers
-
Poetry: 1.6.x -> 1.7.0
See also: https://github.com/python-poetry/poetry/blob/1.7.0/CHANGELOG.md
-
Packaging (poetry): Fix development dependencies
Per Poetry's docs on managing dependencies and
poetry check
, we had it wrong: Instead of using extras, we should create these:[tool.poetry.group.group-name.dependencies] dev-dependency = "1.0.0"
Which we now do.
-
Move formatting from
black
toruff format
(#427)This retains the same formatting style of
black
while eliminating a dev dependency by using our existing rust-basedruff
linter. -
CI: Update action packages to fix warnings
- dorny/paths-filter: 2.7.0 -> 2.11.1
- libvcs: Bumped from 0.22.2 -> 0.24.0 (#419)
- Git Remote URLs: Fix bug that would cause git remotes with
@
to be chopped off after the protocol (#419, fixes #425)
-
Refactor of two testsuites to used
NamedTuple
parametrization (#423):- test_config_variations
- test_updating_remote
Maintenance only, no bug fixes, or new features
-
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.
Maintenance only, no bug fixes, or new features
-
Add back
black
for formattingThis is still necessary to accompany
ruff
, until it replaces black.
Maintenance only, no bug fixes or features
-
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
- Refactor
.types
imports to not requiretyping-extensions
on production builds (fixes #412 via #414, thank you for the report @Jasha10)
Maintenance only, no bug fixes or features
-
Update mypy to 1.2.0
-
libvcs: 0.21.1 -> 0.21.2
Typing update only
-
libvcs: 0.21.0 -> 0.21.1
This removes even more
typing-extensions
runtime dependencies from production builds.
-
libvcs: 0.20.0 -> 0.21.0
This removes the
typing-extensions
requirement from production builds.
- mypy: Add
--strict
typings (#386)
-
Bump libvcs 0.19.1 -> 0.20.0
Adds python 3.11 support
Maintenance release, no features or fixes
-
Bump libvcs 0.19.0 -> 0.19.1
Doc fixes and test improvements
Maintenance release, no features or fixes
-
Bump libvcs 0.18.1 -> 0.19.0 (#408)
Refactor of sync and commands. Syncing now uses commands instead of invoking directly through
run()
.
Maintenance release, no features or fixes
-
sync()
: Renamerepo_terms
torepo_patterns
(#406) -
Bump libvcs 0.17.0 to 0.18.1
- 0.18.0 includes support for URL Matcher weights
- Doc fix for sphinx-argparse CLI generation
vcspull
andvcspull sync
Copy updates and metavar updates (#404)
vcspull
: Add usage examples to CLI output
vcspull sync
: Fix showing of help when no arguments passed (#405)
-
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]
- Fix readme example for syncing repositories
- Updates for migrations page
- Add back page on completions
- Capitalization fixes and help text updates
- Add missing pyyaml dependency (needed after #397's transition to
ConfigReader
)
- Fix help text for
vcspull sync
arguments and flags
Maintenance release, no features or fixes
- Move from click to {mod}
argparse
(#400)
- Drop click dependency (#400)
Maintenance release, no features or fixes
-
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
.
- Drop kaptan dependency (#397)
-
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 vcs-python/libvcs#425
-
-
Move to
src/
directory structure (#382) -
libvcs: Update to 0.17.x (#373)
-
mypy:
- Basic mypy annotations (#373)
mypy --strict
compliant (#386)
-
Remove
.pre-commit-config.yaml
: Let's not automate what the contributor could / should do themselves. -
Add flake8-bugbear (#379)
-
Add flake8-comprehensions (#380)
- Add CLI tests (#387)
- Render changelog in sphinx-autoissues (#378)
- Fix cloning of mercurial repositories
-
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
-
Remove
MANIFEST.in
Redundant since poetry has pyproject.toml with
include
-
Remove unused
.tmuxp-before-script.sh
, which was used as abefore_script
in.tmuxp.yaml
-
Move
.coveragerc
intopyproject.toml
(#384)
- Fix cloning of mercurial repositories (backported fix from libvcs 0.13.x)
- Update tags and description
- Update README
- Pin click at 8+
Patch branch: v1.12.x
-
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
topathlib.Path
(#364) -
Requires click 8+
-
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
- Publish to PyPI via CI when git tags are pushed
- Sidebar reorganized into sections
- Added documentation on fetching developmental releases of libvcs
-
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)
- Allow click 8.1.x (backport of #372)
- vcspull learned
-h
for help (thanks HN 2022-04-11) - vcspull learned
-V
for version - vcspull shows libvcs version with
-V
/--version
- Tab-completion for repository names and configurations (retracted in v1.15)
- Update libvcs 0.11.0 -> 0.11.1 to patch CVE-2022-21187: mercurial URL injection vulnerability with URLs arguments (libvcs#306)
- Run pyupgrade formatting (#353)
- Tests: Move from pytest
tmp_dir
(py.path.local
) totmp_path
(pathlib.Path
)
- Move to furo theme
- Root:
make start_docs
,make design_docs
- docs/:
make start
,make design
- CLI moved from
cli.py
->cli/__init__.py
,cli/sync.py
- CLI: Default groups removed
- Updates for
vcspull sync
changed in 1.10.0
-
Sync through
vcspull sync
Syncing is no longer ran by default when
vcspull
is typed
-
Experimental completion (retracted in v1.15):
-
Completion for sync:
vcspull sync <tab>
vcspull sync -c <tab> <tab>
-
- Added completion:
- Drop Python 3.6 (#329)
- Add Python 3.10 (#329)
✨ Renewed
-
GitLab config importer example script, credit @aschleifer (#336, #337, #341)
These are hosted on the new config generation page.
-
Rename
examples
page toconfiguration
-
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
- CI: Use poetry 1.1.12 and new
install-poetry.py
install location (#329)
- 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)
- CI: Use poetry 1.1.7 and
- #277: Convert to markdown
- Update libvcs to 0.10.0
- Fix image in README
- #308: Update to libvcs 0.9.0 (python 3.6+ only)
- Remove some python 2.7 compat imports
- #307: Drop python 2.7
- #304, #299 (tests) - Fix adding of remotes
- #303 - Overhaul docs and packaging
- #303 - Add docs for CLI via sphinx-click
- Bump libvcs to 0.4.4
- Bump libvcs to 0.4.3, fix issue with updating branches that have special characters (e.g. hyphens)
- Bump libvcs to 0.4.2, fixes issues with checking out branches where branch doesn't exist upstream
- :issue:
300
Update libvcs to 0.4.0, also fixes :issue:298
issue on initial checkout - :issue:
301
Move from Travis to GitHub Actions
- :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)
- Fix pyproject.toml libvcs pin
- Fix pyproject.toml release version
- Fixes to contribution docs
- :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
-
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
- 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
- Update more documentation domain at vcspull.git-pull.com
- Update to new documentation domain at vcspull.git-pull.com
- Fix travis tests via
pip install -u mock
in.travis.yaml
.
- :issue:
43
- fix missing test dependency on anaconda by updating libvcs - README tweaks
- :issue:
41
Transition useslibvcs
_ 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 ifhg(1)
missing, by@jcfr
- :issue:
36
, :issue:37
Documentation updates from@jcfr
- :issue:
34
Fix missing mock library, thanks@jfcr
- [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 nowurl
. - [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
forwatch_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 tofind_config_files
. - Rename
get_repos
tofilter_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.
- [internal]: devendorize colorama
- [internal] [tests]: handle
ERROR
in git cloning, add tests. Fixes cases likeERROR: Repository not found
.
- [api] Change the API of :class:
vcspull.repo.base.BaseRepo
and :class:vcspull.repo.Repo
to accept arguments askwargs
- [api]: Rename
parent_path
tocwd
. - [docs]: Pydoc documentation for
Repo
usage. - [docs]: Python API example
- [testing] Fix sniffer on Python 3
- [cli] remove redundant message when adding remotes
- [docs] add animated screencast preview for ReadTheDocs and README.rst
- [cli]: support for specifying for config file path with
-c
. - [cli]: clarify error output when no repositories found
- [cli]: fix message when adding remotes
- [internals]: split config-related functions into
config
module. - [tests]: consolidate tests from
testsuite.cli
intotestsuite.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.
- [internals]: move to
__about__.py
convention for pulling package data. - [internals]: remove extraneous url from stdout in git repositories.
- [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
inutils
. - [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.
- [cli] Update documentation when no config found to show
yaml
andjson
. Remove mentioning ofconf
.
- [logging] #6 - fix issue where log templates would not concatenate correctly.
- [packaging] Fix issue where
package_metadata.py
missing fromMANIFEST.in
.
- [setup.py] remove history from readme
- 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.
- Renamed to
vcspull
.
- [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
- [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.
- [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] updatevcspull.log
module to latest code (fromtmuxp
_ project).
- [tests] Move tests for making directory paths to
test_repo
TestSuite. - [tests] [git] more work on remotes with :class:
vcspull.repo.git.GitRepo
.
- [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.
- [cli] [tests] #1 for making directories recursively.
- [tests] :py:mod:
tempfile
. - [cli] [config] remove .ini support
- pep257 to all modules.
- Add argcomplete
- Move in code patterns from tmuxp. New logger, setup.py, testsuite structure, etc.
- add example
- fix packaging issue, add MANIFEST.in
- bump to 0.1.1
- move to semver
- https://github.com/vcs-python/vcspull/compare/a96e723269...a5be723de5
- remove virtualenv dep [Done]
- remove pip dep [Done]
- logging for repo obtain/update/makedir/rev [Done]
- logging.notify with alternative format [Done]
- removed salt-specific code used for Popen (https://github.com/vcs-python/vcspull/commit/67dbb793e7)