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
sumCulator Это калькулятор, который умеет складывать 2 числа.

sumCulator Это калькулятор, который умеет складывать 2 числа. Но есть условия: Эти 2 числа не могут быть отрицательными (всё-таки это вычитание, а не

0 Jul 12, 2022
program to store and update pokemons using SQL and Flask

Pokemon SQL and Flask Pokemons api in python. Technologies flask pymysql Description PokeCorp is a company that tracks pokemon and their trainers arou

Sara Hindy Salfer 1 Oct 20, 2021
Transform your boring distro into a hacking powerhouse.

Pentizer Transform your boring distro into a hacking powerhouse. Pentizer is a personal project that imports Kali and Parrot repositories in any Debia

Michail Tsimpliarakis 2 Nov 05, 2021
Medical appointments No-Show classifier

Medical Appointments No-shows Why do 20% of patients miss their scheduled appointments? A person makes a doctor appointment, receives all the instruct

4 Apr 20, 2022
a url shortener with fastapi and tortoise-orm

fastapi-tortoise-orm-url-shortener a url shortener with fastapi and tortoise-orm

19 Aug 12, 2022
Repositório do Projeto de Jogo da Resília Educação.

Jogo da Segurança das Indústrias Acme Descrição Este jogo faz parte do projeto de entrega do primeiro módulo da Resilia Educação, referente ao curso d

Márcio Estevam da Silva 2 Apr 28, 2022
Anki for desktop computers

Anki This repo contains the source code for the computer version of Anki. If you'd like to try development builds of Anki but don't feel comfortable b

Ankitects 12.9k Jan 09, 2023
Find habits that genuinely increase your productivity

BiProductive Description This repository contains the application BiProductive, which analyzes the habits of the person, tests his productivity, and d

Rizvan Iskaliev 43 Jun 11, 2022
A free and open-source chess improvement app that combines the power of Lichess and Anki.

A free and open-source chess improvement app that combines the power of Lichess and Anki. Chessli Project Activity & Issue Tracking PyPI Build & Healt

93 Nov 23, 2022
Draw random mazes in python

a-maze Draw random mazes in python This program generates and draws a rectangular maze, with an entrance on one side and one on the opposite side. The

Andrea Pasquali 1 Nov 21, 2021
A turtlebot auto controller allows robot to autonomously explore environment.

A turtlebot auto controller allows robot to autonomously explore environment.

Yuliang Zhong 1 Nov 10, 2021
Edorado93 - Unraveling a Rockstar! -- Too much? Fine, Unraveling a humble programmer then?

Hi, I'm Sachin Malhotra ( ⛄ 💻 🎃 🍺 ) Let me set the records straight. Roger Federer is the GOAT and I will not hear otherwise! Now that we have that

Sachin Malhotra 7 Dec 25, 2022
Code and yara rules to detect and analyze Cobalt Strike

Cobalt Strike Resources This repository contains: analyze.py: a script to analyze a Cobalt Strike beacon (python analyze.py BEACON) extract.py; extrac

Tek 224 Jan 04, 2023
A OBS service to package a published repository into a tar.gz file

OBS Source Service obs-service-publish_tar obs-service-publish_tar will create a archive.tar[.tar compression] archive containing the published repo

Erico Mendonca 1 Feb 16, 2022
2021华为软件精英挑战赛 程序输出分析器

AutoGrader 0.2.0更新:加入资源分配溢出检测,如果发生资源溢出会输出溢出发生的位置。 如果通过检测,会显示通过符号 如果没有通过检测,会显示警告,并输出溢出发生的位置和操作

54 Aug 14, 2022
Painel simples com consulta de cep,CNPJ,placa e ip

Painel mpm Um painel simples com consultas de IP, CNPJ, CEP e PLACA Início 🌐 apt update && apt upgrade -y pkg i python git pip install requests Insta

8 Feb 27, 2022
A Trace Explorer for Reverse Engineers

Tenet - A Trace Explorer for Reverse Engineers Overview Tenet is an IDA Pro plugin for exploring execution traces. The goal of this plugin is to provi

1k Jan 02, 2023
Glyph Metadata Palette

This plugin for Glyphs3 allows you to associate arbitrary structured metadata to each glyph in your font.

Simon Cozens 4 Jan 26, 2022
A lighweight screen color picker tool

tkpick A lighweigt screen color picker tool Availability Only GNU/Linux 🐧 Installing Install via pip (No auto-update): [sudo] pip install tkpick Usa

Adil Gürbüz 7 Aug 30, 2021
Python program that generates random user from API

RandomUserPy Author kirito sate #modules used requests, json, tkinter, PIL, urllib, io, install requests and PIL modules from pypi pip install Pillow

kiritosate 1 Jan 05, 2022