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
Beginner Projects A couple of beginner projects here

Beginner Projects A couple of beginner projects here, listed from easiest to hardest :) selector.py: simply a random selector to tell me who to faceti

Kylie 272 Jan 7, 2023
This repository contains Python Projects for Beginners as well as for Intermediate Developers built by Contributors.

Python Projects {Open Source} Introduction The repository was built with a tree-like structure in mind, it contains collections of Python Projects. Mo

Gaurav Pandey 115 Apr 30, 2022
Source-o-grapher is a tool built with the aim to investigate software resilience aspects of Open Source Software (OSS) projects.

Source-o-grapher is a tool built with the aim to investigate software resilience aspects of Open Source Software (OSS) projects.

Aristotle University 5 Jun 28, 2022
This Python library searches through a static directory and appends artist, title, track number, album title, duration, and genre to a .json object

This Python library searches through a static directory (needs to match your environment) and appends artist, title, track number, album title, duration, and genre to a .json object. This .json object is then used to post data to a specified table in a local MySQL database, credentials of which the user must set.

Edan Ybarra 1 Jun 20, 2022
A Python Based Utility for Processing GST-Return JSON Files to Multiple Formats

GSTR 1/2A Utility by Shan.tk Open Source GSTR 1/GSTR 2A JSON to Excel utility based on Python. Useful for Auditors in Verifying GSTR 1 Return Invoices

Sudharshan TK 1 Oct 8, 2022
Small tool to use hero .json files created with Optolith for The Dark Eye/ Das Schwarze Auge 5 to perform talent probes.

DSA5-ProbeMaker A little tool for The Dark Eye 5th Edition (Das Schwarze Auge 5) to load .json from Optolith character generation and easily perform t

null 2 Jan 6, 2022
Nuclei - Burp Extension allows to run nuclei scanner directly from burp and transforms json results into the issues

Nuclei - Burp Extension Simple extension that allows to run nuclei scanner directly from burp and transforms json results into the issues. Installatio

null 106 Dec 22, 2022
:fishing_pole_and_fish: List of `pre-commit` hooks to ensure the quality of your `dbt` projects.

pre-commit-dbt List of pre-commit hooks to ensure the quality of your dbt projects. BETA NOTICE: This tool is still BETA and may have some bugs, so pl

Offbi 262 Nov 25, 2022
Inspect the resources of your android projects and understand which ones are not being used and could potentially be removed.

Android Resources Checker What This program will inspect the resources of your app and help you understand which ones are not being used and could pot

Fábio Carballo 39 Feb 8, 2022
Poetry plugin to bundle projects into various formats

Poetry bundle plugin This package is a plugin that allows the bundling of Poetry projects into various formats. Installation The easiest way to instal

Poetry 54 Jan 2, 2023
Collections of python projects

nppy, mostly contains projects written in Python. Some projects are very simple while some are a bit lenghty and difficult(for beginners) Requirements

ghanteyyy 75 Dec 20, 2022
Small projects for python beginners.

Python Mini Projects For Beginners I recently started doing the #100DaysOfCode Challenge in Python. I've used Python before, but I had switched to JS

Sreekesh Iyer 10 Dec 12, 2022
Sathal's Python Projects Repository

Sathal's Python Projects Repository Purpose and Motivation I come from a mainly C Programming Language background and have previous classroom experien

Sam 1 Oct 20, 2021
Repo created for the purpose of adding any kind of programs and projects

Programs and Project Repository A repository for adding programs and projects of any kind starting from beginners level to expert ones Contributing to

Unicorn Dev Community 3 Nov 2, 2022
A platform for developers 👩‍💻 who wants to share their programs and projects.

Fest-Practice-2021 This project is excluded from Hacktoberfest 2021. Please use this as a testing repo/project. A platform for developers ??‍?? who wa

Mayank Choudhary 40 Nov 7, 2022
This repository contains completed Python projects

My Python projects This repository contains completed Python projects: 1) Build projects Guide for building projects into executable files 2) Calculat

Igor Yunusov 8 Nov 4, 2021
Coderslab Workshop Projects

Workshop Coderslab workshop projects that include: Guessing Game Lotto simulator Guessing Game vol.2 Guessing Game vol.3 Dice 2001 Game Technologies P

Szymon Połczyński 1 Nov 6, 2021
Projects and assets from Wireframe #56

Wireframe56 Projects and assets from Wireframe #56 Make a Boulder Dash level editor in Python, pages 50-57, by Mark Vanstone. Code an homage to Bubble

Wireframe magazine 10 Sep 7, 2022
My collection of mini-projects in various languages

Mini-Projects My collection of mini-projects in various languages About: This repository consists of a number of small projects. Most of these "mini-p

Siddhant Attavar 1 Jul 11, 2022