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
Cool little Python scripts & projects I've made.

Little Python Projects A repository for neat little Python scripts I've made! How to run a script: *NOTE: You'll need to install Python v3 or higher.

dood 1 Jan 19, 2022
Python script for diving image data to train test and val

dataset-division-to-train-val-test-python python script for dividing image data to train test and val If you have an image dataset in the following st

Muhammad Zeeshan 1 Nov 14, 2022
The Python Achievements Framework!

Pychievements: The Python Achievements Framework! Pychievements is a framework for creating and tracking achievements within a Python application. It

Brian 114 Jul 21, 2022
Demo of connecting Rasa with Zalo

Demo of connecting Rasa with Zalo

6 Jul 25, 2022
Roman numeral conversion with python

Roman numeral conversion Discipline: Programming Languages Student: Paulo Henrique Diniz de Lima Alencar. Language: Python Description Responsible for

Paulo Alencar 1 Jul 11, 2022
Validate UC alumni identifier numbers with Python 3.

UC number validator Validate UC alumni identifier numbers with Python 3. Getting started Install the library with: pip install -U ucnumber Usage from

Open Source eUC 1 Jul 07, 2021
All you need to understand CRUD and MVP in DRF

Book-Store-API This an API which has been put in place just to make you order for books, upload books with price, image and all, pay and automtically

Oladipo Adesiyan 6 Jul 03, 2022
A clock widget for linux ez to use no need for cmd line ;)

A clock widget in LINUX A clock widget for linux ez to use no need for cmd line ;) How to install? oh its ez just go to realese! what are the paltform

1 Feb 15, 2022
Python bilgilerimi eğlenceli bir şekilde hatırlamak ve daha da geliştirmek için The Big Book of Small Python Projects isimli bir kitap almıştım.

Python bilgilerimi eğlenceli bir şekilde hatırlamak ve daha da geliştirmek için The Big Book of Small Python Projects isimli bir kitap almıştım. Bu repo kitaptaki örnek programları çalıştığım oyun al

Burak Selim Senyurt 22 Oct 26, 2022
Blender addon that simplifies access to useful operators and adds missing functionality

Quick Menu is a Blender addon that simplifies common tasks Compatible with Blender 3.x.x Install through Edit - Preferences - Addons - Install... -

passivestar 94 Dec 27, 2022
Make your Discord Account Online 24/7!

Online-Forever Make your Discord Account Online 24/7! A Code written in Python that helps you to keep your account 24/7. The main.py is the main file.

SealedSaucer 0 Mar 16, 2022
A Python script to delete movies with a certain tag after a certain amount of days.

radarr_autodelete Simple script, which deletes movies with a specific tag after a certain amount of days Pip Packages pip3 install pyarr python-dotenv

7 Dec 06, 2022
Play tic-tac-toe in PowerPoint

The presentation has around 6,000 slides representing every possible game state (and some impossible ones, since I didn't check for wins or ties). You play by clicking on the squares, which are hyper

Jesse Li 3 Dec 18, 2021
Simple cash register system made with guizero

Eje-Casher なにこれ guizeroで作った簡易レジシステムです。実際にコミケで使う予定です。 これを誰かがそのまま使うかどうかというよりは、guiz

Akira Ouchi 4 Nov 07, 2022
Org agenda in the console

This Python script reads an org agenda file (i.e. a regular org file with some active dates) and displays an interactive and colored year calendar with detailed information for each day when the mous

Nicolas P. Rougier 113 Jan 03, 2023
Headless chatbot that detects spam and posts links to it to chatrooms for quick deletion.

SmokeDetector Headless chatbot that detects spam and posts it to chatrooms. Uses ChatExchange, takes questions from the Stack Exchange realtime tab, a

Charcoal 421 Dec 21, 2022
Simple card retirement plugin for Anki

Anki Retirement Addon Allow users to suspend, tag, delete, or move cards that reach a specific retirement interval Supports Anki version 2.1.45 Licens

3 Dec 23, 2022
The best way to learn Python is by practicing examples. The repository contains examples of basic concepts of Python. You are advised to take the references from these examples and try them on your own.

90_Python_Exercises_and_Challenges The best way to learn Python is by practicing examples. This repository contains the examples on basic and advance

Milaan Parmar / Милан пармар / _米兰 帕尔马 205 Jan 06, 2023
A Python program that generates a maze that solves itself using DFS

Maze Generator And Solver Program Purpose: Generates a maze that then solves itself Language: Python and Pygame Algorithm: Randomized DFS / Floodfill

Joshua Liu 1 Jul 25, 2022
py2dis - A disassembly engine & library for Python

py2dis - A disassembly engine & library for Python. py2dis is a disassembly library for Python that does not use any modules/libraries other than colo

3 Feb 04, 2022