ChangelogΒΆ
To install the unreleased libvcs version, see developmental releases.
pip:
$ pip install --user --upgrade --pre libvcs
uv:
$ uv add libvcs --prerelease allow
libvcs 0.39.x (unreleased)ΒΆ
Upcoming changes will be written here.
libvcs 0.38.0 (2025-11-30)ΒΆ
New featuresΒΆ
Additional git subcommands (#465)ΒΆ
New architecture for git subcommands that returns typed objects instead of raw strings:
Traversal handle collection-level operations (
ls(),get(),filter(),add()/create())Commands handle per-entity operations (
show(),remove(),rename())All
ls()methods returnQueryListfor chainable filtering
New subcommand managers accessible via Git instance:
Example usage:
git = Git(path="/path/to/repo")
# List all branches, filter remote ones
remote_branches = git.branches.ls(remotes=True)
# Get a specific tag
tag = git.tags.get(tag_name="v1.0.0")
tag.delete()
# Create a new branch and switch to it
git.branches.create("feature-branch")
cmd: Enhanced Git.init() (#465)ΒΆ
Added
ref_formatparameter for--ref-format(files/reftable)Added
make_parentsparameter to auto-create parent directoriesImproved parameter validation with clear error messages
Extended
sharedparameter to support octal permissions (e.g., β0660β)
DocumentationΒΆ
TestsΒΆ
libvcs 0.37.0 (2025-11-01)ΒΆ
Breaking changesΒΆ
DevelopmentΒΆ
libvcs 0.36.0 (2025-06-22)ΒΆ
ImprovementsΒΆ
Add support for SCP-style Git URLs without requiring
git+ssh://prefix (#490)URLs like
git@github.com:org/repo.gitare now recognized as Git repositoriescreate_project()can now auto-detect VCS type for these URLsAddresses issues reported in vcspull#49 and vcspull#426
libvcs 0.35.1 (2025-06-21)ΒΆ
Bug fixesΒΆ
DevelopmentΒΆ
libvcs 0.35.0 (2025-02-22)ΒΆ
Breaking changesΒΆ
run() now uses text=True (#485)ΒΆ
This means that unicode, not bytes, will be used for running subprocess
commands in libvcs. If there are any compatibility issues with this, please file
a ticket.
DevelopmentΒΆ
chore: Implement PEP 563 deferred annotation resolution (#483)ΒΆ
Add
from __future__ import annotationsto defer annotation resolution and reduce unnecessary runtime computations during type checking.Enable Ruff checks for PEP-compliant annotations:
For more details on PEP 563, see: https://peps.python.org/pep-0563/
libvcs 0.34.0 (2024-11-22)ΒΆ
Maintenance only, no bug fixes, or new features
DevelopmentΒΆ
Project and package management: poetry to uv (#479)ΒΆ
uv is the new package and project manager for the project, replacing Poetry.
Build system: poetry to hatchling (#479)ΒΆ
Build system moved from poetry to hatchling.
libvcs 0.33.0 (2024-10-13)ΒΆ
New featuresΒΆ
Python 3.13 support (#477)ΒΆ
Added Python 3.13 to package trove classifiers and CI tests.
libvcs 0.32.3 (2024-10-13)ΒΆ
Bug fixesΒΆ
Pytest fixtures
hg_remote_repo_single_commit_post_init()andgit_remote_repo_single_commit_post_init()now support passingenvfor VCS configuration.Both functions accept
hgconfigandgitconfigfixtures, now applied in thehg_repoandgit_repofixtures.
libvcs 0.32.2 (2024-10-13)ΒΆ
Bug fixesΒΆ
Pytest fixtures:
git_repoandhg_repo: Set configuration for both fixtures.
libvcs 0.32.1 (2024-10-12)ΒΆ
Revert accidental commitΒΆ
Update to commands for Git from #465 were pushed to trunk before being prepared (even for experimental use).
libvcs 0.32.0 (2024-10-12)ΒΆ
Breaking changesΒΆ
pytest fixtures: Session-scoped hgconfig and gitconfig (#475)ΒΆ
These are now set by set_hgconfig and set_gitconfig, which set HGRCPATH and GIT_CONFIG, instead of overriding HOME.
DocumentationΒΆ
Updates for pytest plugin documentation.
libvcs 0.31.0 (2024-10-12)ΒΆ
Breaking changesΒΆ
pytest plugin: Improve performacne via session-based scoping (#472)ΒΆ
Improved test execution speed by over 54% by eliminated repetitive repository reinitialization between test runs. Git, Subversion, and Mercurial repositories are now cached from an initial starter repository
pytest fixtures: git_local_clone renamed to example_git_repo (#468)ΒΆ
Renamed git_local_clone to example_git_repo for better understandability in
documentation / doctests.
cmd: Listing method renamed (#466)ΒΆ
libvcs.cmd.git.GitCmd._list()->libvcs.cmd.git.Git.ls()libvcs.cmd.svn.Svn._list()->libvcs.cmd.svn.Svn.ls()
libvcs 0.30.1 (2024-06-18)ΒΆ
Bug FixesΒΆ
TestsΒΆ
DocumentationΒΆ
README: Overhaul and fixes
libvcs 0.30.0 (2024-06-18)ΒΆ
New featuresΒΆ
urls: AWS CodeCommit support (#443)ΒΆ
Support for AWS CodeCommit URL patterns. Examples:
HTTPS:
https://git-codecommit.us-east-1.amazonaws.com/v1/repos/testSSH:
ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/testHTTPS (GRC):
codecommit::us-east-1://testcodecommit://test
Breaking changesΒΆ
urls: Variable changes (#463)ΒΆ
RE_PIP_REVmoved fromlibvcs.url.gittolibvcs.url.constants.Regex pattern for user (e.g.,
git@) decoupled toRE_USER.RE_PATHandSCP_REGEX(nowRE_SCP) no longer include user regex patternExisting patterns now use
RE_USERexplicitly.
REGEX_SCPrenamed toRE_SCPfor consistency.
DocumentationΒΆ
Automatically linkify links that were previously only text.
Fix docstrings in
query_listforMultipleObjectsReturnedandObjectDoesNotExist.
DevelopmentΒΆ
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 (#460)
via ruff 0.4.2.
libvcs 0.29.0 (2024-03-24)ΒΆ
Maintenance only, no bug fixes, or new features
DevelopmentΒΆ
Aggressive automated lint fixes via
ruff(#458)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
poetry: 1.7.1 -> 1.8.1
See also: https://github.com/python-poetry/poetry/blob/1.8.1/CHANGELOG.md
-
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.2 (2024-02-17)ΒΆ
FixesΒΆ
TestingΒΆ
libvcs 0.28.1 (2024-02-08)ΒΆ
PackagingΒΆ
libvcs 0.28.0 (2024-02-07)ΒΆ
ImprovementΒΆ
libvcs 0.27.0 (2024-02-06)ΒΆ
DevelopmentΒΆ
-
Add flake8-commas (COM)
Add flake8-builtins (A)
Add flake8-errmsg (EM)
CIΒΆ
Move CodeQL from advanced configuration file to GitHubβs default
libvcs 0.26.0 (2023-11-26)ΒΆ
Breaking changesΒΆ
Bug fixesΒΆ
DevelopmentΒΆ
DocumentationΒΆ
libvcs 0.25.1 (2023-11-23)ΒΆ
PackagingΒΆ
Move
gp-libstotestdependencies
libvcs 0.25.0 (2023-11-19)ΒΆ
Maintenance only, no bug fixes, or new features
PackagingΒΆ
Poetry: 1.6.1 -> 1.7.0
See also: https://github.com/python-poetry/poetry/blob/1.7.0/CHANGELOG.md
Move formatting from
blacktoruff format(#448)This retains the same formatting style of
blackwhile eliminating a dev dependency by using our existing rust-basedrufflinter.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.
DevelopmentΒΆ
CI: Update action package to fix warnings
dorny/paths-filter: 2.7.0 -> 2.11.1
libvcs 0.24.0 (2023-10-22)ΒΆ
Bug fixesΒΆ
PackagingΒΆ
DevelopmentΒΆ
libvcs 0.23.0 (2023-08-20)ΒΆ
Maintenance only, no bug fixes, or new features
DevelopmentΒΆ
Post-release: v0.23.0post0 (2023-08-20)ΒΆ
Fixes code comments cleaned up by
ruff, but missed in QA. In the future, even when using an automated tool, we will review more thoroughly.
libvcs 0.22.2 (2023-08-20)ΒΆ
Maintenance only, no bug fixes, or new features
DevelopmentΒΆ
SubprocessCommand: Typing fix fortextparam. Found via mypy(1).
libvcs 0.22.1 (2023-05-28)ΒΆ
Maintenance only, no bug fixes, or new features
DevelopmentΒΆ
Add back
blackfor formattingThis is still necessary to accompany
ruff, until it replaces black.
libvcs 0.22.0 (2023-05-27)ΒΆ
Maintenance only, no bug fixes, or new 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.
poetry: 1.4.0 -> 1.5.0
See also: https://github.com/python-poetry/poetry/releases/tag/1.5.0
libvcs 0.21.2 (2023-04-07)ΒΆ
DevelopmentΒΆ
Update mypy to 1.2.0
FixesΒΆ
SkipDefaultFieldsReprMixin: Fix typing for mypy 1.2.0
libvcs 0.21.1 (2023-03-15)ΒΆ
FixesΒΆ
libvcs 0.21.0 (2023-03-15)ΒΆ
NewΒΆ
Bug fixesΒΆ
libvcs 0.20.0 (2022-10-31)ΒΆ
Whatβs newΒΆ
Python 3.11 support (#433)ΒΆ
Official support for python 3.11
URLs: Mapping now class attributes (#433)ΒΆ
URL.rule_map is now a class attribute rather than a dataclass attribute.
File "/home/user/.python/3.11.0/lib/python3.11/dataclasses.py", line 1211, in wrap
return _process_class(cls, init, repr, eq, order, unsafe_hash,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/user/.python/3.11.0/lib/python3.11/dataclasses.py", line 959, in _process_class
cls_fields.append(_get_field(cls, name, type, kw_only))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/user/.python/3.11.0/lib/python3.11/dataclasses.py", line 816, in _get_field
raise ValueError(f'mutable default {type(f.default)} for field '
ValueError: mutable default <class 'libvcs.url.base.RuleMap'> for field rule_map is not allowed: use default_factory
libvcs 0.19.1 (2022-10-23)ΒΆ
TestsΒΆ
DocumentationΒΆ
libvcs 0.19.0 (2022-10-23)ΒΆ
New featuresΒΆ
CommandsΒΆ
Git
Support for progress bar
Add subcommands for:
stash:
Git.stash->libvcs.cmd.git.GitStashCmdremote:
Git.remote->libvcs.cmd.git.GitRemoteCmdsubmodule:
Git.submodule->libvcs.cmd.git.GitSubmoduleCmd
Added commands for:
SVN
New and improved:
Mercurial
New and improved:
SyncingΒΆ
Git, SVN, and Mercurial have moved to libvcs.cmd
libvcs 0.18.1 (2022-10-23)ΒΆ
Maintenance only release, no bug fixes, or new features
Documentation improvements
Development package updates
Add citation file (CITATION.cff)
libvcs 0.18.0 (2022-10-09)ΒΆ
New featuresΒΆ
URLsΒΆ
libvcs 0.17.0 (2022-09-25)ΒΆ
New featuresΒΆ
Breaking changesΒΆ
Matcher->Rule,MatcherRegistry->Rulesmatches->rule_mapdefault_patterns->patternsMATCHERS->RULES
ImprovementsΒΆ
pytest plugin:
create_{git,svn,hg}_remote_repo()now acceptsinit_cmd_args(list[str], default:['--bare'], #426)To not use bare, pass
init_cmd_args=None
Sync:
hg: AddHgBaseURL,HgPipURLsvn: AddSvnBaseURL,SvnPipURLURLProtocol: Fixis_validto useclassmethodAll: Fix
is_validto use default ofNoneto avoid implicitly filteringReduce duplicated code in methods by using
super()
PackagingΒΆ
Remove
.tmuxp.before-script.sh(was abefore_scriptin.tmuxp.yaml) that was unused.Move
conftest.pyto root levelCan be excluded from wheel, included in sdist
Required to satisfy pytestβs
pytest_pluginsonly being in top-level confte conftest.py files since 4.0 (see notice)Makes it possible to run
pytest README.mdwith doctest plugin
libvcs 0.16.5 (2022-09-21)ΒΆ
Bug fixesΒΆ
libvcs 0.16.4 (2022-09-18)ΒΆ
InfrastructureΒΆ
Bump poetry to 1.1.x to 1.2.x
libvcs 0.16.3 (2022-09-18)ΒΆ
Bug fixesΒΆ
TestsΒΆ
DocumentationΒΆ
InfrastructureΒΆ
libvcs 0.16.2 (2022-09-11)ΒΆ
Bug fixΒΆ
libvcs 0.16.1 (2022-09-11)ΒΆ
Bug fixΒΆ
Temporarily add Faker as a dependency (due to pytest), track longterm fix on (#411)
libvcs 0.16.0 (2022-09-11)ΒΆ
New featuresΒΆ
Added a pytest plugin. Create fresh, temporarily repos on your machine locally for git, mercurial, and svn (#409)
libvcs 0.15.0 (2022-09-11)ΒΆ
Breaking changesΒΆ
-
libvcs.parse->libvcs.urllibvcs.projects->libvcs.sync
-
BaseProject->BaseSyncMercurialProject->HgSyncSubversionProject->SvnSyncGitProject->GitSync
Deprecate custom functions in favor of standard library:
which()in favor ofshutil.which(), via #397mkdir_p()in favor ofos.makedirs()andpathlib.Path.mkdir()w/parents=True, via #399
DevelopmentΒΆ
Remove
.pre-commit-config.yaml: This can be done less obtrusively via flake8 and having the user run the tools themselves.
DocumentationΒΆ
Render changelog in
linkify_issues(#396, #403)Fix Table of contents rendering with sphinx autodoc with
sphinx_toctree_autodoc_fix(#403)Deprecate
sphinx-autoapi, per above fixing the table of contents issue (#403)This also removes the need to workaround autoapi bugs.
libvcs 0.14.0 (2022-07-31)ΒΆ
Whatβs newΒΆ
New and improved logo
Improved typings
Now
mypy --strictcompliant (#390)Parser: Experimental VCS URL parsing added (#376, #381, #384, #386):
VCS Parsers return
dataclasses.dataclass()instances. The new tools support validation, parsing, mutating and exporting into URLs consumable by the VCS.Warning
APIs are unstable and subject to break until we get it right.
-
GitBaseURL- Parse git URLs,git(1)compatibleto_url()- exportgit clone-compatible URL
GitPipURL- Pip URLs,is_valid(),to_url()GitURL- Compatibility focused,is_valid()to_url()
Detection can be extended through writing
Matchers and adding them to the classesβMatcherRegistryYou can write your own VCS parser by implementing
URLProtocol, but it would be most efficient if you studied the source of thegit(1)parser to see how itβs done.-
Breaking changesΒΆ
#391 Removed
flatkeyword argument forlibvcs.sync.git.GitSync. This was unused and the equivalent can be retrieved via.to_dict()onGitRemote#379 Support for
git+gitURLs removed. Pip removed these in 21.0 due to them being insecure [1]#372 Typings moved from
libvcs.types->libvcs._internal.types#377 Remove deprecated functions and exceptions
Removed
libvcs.shortcutsRemoved
libvcs.shortcuts.create_project_from_pip_url(): This will be replaced in future versions by #376 / parsing utilitiesMoved
libvcs.shortcuts.create_project()tolibvcs._internal.shortcuts.create_project()
Removed
libvcs.exc.InvalidPipURL
FixesΒΆ
Minor spelling fix in Gitβs
convert_pip_url()exceptionFix mercurial cloning in
libvcs.sync.hg.HgSyncBackport from 0.13.1
TypingsΒΆ
Rename
VcsLiteral->VCSLiteralBackport from 0.13.4
create_project(): Add overloads that return the typed project (e.g.,GitSync)Backport from 0.13.3
CleanupΒΆ
libvcs 0.13.6 (2022-06-18)ΒΆ
DevelopmentΒΆ
Move
libvcs.shortcutstolibvcs._internal.shortcuts
libvcs 0.13.5 (2022-06-18)ΒΆ
DevelopmentΒΆ
Note upcoming deprecation of
create_project_from_pip_urlin v0.14Note
create_projectbecoming internal API in upcoming release v0.14Fix import in
libvcs.shortcuts(in v0.14 this module will not exist)
libvcs 0.13.4 (2022-06-18)ΒΆ
TypingΒΆ
Rename
VcsLiteral->VCSLiteral
libvcs 0.13.3 (2022-06-18)ΒΆ
TypingsΒΆ
create_project(): Add overloads that return the typed project (e.g.,GitSync)
libvcs 0.13.2 (2022-06-12)ΒΆ
TypingsΒΆ
libvcs.sync.git.GitSync.remotes(): Add overload
libvcs 0.13.1 (2022-06-01)ΒΆ
FixesΒΆ
Fix mercurial cloning in
libvcs.sync.hg.HgSync
libvcs 0.13.0, βJaneβ (2022-05-30)ΒΆ
Breaking changesΒΆ
#343:
libvcs.cmd.coremoved tolibvcs._internal.runto make it more clear the API is closed.This includes
run()Before in 0.13:
from libvcs.cmd.core import run
New module in >=0.13:
from libvcs._internal.run import run
#361:
runβs params are now a pass-through tosubprocess.Popen.run(cmd, ...)is nowrun(args, ...)to matchPopenβs convention.
-
Removed
parent_dir:Before:
project.parent_dirAfter:
project.parent.path.repo_nameswitched from attribute to property
Whatβs newΒΆ
Bug fixesΒΆ
InternalsΒΆ
-
Basic mypy tests now pass
Type annotations added, including improved typings for:
make mypyandmake watch_mypyAutomatic checking on CI
#345
libvcs.utils->libvcs._internalto make it more obvious the APIs are strictly closed.StrOrPath->StrPath#336:
SubprocessCommand: Encapsulatedsubprocesscall in adataclasses.dataclass()for introspecting, modifying, mocking and controlling execution.Dataclass helper:
SkipDefaultFieldsReprMixinSkip default fields in object representations.
Credit: Pietro Oldrati, 2022-05-08, StackOverflow Post
DocumentationΒΆ
PackagingΒΆ
Update description and keywords
libvcs 0.12.4 (2022-05-30)ΒΆ
libvcs 0.12.3 (2022-05-28)ΒΆ
Bug fixesΒΆ
libvcs 0.12.2 (2022-05-10)ΒΆ
PackagingΒΆ
Update trove classifiers
libvcs 0.12.1 (2022-05-10)ΒΆ
PackagingΒΆ
Add keywords and update subscription
Add
py.typedfile tolibvcs/py.typed
libvcs 0.12.0, βNimbusβ (2022-04-24)ΒΆ
BreakingΒΆ
GitRepo,SVNRepo,MercurialRepo,BaseRepohave been renamed toGitSync,SVNProject,HgSync,BaseSync(#327)GitSync,SVNProject,HgSync,BaseSynchave been moved tolibvcs.sync.{module}.{Module}Projectrepo_dirparam is renamed todir:Before:
GitSync(url='...', repo_path='...')After:
GitSync(url='...', path='...')dirtopathlib,BaseSync.path->BaseSync.pathLogging functions moved to
libvcs.sync.base.BaseSync.log(#322)Rename
ProjectLoggingAdaptertoCmdLoggingAdapterCmdLoggingAdapter: Renamerepo_nameparam tokeywordcreate_repo->create_projectGitRemoteandGitStatus: Move todataclasses.dataclass()(#329)
Whatβs newΒΆ
Commands: Experimental command wrappers added (#319):
libvcs.sync.git.GitSyncnow accepts remotes in__init__repo = GitSync( url="https://github.com/vcs-python/libvcs", repo_path=checkout, remotes={ 'gitlab': 'https://gitlab.com/vcs-python/libvcs', } )
repo = GitSync( url="https://github.com/vcs-python/libvcs", repo_path=checkout, remotes={ 'gitlab': { 'fetch_url': 'https://gitlab.com/vcs-python/libvcs', 'push_url': 'https://gitlab.com/vcs-python/libvcs', }, } )
libvcs.sync.git.GitSync.update_repo()now acceptsset_remotes=True
CompatibilityΒΆ
DevelopmentΒΆ
CI: Use poetry caching from @actions/setup v3.1, (#316)
New constants for
str-> class mappingsRemove tox and tox-poetry-installer. It turns out installing poetry inside a poetry project doesnβt work well. (
poetry update,poetry publish, etc. commands would fail)Add doctest w/ pytest + doctest, (#321).
Publish to PyPI via CI when git tags are set.
DocumentationΒΆ
libvcs 0.11.1 (2022-03-12)ΒΆ
CVE-2022-21187: Command Injection with mercurial repositoriesΒΆ
By setting a mercurial URL with an alias it is possible to execute arbitrary shell commands via
.obtain()or in the case of uncloned destinations,.update_repo(). (#306, credit: Alessio Della Libera)See also: cve.mitre.org, nvd.nist.gov, snyk.
DevelopmentΒΆ
DocumentationΒΆ
Move to furo theme
Root:
make start_docs,make design_docsdocs/:
make start,make design
libvcs 0.11.0, βPhebeβ (2022-01-08)ΒΆ
CompatibilityΒΆ
DevelopmentΒΆ
libvcs 0.10.1 (2021-11-30)ΒΆ
libvcs 0.10 (2021-06-16)ΒΆ
#311: Convert to markdown
libvcs 0.9 (2021-06-14)ΒΆ
Generally speaking, refactor / magic is in the process of being stripped out in the next few releases. The API is subject to change significantly in pre-1.0 builds.
#271:
Big version bump (0.5 -> 0.9)
Remove Python 2.7 support
Add annotations
Change
libvcs.git.GitRepo.status()to returnGitStatusnamed tupleBreaking change: Repo objects now require
repo_dirto be passedUpdate black to 21.6b0
libvcs 0.5 (2020-08-11)ΒΆ
[refactor] #267 overhaul docs
Move sphinx api format to Numpy-style
Move from reStructuredText to Markdown (via recommonmark). The master plan is to eliminate docutils and sphinx as a bottleneck completely in favor of something else (e.g., gatsby with a source that inspects our modules and can source intersphinx)
Move from RTD to GitHub Action, full support of poetry extras packages, deploys straight to S3 and CloudFront
#270 Build and publish packages via poetry
#270 Overhaul development docs
libvcs 0.4.4 (2020-08-05)ΒΆ
#268
libvcs.base.BaseRepo:no longer sets
**kwargsto dictionary on the objectremove
__slot__and renamenameattribute torepo_name
libvcs 0.4.3 (2020-08-01)ΒΆ
[bug]
libvcs.git.extract_status()Fix issue capturing branch names with special characters
libvcs 0.4.2 (2020-08-01)ΒΆ
[bug]
libvcs.git.GitRepo.get_current_remote_name()Handle case where upstream is unpushed[feature]
libvcs.git.GitRepo.status()- Retrieve status of repo[feature]
libvcs.git.extract_status()- Return structured info fromgit status
libvcs 0.4.1 (2020-08-01)ΒΆ
Remove log statement
libvcs 0.4 (2020-08-01)ΒΆ
Breaking changes
Internal functionality relating to remotes have been reorganized to avoid implicit behavior.
~libvcs.git.GitRepomethods have been renamed, they will be deprecated in 0.5:GitRepo.remotes_getrenamed tolibvcs.git.GitRepo.remotes()GitRepo.remote_getrenamed tolibvcs.git.GitRepo.remote()GitRepo.remote_setrenamed tolibvcs.git.GitRepo.set_remote()
~libvcs.git.GitRepotheremotesargument is deprecated and no longer used. Uselibvcs.git.GitRepo.set_remoteafter repo is instantiated.libvcs.git.GitRepo.obtainno longer set remotes based on adictpassed to~libvcs.git.GitRepo. This was deemed to specialized / implicit.libvcs.git.GitRepo.set_remote()(formerlyremote_set)The new method accepts
nameandurl(in that order).nameno longer has a default value (wasorigin).libvcs.git.GitRepo.remote()(formerlyremote_get):remoteargument renamed toname. It will be removed in 0.5.0The default value of
'origin'has been removedNow returns
~libvcs.git.GitRemote(a :pycollections.namedtupleobject)The tuple is similar to the old output, except there is an additional value at the beginning, the name of the remote, e.g.
('origin', '<fetch_url>', '<push_url>')
libvcs.git.GitRepo.remotes()(formerlyremotes_get) are now methods instead of properties.Passing
flat=Trueto return adictoftupleinstead ofdictNew method:
libvcs.git.GitRepo.get_git_version()New method:
libvcs.git.GitRepo.get_current_remote_name()
libvcs 0.3.3 (2020-07-29)ΒΆ
Remove f-string from test
libvcs.git.GitRepo.obtainOverwrite remote if exists
libvcs 0.3.2 (2020-07-26)ΒΆ
258libvcs.git.GitRepo.remote_setFix updating of remote URLs
Add new param:
overwrite, usage:repo.remote_set(url, 'origin', overwrite=True)
libvcs 0.3.1post1 (2020-07-26)ΒΆ
Fix version in pyroject.toml
Update developer docs
libvcs 0.3.1 (2020-07-25)ΒΆ
Fix issue with subprocess.Popen loud warning on Python 3.8
Sort imports
Add isort package, isort configuration in setup.cfg, and
make isorttask to Makefile.Add
project_urlsto setup.py
libvcs 0.3.0 (2018-03-12)ΒΆ
Move vcspull to the vcs-python organization
Fix issue where VCS objects failed to set attribute in Ubuntu 18.04.
libvcs 0.2.3 (2016-12-22)ΒΆ
Update documentation to point to libvcs.git-pull.com
Switch doc theme to alabaster
Pin and update libraries via pyup
update vulture 0.8.1 to 0.11
update flake8 from 2.5.4 to 3.2.1
update pytest-mock from 1.4.0 to 1.5.0
update pytest from 3.0.4 to 3.0.5
pin alabaster to 0.7.9
pin sphinx to 1.5.1
libvcs 0.2.2 (2016-11-23)ΒΆ
Fix bug with unused
supportmodule in vcspull. See vcspull#43
libvcs 0.2.1 (2016-09-13)ΒΆ
Update pytest to 3.0.2, remove unused pytest-raisesregexp dependency.
Fix bug in
whichwhen executable is not found. Allow specifying search paths manually.Better support for missing VCS when testing on git and subversion.
libvcs 0.2.0 (2016-06-24)ΒΆ
libvcs 0.1.7 (2016-06-21)ΒΆ
7Addcheck_returncodeproperty to run, thanks @jcfr8Remove all cases ofrun_buffered/ buffering from the library.
libvcs 0.1.6 (2016-06-21)ΒΆ
5Remove colorama dependency6Remove log module. Logging defaults.The library user can still use formatters and set log levels, for an example, see the vcspull logging setup.
An example:
import logging # your app log.setLevel(level) log.addHandler(logging.StreamHandler()) # vcslib logging options vcslogger = logging.getLogger('libvcs') vcslogger.propagate = False # don't pass libvcs settings up scope vcslogger.addHandler(logging.StreamHandler()) vcslogger.setLevel(level)You can also use
logging.Formattervariablesrepo_nameandbin_namewith repos:repo_channel = logging.StreamHandler() repo_formatter = logging.Formatter( '[%(repo_name)s] (%(bin_name)s) %(levelname)1.1s: %(message)s' ) repo_channel.setFormatter(repo_formatter) vcslogger = logging.getLogger('libvcs') vcslogger.propagate = False # don't pass libvcs settings up scope vcslogger.addHandler(repo_channel) vcslogger.setLevel(level)
libvcs 0.1.5 (2016-06-21)ΒΆ
Fix issue where repo context wouldnβt pass to repo logging adapter
libvcs 0.1.4 (2016-06-20)ΒΆ
Fix print_stdout_on_progress_end signature in git update
libvcs 0.1.3 (2016-06-20)ΒΆ
create_repofunction for regular vcs urlsAPI docs updated
libvcs 0.1.2 (2016-06-20)ΒΆ
change signature on
create_repo_from_pip_urlto acceptpip_urlinstead ofurl.Baseto acceptrepo_dirinstead ofnameandparent_dir.
libvcs 0.1.1 (2016-06-20)ΒΆ
remove unneeded pyyaml, kaptan and click dependencies
libvcs 0.1.0 (2016-06-20)ΒΆ
libvcs split from vcspull