synchronize projects via yaml/json manifest. built on libvcs

Overview

vcspull - synchronize your repos. built on libvcs

Python Package Docs Build Status Code Coverage License

Manage your commonly used repos from YAML / JSON manifest(s). Compare to myrepos.

Great if you use the same repos at the same locations across multiple machines or want to clone / update a pattern of repos without having to cd into each one.

  • clone /update to the latest repos with $ vcspull
  • use filters to specify a location, repo url or pattern in the manifest to clone / update
  • supports svn, git, hg version control systems
  • automatically checkout fresh repositories
  • Documentation and Examples.
  • supports pip-style URL's (RFC3986-based url scheme)

how to

install

$ pip install --user vcspull

configure

add repos you want vcspull to manage to ~/.vcspull.yaml.

vcspull does not currently scan for repos on your system, but it may in the future

~/code/:
  flask: "git+https://github.com/mitsuhiko/flask.git"
~/study/c:
  awesome: "git+git://git.naquadah.org/awesome.git"
~/study/data-structures-algorithms/c:
  libds: "git+https://github.com/zhemao/libds.git"
  algoxy:
    repo: "git+https://github.com/liuxinyu95/AlgoXY.git"
    remotes:
      tony: "git+ssh://[email protected]/tony/AlgoXY.git"

(see the author's .vcspull.yaml, more examples.)

next, on other machines, copy your $HOME/.vcspull.yaml file or $HOME/.vcspull/ directory them and you can clone your repos consistently. vcspull automatically handles building nested directories. Updating already cloned/checked out repos is done automatically if they already exist.

clone / update your repos

$ vcspull

keep nested VCS repositories updated too, lets say you have a mercurial or svn project with a git dependency:

external_deps.yaml in your project root, (can be anything):

./vendor/:
  sdl2pp: "git+https://github.com/libSDL2pp/libSDL2pp.git"

clone / update repos:

$ vcspull -c external_deps.yaml

See the Quickstart for more.

pulling specific repos

have a lot of repos?

you can choose to update only select repos through fnmatch patterns. remember to add the repos to your ~/.vcspull.{json,yaml} first.

The patterns can be filtered by by directory, repo name or vcs url.

+ :// $ vcspull "git+*" # any git repo with python in the vcspull $ vcspull "git+*python* # any git repo with django in the vcs url $ vcspull "git+*django*" # all repositories in your ~/code directory $ vcspull "$HOME/code/*"">
# any repo starting with "fla"
$ vcspull "fla*"
# any repo with django in the name
$ vcspull "*django*"

# search by vcs + url
# since urls are in this format 
     
      +
      
       ://
       
      
     
$ vcspull "git+*"

# any git repo with python in the vcspull
$ vcspull "git+*python*

# any git repo with django in the vcs url
$ vcspull "git+*django*"

# all repositories in your ~/code directory
$ vcspull "$HOME/code/*"

image

Donations

Your 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 at https://git-pull.com/support.html.

More information

Comments
  • add python script to generate config based on gitlab group

    add python script to generate config based on gitlab group

    @tony this is the python version of the script we added with #336 for #334 .

    It has the same usages as for the bash script, but it also validates that it can write the file and will ask the user if it should overwrite an existing config.

    As I said before I'm not a python expert, so if you have any improvement ideas please let me know.

    Also I wasn't sure about any style guides this project follows. If you name me the guide I'm happy to format the code accordingly.

    Best regards Segaja

    opened by aschleifer 12
  • simplified git config causes remote upstream rewrite on every run

    simplified git config causes remote upstream rewrite on every run

    If I use a simple config entry like:

    ~/test/cvspull:
      mypackage: 'git+ssh://[email protected]/mygroup/mypackage.git'
    

    I always see the line about Updating remote origin:

    Updating remote origin (ssh://[email protected]/mygroup/mypackage.git) with git+ssh://[email protected]/mygroup/mypackage.git
    

    which then in turn causes a retry of the update.

    To fix this issue I have to use a config like this:

    ~/test/cvspull:
      mypackage:
        url: 'git+ssh://[email protected]/mygroup/mypackage.git'
        remotes:
          origin: 'ssh://[email protected]/mygroup/mypackage.git'
    

    This then works, but I would like to have a more compact/simplified config with only one line per repo.

    (repogroup and name have been abstracted, as the used gitlab is internal ;) )

    Best regards Segaja

    bug 
    opened by aschleifer 9
  • Improve svn and git support

    Improve svn and git support

    This PR updates vcspull so that it can support:

    • git:
      • checkout of specific revision or git_tag with exhaustive error checking
      • specifying options git_remote_name and tls_verify as keyword args to create_repo
    • svn:
      • specifying svn_username and svn_password as keyword args to create_repo (original behavior where username/password are extracted from url is still available)
      • checking out a specific svn revision
      • specifying svn_trust_cert as keyword args to create_repo

    Remaining:

    • [ ] Mock tests for svn and git
    enhancement 
    opened by jcfr 8
  • Bump minimum python version

    Bump minimum python version

    Python 3.9 benefits vcspull and libvcs could use:

    Analysis of distros

    • Debian python 3.9

      Bullseye is the codename for Debian 11, released on 2021-08-14. https://wiki.debian.org/DebianBullseye Python 3, 3.9.1

    • RedHat RHEL uses 3.6 by default, has up to 3.9

      You can install Python 3.8 and Python 3.9, including packages built for either version, in parallel with Python 3.6 on the same system, with the exception of the mod_wsgi module. Due to a limitation of the Apache HTTP Server, only one of the python3-mod_wsgi, python38-mod_wsgi, or python39-mod_wsgi packages can be installed on a system. source

    opened by tony 6
  • add script to generate config based on a gitlab group

    add script to generate config based on a gitlab group

    As discussed in #334 this is a first version of a shell script to add a generator script.

    It relies on the binaries curl and jq to be present.

    Most likely there will be a future version of this written in python.

    opened by aschleifer 5
  • TypeError: cannot concatenate 'str' and 'list' objects

    TypeError: cannot concatenate 'str' and 'list' objects

    Hi ,

    I have this problem :

    $ vcspull Traceback (most recent call last): File "/usr/lib64/python2.7/logging/init.py", line 851, in emit msg = self.format(record) File "/usr/lib64/python2.7/logging/init.py", line 724, in format return fmt.format(record) File "/usr/lib64/python2.7/site-packages/vcspull/log.py", line 76, in format prefix = self.template(record) % record.dict File "/usr/lib64/python2.7/site-packages/vcspull/log.py", line 115, in debug_log_template reset + levelname + asctime + name + module_funcName + lineno + reset TypeError: cannot concatenate 'str' and 'list' objects Logged from file cli.py, line 115

    Thanks.

    opened by ghost 5
  • dead link in documentation

    dead link in documentation

    https://github.com/vcs-python/vcspull/blob/master/docs/config-generation.md?plain=1#L112

    The link in this line leads me to a "404 Not Found"

    opened by Segaja 4
  • Switch to MIT license

    Switch to MIT license

    @jcfr Are you ok with licensing your contributions to this project and libvcs as MIT?

    The current license for vcspull and libvcs is BSD 3-Clause.

    If you agree to licensing your contribution(s) to vcspull and libvcs under MIT, please reply if its ok.

    (doing this for another project too https://github.com/tony/libtmux/issues/46 https://github.com/tony/tmuxp/issues/264)

    opened by tony 4
  • build(deps): bump certifi from 2022.9.24 to 2022.12.7

    build(deps): bump certifi from 2022.9.24 to 2022.12.7

    Bumps certifi from 2022.9.24 to 2022.12.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 3
  • Bump pytest-cov from 2.8.1 to 2.10.0

    Bump pytest-cov from 2.8.1 to 2.10.0

    Bumps pytest-cov from 2.8.1 to 2.10.0.

    Changelog

    Sourced from pytest-cov's changelog.

    2.10.0 (2020-06-12)

    • Improved the --no-cov warning. Now it's only shown if --no-cov is present before --cov.
    • Removed legacy pytest support. Changed setup.py so that pytest>=4.6 is required.

    2.9.0 (2020-05-22)

    • Fixed RemovedInPytest4Warning when using Pytest 3.10. Contributed by Michael Manganiello in #354.
    • Made pytest startup faster when plugin not active by lazy-importing. Contributed by Anders Hovmöller in #339.
    • Various CI improvements. Contributed by Daniel Hahler in #363 and #364.
    • Various Python support updates (drop EOL 3.4, test against 3.8 final). Contributed by Hugo van Kemenade in #336 and #367.
    • Changed --cov-append to always enable data_suffix (a coverage setting). Contributed by Harm Geerts in #387.
    • Changed --cov-append to handle loading previous data better (fixes various path aliasing issues).
    • Various other testing improvements, github issue templates, example updates.
    • Fixed internal failures that are caused by tests that change the current working directory by ensuring a consistent working directory when coverage is called. See #306 and coveragepy#881
    Commits
    • 694f7fd Bump version: 2.9.0 → 2.10.0
    • 4cbd3bb Update changelog.
    • 45731f3 Rework assertion to work on old pytest.
    • 1689c9a Implement better --no-cov warning: only do it if --no-cov is present before -...
    • c5623ec Bump version: 2.8.1 → 2.9.0
    • cd6ca2e Update changelog.
    • daacd76 Skip horrendous breakage on pypy and windows.
    • b1ac198 More blissful ignorance (windows doesn't allow deleting while in cwd use).
    • 2612d2c Make test portable.
    • fa4bb12 Remove unused var.
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 3
  • Bump sphinx from 2.3.1 to 3.1.1

    Bump sphinx from 2.3.1 to 3.1.1

    Bumps sphinx from 2.3.1 to 3.1.1.

    Changelog

    Sourced from sphinx's changelog.

    Release 3.1.1 (released Jun 14, 2020)

    Incompatible changes

    • #7808: napoleon: a type for attribute are represented as typed field

    Features added

    • #7807: autodoc: Show detailed warning when type_comment is mismatched with its signature

    Bugs fixed

    • #7808: autodoc: Warnings raised on variable and attribute type annotations
    • #7802: autodoc: EOFError is raised on parallel build
    • #7821: autodoc: TypeError is raised for overloaded C-ext function
    • #7805: autodoc: an object which descriptors returns is unexpectedly documented
    • #7807: autodoc: wrong signature is shown for the function using contextmanager
    • #7812: autosummary: generates broken stub files if the target code contains an attribute and module that are same name
    • #7808: napoleon: Warnings raised on variable and attribute type annotations
    • #7811: sphinx.util.inspect causes circular import problem

    Release 3.1.0 (released Jun 08, 2020)

    Dependencies

    • #7746: mathjax: Update to 2.7.5

    Incompatible changes

    • #7477: imgconverter: Invoke "magick convert" command by default on Windows

    Deprecated

    • The first argument for sphinx.ext.autosummary.generate.AutosummaryRenderer has been changed to Sphinx object
    • sphinx.ext.autosummary.generate.AutosummaryRenderer takes an object type as an argument
    • The ignore argument of sphinx.ext.autodoc.Documenter.get_doc()
    • The template_dir argument of sphinx.ext.autosummary.generate. AutosummaryRenderer
    ... (truncated)
    Commits
    • e7c2949 Bump to 3.1.1 final
    • d2cec67 Merge pull request #7831 from tk0miya/7807_contextmanager
    • 941e340 Merge branch '3.1.x' into 7807_contextmanager
    • b567721 Merge pull request #7829 from tk0miya/7805_retval_of_descriptors
    • 6c3db6d Fix #7805: autodoc: an object which descriptors returns is documented
    • 02acad6 Merge pull request #7827 from tk0miya/7808_napoleon_nitpicky_warning
    • 6eb43ba Merge pull request #7823 from tk0miya/7821_overload_builtin_function
    • d77622b Fix #7807: autodoc: wrong signature is shown for the function using contextma...
    • b3affa6 Fix autodoc: Show detailed warning when type_comment is mismatched (refs: #7807)
    • e983189 Update CHANGES
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 3
  • Pass through for commands, e.g. `--git.fetch=

    Pass through for commands, e.g. `--git.fetch="--all"`

    • [ ] --git.fetch="args"as a pass-through for any custom options
      • --git.fetch="--all"

    cc @jfpedroza

    I'm extracting this out of #400

    opened by tony 0
  • Dataclass-based config

    Dataclass-based config

    Changes

    • New config object: Config
      • Raw config from yaml: from_yaml_file(file_path: pathlib.Path, cwd=pathlib.Path.cwd())
      • repo_dict_map: Internal mapping of configs after expansion and processing in environment
      • repos: A list of GitSync, SvnSync, HgSync objects
    opened by tony 1
  • Idea: `$ vcspull sync`: Silent by default?

    Idea: `$ vcspull sync`: Silent by default?

    Re: Assume #388 fixed

    $ vcspull sync
    
    $ vcspull sync
    
    $ vcspull sync repo1 repo2
    

    For the existing behavior, pass something like -v or --progress

    vcspull sync repo1 repo1 --progress
    
    opened by tony 3
  • Configuration: schema and migration system

    Configuration: schema and migration system

    config - system for deprecating old configs

    config.schema - schema

    • dataclasses
    • typed dicts
    • shapes
    • whatever it takes to take a dict-like structure

    config.v - old versions config/v/ - an old version is tagged whenever new one is config/v/tests/test_config.py tests / assertions for schema to migrate to new one, load old ones with deprecation warning

    opened by tony 0
Releases(v1.17.0)
  • v1.17.0(Oct 23, 2022)

    Internal

    • libvcs 0.19.0 by @tony in https://github.com/vcs-python/vcspull/pull/408

    Full Changelog: https://github.com/vcs-python/vcspull/compare/v1.16.0...v1.17.0

    Source code(tar.gz)
    Source code(zip)
  • v1.16.0(Oct 23, 2022)

    • libvcs: Bump to v0.18.0

      URL matching fix

    • Internal [CLI]: Param naming tweak by @tony in https://github.com/vcs-python/vcspull/pull/406

    Full Changelog: https://github.com/vcs-python/vcspull/compare/v1.15.8...v1.16.0

    Source code(tar.gz)
    Source code(zip)
  • v1.15.1(Oct 3, 2022)

  • v1.15.0(Oct 2, 2022)

    Eliminate dependency on click

    • Click -> argparse by @tony in https://github.com/vcs-python/vcspull/pull/400

    Full Changelog: https://github.com/vcs-python/vcspull/compare/v1.14.0...v1.15.0

    Source code(tar.gz)
    Source code(zip)
  • v1.15.0a0(Oct 2, 2022)

    Eliminate dependency on click

    • Click -> argparse by @tony in https://github.com/vcs-python/vcspull/pull/400

    Full Changelog: https://github.com/vcs-python/vcspull/compare/v1.14.0...v1.15.0a0

    Source code(tar.gz)
    Source code(zip)
  • v1.14.0(Oct 1, 2022)

    Internal: Packaging

    • Move from kaptan to ConfigReader by @tony in https://github.com/vcs-python/vcspull/pull/397

    Internal: Tests

    • Deprecate local fixtures for libvcs pytest plugin by @tony in https://github.com/vcs-python/vcspull/pull/398
    • refactor!(conftest): Move to root directory by @tony in https://github.com/vcs-python/vcspull/pull/399

    Full Changelog: https://github.com/vcs-python/vcspull/compare/v1.13.0...v1.14.0

    Source code(tar.gz)
    Source code(zip)
  • v1.13.0(Sep 26, 2022)

    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)

    Changes

    • ci: Use setup-python v3/4's new caching system by @tony in https://github.com/vcs-python/vcspull/pull/377
    • docs: Move to sphinx-autoissues by @tony in https://github.com/vcs-python/vcspull/pull/378
    • build(deps): Add flake8-bugbear by @tony in https://github.com/vcs-python/vcspull/pull/379
    • build(deps): Add flake8-comprehensions by @tony in https://github.com/vcs-python/vcspull/pull/380
    • docs: Move to gp-libs (our internal helpers for sphinx) by @tony in https://github.com/vcs-python/vcspull/pull/381
    • Move to src/ layout by @tony in https://github.com/vcs-python/vcspull/pull/382
    • CI: Speed improvements by @tony in https://github.com/vcs-python/vcspull/pull/383
    • ci(coverage): Migrate .coveragerc to pyproject.toml by @tony in https://github.com/vcs-python/vcspull/pull/384
    • mypy annotations (basic) + libvcs update by @tony in https://github.com/vcs-python/vcspull/pull/373
    • Continue on error by default by @tony in https://github.com/vcs-python/vcspull/pull/387
    • vcspull sync: Print msg if repo lookup not in config by @tony in https://github.com/vcs-python/vcspull/pull/394
    • feat(sync): vcspull sync with no args shows help by @tony in https://github.com/vcs-python/vcspull/pull/395

    Full Changelog: https://github.com/vcs-python/vcspull/compare/v1.12.3...v1.13.0

    Source code(tar.gz)
    Source code(zip)
  • v1.12.3(Jun 11, 2022)

    Bug fixes

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

    Full Changelog: https://github.com/vcs-python/vcspull/compare/v1.12.2...v1.12.3

    Source code(tar.gz)
    Source code(zip)
  • v1.12.2(Jun 11, 2022)

    Packaging

    • Update tags and description

    Documentation

    • Update README

    Full Changelog: https://github.com/vcs-python/vcspull/compare/v1.12.1...v1.12.2

    Source code(tar.gz)
    Source code(zip)
  • v1.12.1(Jun 11, 2022)

  • v1.12.0(Jun 11, 2022)

    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)

    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 libtmux

    PRs

    • codeql-analysis by @tony in https://github.com/vcs-python/vcspull/pull/342
    • pyupgrade @ 3.7 by @tony in https://github.com/vcs-python/vcspull/pull/353
    • Port latest test updates from libvcs by @tony in https://github.com/vcs-python/vcspull/pull/354
    • Drop 3.7 and 3.8 by @tony in https://github.com/vcs-python/vcspull/pull/356
    • Test cleanup by @tony in https://github.com/vcs-python/vcspull/pull/359
    • fix(git): Fix refetching of remotes by @tony in https://github.com/vcs-python/vcspull/pull/365
    • refactor!: Move to XDG_CONFIG_HOME by @tony in https://github.com/vcs-python/vcspull/pull/367
    • Everything to pathlib by @tony in https://github.com/vcs-python/vcspull/pull/364
    • build(deps): Allow click 8.1 by @tony in https://github.com/vcs-python/vcspull/pull/372

    Full Changelog: https://github.com/vcs-python/vcspull/compare/v1.11.0...v1.12.0

    Source code(tar.gz)
    Source code(zip)
  • v1.11.0(Jun 11, 2022)

    What's Changed

    • refactor(cli): Move to cli/ and break up by command by @tony in https://github.com/vcs-python/vcspull/pull/348

    Full Changelog: https://github.com/vcs-python/vcspull/compare/v1.10.0...v1.11.0

    Source code(tar.gz)
    Source code(zip)
  • v1.10.0(Jun 11, 2022)

    What's Changed

    • Test tweaks by @tony in https://github.com/vcs-python/vcspull/pull/344
    • Root command, completion by @tony in https://github.com/vcs-python/vcspull/pull/347

    Full Changelog: https://github.com/vcs-python/vcspull/compare/v1.9.0...v1.10.0

    Source code(tar.gz)
    Source code(zip)
  • v1.9.0(Jun 11, 2022)

    What's Changed

    • Update poetry to 1.1 by @tony in https://github.com/vcs-python/vcspull/pull/313
    • Update packages by @tony in https://github.com/vcs-python/vcspull/pull/326
    • CI, package updates, 3.10 support, 3.6 deprecation, add precommit by @tony in https://github.com/vcs-python/vcspull/pull/329
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/vcs-python/vcspull/pull/330
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/vcs-python/vcspull/pull/331
    • add script to generate config based on a gitlab group by @aschleifer in https://github.com/vcs-python/vcspull/pull/336
    • add python script to generate config based on gitlab group by @aschleifer in https://github.com/vcs-python/vcspull/pull/337
    • Sphinx autodoc by @tony in https://github.com/vcs-python/vcspull/pull/339
    • docs: furo theme by @tony in https://github.com/vcs-python/vcspull/pull/340
    • docs: Add gitlab example to docs by @tony in https://github.com/vcs-python/vcspull/pull/341
    • docs: Add inline-tabs, copy button and opengraph by @tony in https://github.com/vcs-python/vcspull/pull/343

    New Contributors

    • @pre-commit-ci made their first contribution in https://github.com/vcs-python/vcspull/pull/330
    • @aschleifer made their first contribution in https://github.com/vcs-python/vcspull/pull/336

    Full Changelog: https://github.com/vcs-python/vcspull/compare/v1.8.0...v1.9.0

    Source code(tar.gz)
    Source code(zip)
  • v1.8.0(Jun 11, 2022)

    What's Changed

    • Markdown, ci updates by @tony in https://github.com/vcs-python/vcspull/pull/311

    Full Changelog: https://github.com/vcs-python/vcspull/compare/v1.7.0...v1.8.0

    Source code(tar.gz)
    Source code(zip)
  • v1.7.0(Jun 11, 2022)

    What's Changed

    • Libtmux update 0.9.0 by @tony in https://github.com/vcs-python/vcspull/pull/308

    Full Changelog: https://github.com/vcs-python/vcspull/compare/v1.6.0...v1.7.0

    Source code(tar.gz)
    Source code(zip)
  • v1.6.0(Jun 11, 2022)

    What's Changed

    • Update black by @tony in https://github.com/vcs-python/vcspull/pull/305
    • Update packages, lock poetry version by @tony in https://github.com/vcs-python/vcspull/pull/306
    • Drop python 2.7 by @tony in https://github.com/vcs-python/vcspull/pull/307

    Full Changelog: https://github.com/vcs-python/vcspull/compare/v1.5.0...v1.6.0

    Source code(tar.gz)
    Source code(zip)
  • v1.5.0(Jun 11, 2022)

    What's Changed

    • Update isort to 5 (if python 3.6 or above) by @tony in https://github.com/vcs-python/vcspull/pull/302
    • Overhaul docs, packaging, 1.5rc by @tony in https://github.com/vcs-python/vcspull/pull/303
    • Fix remotes by @tony in https://github.com/vcs-python/vcspull/pull/304
    • Test: Fix test to pull from one repo to two different destinations by @tony in https://github.com/vcs-python/vcspull/pull/299

    Full Changelog: https://github.com/vcs-python/vcspull/compare/v1.4.0...v1.5.0

    Source code(tar.gz)
    Source code(zip)
  • v1.4.0(Jun 11, 2022)

    What's Changed

    • CI: Move travis -> github action by @tony in https://github.com/vcs-python/vcspull/pull/301
    • libvcs 0.4.0 by @tony in https://github.com/vcs-python/vcspull/pull/300

    Full Changelog: https://github.com/vcs-python/vcspull/compare/1.3.0...v1.4.0

    Source code(tar.gz)
    Source code(zip)
  • v1.3.1(Jul 26, 2020)

    • #231 Add updating / merging of remote URLs (via PR #297)
    • Fix colorama constraint
    • poetry lockfile: Fix (accidentally pushed lockfile via prerelease version of poetry)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.0post2(Jul 26, 2020)

  • v1.3.0post1(Jul 26, 2020)

  • 1.3.0(Jul 26, 2020)

    • #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
    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Jul 9, 2018)

  • v0.0.10(Apr 30, 2015)

  • v0.0.9.1(Apr 30, 2015)

  • v0.0.8.2(Feb 5, 2014)

Owner
python utilities for version control
permissively licensed. for the public good.
python utilities for version control
用于导出墨墨背单词的词库,并生成适用于 List 背单词,不背单词,欧陆词典等的自定义词库

maimemo-export 用于导出墨墨背单词的词库,并生成适用于 List 背单词,欧陆词典,不背单词等的自定义词库。 仓库内已经导出墨墨背单词所有自带词库(暂不包括云词库),多达 900 种词库,可以在仓库中选择需要的词库下载(下载单个文件的方法),也可以去 蓝奏云(密码:666) 下载打包好

ourongxing 293 Dec 29, 2022
Used the pyautogui library to automate some processes on the computer

Pyautogui Utilizei a biblioteca pyautogui para automatizar alguns processos no c

Dheovani Xavier 1 Dec 30, 2021
Python library for generating CycloneDX SBOMs

Python Library for generating CycloneDX This CycloneDX module for Python can generate valid CycloneDX bill-of-material document containing an aggregat

CycloneDX SBOM Standard 31 Dec 16, 2022
Notebooks for computing approximations to the prime counting function using Riemann's formula.

Notebooks for computing approximations to the prime counting function using Riemann's formula.

Tom White 2 Aug 02, 2022
Blender 3.0 Python - Open temporary areas in the Text Editor

PopDrawers When editing text in Blender, it can be handy to have areas like Info, Console, Outliner, etc visible on screen to help with scripting. How

SpectralVectors 7 Nov 16, 2022
This repository contains Python games that I've worked on. You'll learn how to create python games with AI. I try to focus on creating board games without GUI in Jupyter-notebook.

92_Python_Games 🎮 Introduction 👋 This repository contains Python games that I've worked on. You'll learn how to create python games with AI. I try t

Milaan Parmar / Милан пармар / _米兰 帕尔马 166 Jan 01, 2023
Python API for HotBits random data generator

HotBits Python API Python API for HotBits random data generator. Description This project is random data generator. It uses is HotBits API web service

Filip Š 2 Sep 11, 2020
Decipher using Markov Chain Monte Carlo

Decipher using Markov Chain Monte Carlo

Science étonnante 43 Dec 24, 2022
Compiler Final Project - Lisp Interpreter

Compiler Final Project - Lisp Interpreter

2 Jan 23, 2022
Tool to generate wrappers for Linux libraries allowing for dlopen()ing them without writing any boilerplate

Dynload wrapper This program will generate a wrapper to make it easy to dlopen() shared objects on Linux without writing a ton of boilerplate code. Th

Hein-Pieter van Braam 25 Oct 24, 2022
DownTime-Score is a Small project aimed to Monitor the performance and the availabillity of a variety of the Vital and Critical Moroccan Web Portals

DownTime-Score DownTime-Score is a Small project aimed to Monitor the performance and the availabillity of a variety of the Vital and Critical Morocca

adnane-tebbaa 5 Apr 30, 2022
A simple and convenient build-and-run system for C and C++.

smake Smake is a simple and convenient build-and-run system for C and C++ projects. Why make another build system? CMake and GNU Make are great build

Venkataram Edavamadathil Sivaram 18 Nov 13, 2022
You can change your mac address with this program.

1 - Warning! You can use this program with Kali Linux. Therefore if you don't install the Kali Linux. Firstly you need to install Kali Linux. 2 - Star

Mustafa Bahadır Doğrusöz 1 Jun 10, 2022
My attempt at this years Advent of Code!

Advent-of-code-2021 My attempt at this years Advent of Code! day 1: ** day 2: ** day 3: ** day 4: ** day 5: ** day 6: ** day 7: ** day 8: * day 9: day

1 Jul 06, 2022
Um pequeno painel de consulta grátis.

[PAINEL-DE-CONSULTA 3.8(BETA)] · Confira meu canal do YouTube. Clique aqui! Nota: Próxima Atualização será a última com coisas novas, o resto será par

276 Jan 05, 2023
Bootcamp de Introducción a la Programación. Módulo 6: Matemáticas Discretas

Módulo 6: Matemáticas Discretas Última actualización: 12 de marzo Irónicamente, las matemáticas discretas son las matemáticas que lo cuentan todo. Si

Cynthia Castillo 34 Sep 29, 2022
SECRET SANTA / KRIS KINGLE

SECRET SANTA / KRIS KINGLE Note: Before executing the script, make sure to turn

DEV_FINWIZ 10 Dec 06, 2022
An extremely configurable markdown reverser for Python3.

🔄 Unmarkd A markdown reverser. Unmarkd is a BeautifulSoup-powered Markdown reverser written in Python and for Python. Why This is created as a StackS

ThatXliner 5 Jun 27, 2022
A web-based analysis toolkit for the System Usability Scale providing calculation, plotting, interpretation and contextualization utility

System Usability Scale Analysis Toolkit The System Usability Scale (SUS) Analysis Toolkit is a web-based python application that provides a compilatio

Jonas Blattgerste 3 Oct 27, 2022
Built as part of an assignment for S5 OOSE Subject CSE

Installation Steps: Download and install Python from here based on your operating system. I have used Python v3.8.10 for this. Clone the repository gi

Abhinav Rajesh 2 Sep 09, 2022