Package: libvcs
libvcs·libvcs is a lite,typed, pythonic tool box for
detection and parsing of URLs, commanding, and syncing withgit,hg, andsvn. Powersvcspull.OverviewSupports Python 3.9 and aboveFeatures for Git, Subversion, and Mercurial:Detect and parseVCS URLsCommandVCS via python APISyncrepos locallyTest fixturesfor temporary local repos and working copiesToget started, see thequickstartfor more.$pipinstall--userlibvcsURL ParserYou can validate and parse Git, Mercurial, and Subversion URLs throughlibvcs.url:Validate:>>>fromlibvcs.url.gitimportGitURL>>>GitURL.is_valid(url='https://github.com/vcs-python/libvcs.git')TrueParse and adjust a Git URL:>>>fromlibvcs.url.gitimportGitURL>>>git_location=GitURL(url='git@github.com:vcs-python/libvcs.git')>>>git_locationGitURL(url=git@github.com:vcs-python/libvcs.git,user=git,hostname=github.com,path=vcs-python/libvcs,suffix=.git,rule=core-git-scp)Switch repo libvcs -> vcspull:>>>fromlibvcs.url.gitimportGitURL>>>git_location=GitURL(url='git@github.com:vcs-python/libvcs.git')>>>git_location.path='vcs-python/vcspull'>>>git_location.to_url()'git@github.com:vcs-python/vcspull.git'# Switch them to gitlab:>>>git_location.hostname='gitlab.com'# Export to a `git clone` compatible URL.>>>git_location.to_url()'git@gitlab.com:vcs-python/vcspull.git'See more in theparser document.CommandsSimplesubprocesswrappers aroundgit(1),hg(1),svn(1). Here isGitw/Git.clone:importpathlibfromlibvcs.cmd.gitimportGitgit=Git(path=pathlib.Path.cwd()/'my_git_repo')git.clone(url='https://github.com/vcs-python/libvcs.git')SyncCreate aGitSyncobject of the project to inspect / checkout / update:importpathlibfromlibvcs.sync.gitimportGitSyncrepo=GitSync(url="https://github.com/vcs-python/libvcs",path=pathlib.Path().cwd()/"my_repo",remotes={'gitlab':'https://gitlab.com/vcs-python/libvcs'})# Update / clone repo:>>>repo.update_repo()# Get revision:>>>repo.get_revision()u'5c227e6ab4aab44bf097da2e088b0ff947370ab8'Pytest pluginlibvcs also provides a test rig for local repositories. It automatically can provide clean local
repositories and working copies for git, svn, and mercurial. They are automatically cleaned up after
each test.It works by bootstrapping a temporary$HOMEenvironment in aTmpPathFactoryfor automatic cleanup.importpathlibfromlibvcs.pytest_pluginimportCreateProjectCallbackFixtureProtocolfromlibvcs.sync.gitimportGitSyncdeftest_repo_git_remote_checkout(create_git_remote_repo:CreateProjectCallbackFixtureProtocol,tmp_path:pathlib.Path,projects_path:pathlib.Path,)->None:git_server=create_git_remote_repo()git_repo_checkout_dir=projects_path/"my_git_checkout"git_repo=GitSync(path=str(git_repo_checkout_dir),url=f"file://{git_server!s}")git_repo.obtain()git_repo.update_repo()assertgit_repo.get_revision()=="initial"assertgit_repo_checkout_dir.exists()assertpathlib.Path(git_repo_checkout_dir/".git").exists()Learn more on the docs athttps://libvcs.git-pull.com/pytest-plugin.htmlDonationsYour donations fund development of new features, testing and support. Your money will go directly to
maintenance and development of the project. If you are an individual, feel free to give whatever
feels right for the value you get out of the project.See donation options athttps://www.git-pull.com/support.html.More informationPython support: 3.9+, pypyVCS supported: git(1), svn(1), hg(1)Source:https://github.com/vcs-python/libvcsDocs:https://libvcs.git-pull.comChangelog:https://libvcs.git-pull.com/history.htmlAPIs for git, hg, and svn:libvcs.url: URL Parserlibvcs.cmd: Commandslibvcs.sync: Clone and updateIssues:https://github.com/vcs-python/libvcs/issuesTest Coverage:https://codecov.io/gh/vcs-python/libvcspypi:https://pypi.python.org/pypi/libvcsOpen Hub:https://www.openhub.net/p/libvcsLicense:MIT.