checkoutmanager


Namecheckoutmanager JSON
Version 3.1 PyPI version JSON
download
home_pagehttp://reinout.vanrees.org
SummaryGives you overview and control over your git/hg/bzr/svn checkouts/clones.
upload_time2025-01-30 10:59:42
maintainerNone
docs_urlNone
authorReinout van Rees
requires_pythonNone
licenseGPL
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            Checkoutmanager
===============

Makes bzr/hg/git/svn checkouts in several places according to a
``.checkoutmanager.cfg`` config file (in your home directory).

The advantage: you've got one command with which you can update all your
checkouts.  And with which you can ask for a list of uncommitted changes.  And
you can rebuild your entire checkout structure on a new machine just by
copying the config file (this was actually the purpose I build it for: I had
to change laptops when I switched jobs...).

Checkoutmanager works on linux, osx and windows.


Starting to use it
------------------

Starting is easy.  Just ``pip install checkoutmanager`` and run
``checkoutmanager``.

- The first time, you'll get a sample configuration you can copy to
  ``.checkoutmanager.cfg`` in your home directory.

- The second time, you'll get a usage message.  (You'll want to do
  ``checkoutmanager co`` to grab your initial checkouts).


Generic usage
-------------

What I normally do every morning when I get to work is ``checkoutmanager
up``.  This grabs the latest versions of all my checkouts from the server(s).
So an ``svn up`` for my subversion checkouts, a ``hg pull -u`` for mercurial
and so on.

From time to time, I'll do a ``checkoutmanager st`` to show if I've got some
uncommitted files lying around somewhere.  Very handy if you've worked in
several directories throughout the day: it prevents you from forgetting to
check in that one bugfix for a whole week.

A new project means I add a single line to my config file and run
``checkoutmanager co``.

Checkoutmanager allows you to spread your checkouts over multiple
directories.  It cannot mix version control systems per directory, however.
As an example, I've got a ``~/buildout/`` directory with my big svn website
projects checked out there.  And a directory with my svn work python
libraries.  And a ``~/hg/`` dir with my mercurial projects.  And I've made
checkouts of several config directories in my home dir, such as
``~/.emacs.d``, ``~/.subversion`` and so on.  Works just fine.


Commands
--------

Available commands:

exists
  Print whether checkouts are present or missing

up
  Grab latest version from the server.

st
  Print status of files in the checkouts

co
  Grab missing checkouts from the server

missing
  Print directories that are missing from the config file

out
  Show changesets you haven't pushed to the server yet

in
  Show incoming changesets that would be pulled in with 'up'. For some
  version control systems, this depends on the English output of the
  respective commands and is therefore inherently fragile.



Hidden commands
---------------

A few commands are hidden because they are seldom used and are only
useful for subversion.

upgrade
  This upgrades the working copy to the new subversion 1.7 layout of
  the .svn directory.  This should be done once after you have
  upgraded your subversion to 1.7.  Note that when you accidentally
  run this twice you get an error, but nothing breaks.  Since this
  command is so rarely needed, it is not advertised in the command
  line help.

info
  Display the svn info for the remote url.  This is useful when your
  svn program has been updated and the security mechanisms on your OS
  now require you to explictly allow access to the stored credentials.
  The other commands either do not access the internet or are
  non-interactive (like command up).  In fact, the reason for adding
  this command is that a non-interactive 'svn update' will fail when
  you have not granted access to your credentials yet for this new svn
  program.  This has happened a bit too often for me (Maurits).


Output directory naming
-----------------------

If you don't specify an output directory name for your checkout url, it just
takes the last part.  To make life easier, we do have some adjustments we
make:

- ``https://xxx/yyy/product/trunk`` becomes ``product`` instead of
  ``trunk``. (Handy for subversion).

- ``https://xxx/yyy/product/branches/experiment`` becomes
  ``product_experiment`` instead of ``experiment`` (Handy for subversion).

- ``https://xxx/customername/buildout/trunk`` becomes ``customername``
  instead of "trunk" or "buildout". (Old convention we still support).

- Bzr checkouts that start with "lp:" (special launchpad urls) get their "lp:"
  stripped.

- Git checkouts lose the ".git" at the end of the url.

- If you want to preserve the directory configuration of your version control
  system, add the ``preserve_tree`` option to a group. It should contain one
  or more base checkout urls (one per line). If the checkout url starts with
  one of the ``preserve_tree`` urls, the folder structure after it is
  preserved.

  With a ``preserve_tree`` of ``https://github.com``,
  ``https://github.com/reinout/checkoutmanager`` becomes
  ``reinout/checkoutmanager`` instead of ``checkoutmanager``. Also handy for
  subversion, which often has nested directories.

  If the ``preserve_tree`` base url isn't found, the standard rules are used,
  so you won't get an error.

If you want different behaviour from the defaults above, just specify a
directory name (separated by a space) in the configuration file after the
url. So ``https://github.com/reinout/checkoutmanager bla_bla`` becomes
``bla_bla`` instead of ``checkoutmanager``


Custom commands
---------------

You can write your own custom commands. To do that you need to create a Python
package and register an entry point in your ``setup.py`` for the
``checkoutmanager.custom_actions`` target.

A ``test`` command is included with ``checkoutmanager`` and can serve as an
example. It is registered like this in checkoutmanager's own ``setup.py``:

.. code:: python

   entry_points={
       'checkoutmanager.custom_actions': [
           'test = checkoutmanager.tests.custom_actions:test_action'
        ]
   }

The entry point function must take one positional argument which will be the
``checkoutmanager.dirinfo.DirInfo`` instance associated with the directroy
for which the command is being executed. The function can also take optional
keyword arguments. See ``checkoutmanager.tests.custom_actions.test_action`` for
an example.

Arguments are passed to the custom command using the following syntax:

.. code:: bash

   checkoutmanager action:arg1=val1,arg2=val2


Config file
-----------

.. Comment: the config file is included into the long description by setup.py,
   it is in checkoutmanager/sample.cfg!

Sample configuration file::


  # Sample config file.  Should be placed as .checkoutmanager.cfg in your home
  # directory.
  #
  # There are different sections per base location and version control
  # system.
  #
  # ``checkoutmanager co`` checks them all out (or clones them).
  # ``checkoutmanager up`` updates them all.
  # ``checkoutmanager st`` to see if there are uncommitted changes.
  # ``checkoutmanager out`` to see if there are unpushed git/hg commits.
  
  
  [git-example]
  vcs = git
  basedir = ~/example/git
  checkouts =
      https://github.com/reinout/checkoutmanager
      git@github.com:django/django.git
  
  
  [recipes]
  # Buildout recipes I work on.
  vcs = svn
  basedir = ~/example/svn
  checkouts =
      http://svn.zope.org/repos/main/z3c.recipe.usercrontab/trunk
  
  
  [hg-example]
  vcs = hg
  basedir = ~/example/utilities
  checkouts =
      https://bitbucket.org/reinout/eolfixer
      https://bitbucket.org/reinout/createcoverage
  
  
  # [dotfolders]
  # # Advanced usage!
  # # Folders that end up as dotted configfolders in my home dir.
  # # Note that there's a directory name behind the repository
  # # location, separated by a space.
  # vcs = bzr
  # basedir = ~
  # checkouts =
  #     lp:emacsconfig/trunk .emacs.d
  #     sftp://somewhere/subversion/trunk .subversion
  # # By ignoring everything, we do not find missing import files but also
  # # don't get warnings for every subdirectory in our home dir
  # ignore =
  #     *
  #     .*

TODO
====

- Perhaps make a better sample config (one that actually works instead of the
  current one that's structured for benefit of the automated tests).


Credits
=======

- Created by `Reinout van Rees <http://reinout.vanrees.org>`_.

- "out" command by Dmitrii Miliaev.

- Git support by Robert Kern.

- Globbing support for the ignores by Patrick Gerken.

- Custom commands support by Rafael Oliveira.

- Parallelism code by Morten Lied Johansen.

Source code is on github at https://github.com/reinout/checkoutmanager .

Bugs and feature requests can be reported at
https://github.com/reinout/checkoutmanager/issues .


Changelog of checkoutmanager
============================

3.1 (2025-01-30)
----------------

- Fixed regex strings by making them 'raw' strings. A modern python would otherwise
  complain (rightfully so) about invalid escape sequences (``\s``, ``\d``).

- Internal project change: ``.venv/`` instead of ``venv/``. And removed buildout config
  as we've been using virtualenv via the makefile for a while now.

- Testing on python 3.9 and 3.13 now, instead of ye olde 3.8.


3.0.2 (2024-01-11)
------------------

- Fixed super() call on the MultiExecutor that I messed up when
  modernizing the python 2.7 code :-)


3.0.1 (2024-01-11)
------------------

- Cleaned up left-over TODO comments in readme.


3.0 (2024-01-11)
----------------

- Added github action for basic testing.

- Removed ye olde buildout setup, including z3c.testsetup. Using
  pytest now.

- Removed python 2.7 support, we're on 3.8+ now.

- Achieved compatibility with python 3.12:
  Safeconfigparser->ConfigParser.


2.7 (2021-09-28)
----------------

- More robust error handling.
  [mortenlj]


2.6.1 (2019-09-23)
------------------

- Fixed small, but essential, README error.


2.6 (2019-09-10)
----------------

- Updated the setup (mostly: buildout version pins) so that the project can be
  developed/tested again.

- The ``exists`` and ``co`` command used to check only if a directory
  existed. Now it also checks if the dot directory (``.git``, ``.svn``)
  exists. This way an empty directory also will get filled with a checkout.


2.5 (2016-11-07)
----------------

- Fix #19: sometimes git remote changes were seen where there were none.
  [reinout]


2.4.1 (2015-09-10)
------------------

- Bugfix for the 2.4-introduced ``run_one()`` function.
  [chintal]


2.4 (2015-09-09)
----------------

- Added ``in`` command that reports incoming changes (so: the changes you'd
  get by running ``checkoutmanager up``). Due to differences between versions
  of git/svn/hg/bzr, the reporting might not be entirely accurate. It is
  *very* hard to get right. So: please `report an issue
  <https://github.com/reinout/checkoutmanager/issues>`_ if something is not
  quite right.
  [chintal]

- Added better support for using checkoutmanager as a library. Provided you
  first load a config file, you can now programmatically run actions on
  individual directories or urls. See the source code for the
  ``checkoutmanager.runner.run_one()`` function.
  [chintal]


2.3 (2015-09-08)
----------------

- Added a preserve_tree option to config files to allow structured
  checkouts mirroring the repository tree.
  [chintal]


2.2 (2015-08-24)
----------------

- Checkoutmanager now also runs **on python 3**!
  [reinout]

- Moved from bitbucket (https://bitbucket.org/reinout/checkoutmanager) to
  github (https://github.com/reinout/checkoutmanager).
  [reinout]


2.1 (2015-08-18)
----------------

- Fixed ``missing`` command: do not swallow the output when
  looking for not yet checked out items.  Fixes issue #24.
  [maurits]


2.0 (2015-03-25)
----------------

- Huge speed increase because commands are now run in parallel instead of
  sequentially. Great fix by Morten Lied Johansen. For me, "checkoutmanager
  up" now takes 19 seconds instead of 105 seconds!


1.17 (2015-02-06)
-----------------

- Added support for custom commands: now you can write an extension for
  checkoutmanager so that you can run ``checkoutmanager
  your_custom_command``. See the README for documentation. Patch by Rafael
  Oliveira.


1.16 (2015-01-02)
-----------------

- Added globbing support for ignores.


1.15 (2013-09-27)
-----------------

- Handle corner case in determining directory name for a git clone.


1.14 (2013-08-12)
-----------------

- Added ``--force-interactive`` to ``svn info`` for svn version 1.8
  and higher. This is for the "hidden" ``instancemanager info``
  command that is handy for updating your repositories when you've
  switched svn versions. (See the changelog entry for 1.10). Patch by
  Maurits.


1.13 (2012-07-20)
-----------------

- Not using the sample config file as the test config file anymore. This means
  there's a much nicer and more useful sample config file now.

  (Thanks Craig Blaszczyk for his pull request that was the basis for this!)


1.12 (2012-04-14)
-----------------

- For bzr, the "out" command uses the exit code instead of the command output
  now. This is more reliable and comfortable. Fix by Jendrik Seipp, thanks!


1.11 (2012-03-20)
-----------------

- Allow more than one vcs in a directory.  This was already possible
  before, but now known you no longer need to list all the checkouts
  of the competing vcs in the ignore option.  Also, items that are
  ignored in one section are now also ignored in other sections for
  the same directory.
  Fixes #11.
  [maurits]


1.10 (2012-01-16)
-----------------

- Using --mine-only option to ``bzr missing`` to only show our outgoing
  changesets when running checkoutmanager's "out" command for bzr.

- Copying sample .cfg file if it doesn't exist instead of only suggesting the
  copy. Fixes #12.

- Added hidden info command.  Should be only useful for subversion if
  your svn program is updated and your OS requires you to give svn
  access to your stored credentials again, for each repository.
  [maurits]


1.9 (2011-11-08)
----------------

- Added ``upgrade`` command that upgrades your subversion checkouts to
  the new 1.7 layout of the ``.svn`` directory.
  [maurits]


1.8 (2011-10-13)
----------------

- Using ``git push --dry-run`` now to detect not-yet-pushed outgoing changes
  with ``checkoutmanager out``. Fixes #9 (reported by Maurits van Rees).


1.7 (2011-10-06)
----------------

- Added --configfile option. Useful when you want to use checkoutmanager to
  manage checkouts for something else than your regular development projects.
  In practice: I want to use it for an 'sdistmaker' that works with git.


1.6 (2010-12-27)
----------------

- Full fix for #7: checkoutmanager doesn't stop on the first error, but
  continues.  And it reports all errors afterwards.  This helps when just one
  of your svn/hg/whatever servers is down: the rest will just keep working.

- Partial fix for #7: ``svn up`` runs with ``--non-interactive`` now, so
  conflict errors errors are reported instead of pretty much silently waiting
  for interactive input that will never come.


1.5 (2010-09-14)
----------------

- Using ``except CommandError, e`` instead of ``except CommandError as e`` for
  python2.4 compatibility.


1.4 (2010-08-17)
----------------

- Added git support (patch by Robert Kern: thanks!)  Fixes issue #6.


1.3 (2010-08-09)
----------------

- Added new "out" action that shows changesets not found in the default push
  location of a repository for a dvcs (hg, bzr).  The action doesn't make
  sense for svn, so it is ignored for svn checkouts.  Fixes issue #1.  Thanks
  Dmitrii Miliaev for this fix!


1.2.1 (2010-08-06)
------------------

- Bugfix: when reporting an error, the os.getcwd method itself would get
  printed instead of the *output* of os.getcwd()...


1.2 (2010-08-04)
----------------

- If the config file doesn't exist, just print the config file hints instead
  of the generic usage info.

- Fixed issue #4: the generic 'buildout' name is stripped from the path.
  svn://somewhere/customername/buildout/trunk is a common pattern.

- Added -v option that prints the commands and the directory where you execute
  them.  Fixes issue #3.

- Reporting on not yet checked out items when running "checkoutmanager
  missing".  Fixes issue #2.

- Checking return code from executed commands.  On error, the command and
  working directory is printed and also the output.  And the script stops
  right away.  Fixes #5.

- Updated the documentation, for instance by mentioning the config file name
  and location.


1.1 (2010-08-02)
----------------

- Switched from "commands" module to "subprocesses" for windows
  compatibility.


1.0 (2010-08-01)
----------------

- Small fixes.  It works great in practice.

- Moved from bzr to hg and made it public on bitbucket.org.

- Big documentation update as I'm going to release it.


0.1 (2010-05-07)
----------------

- First reasonably working version.

- Initial library skeleton created by thaskel.

            

Raw data

            {
    "_id": null,
    "home_page": "http://reinout.vanrees.org",
    "name": "checkoutmanager",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": null,
    "author": "Reinout van Rees",
    "author_email": "reinout@vanrees.org",
    "download_url": "https://files.pythonhosted.org/packages/bc/e4/f769457810827808a6d0edcb88e2b229b43a680fec3139dd048ceed42135/checkoutmanager-3.1.tar.gz",
    "platform": null,
    "description": "Checkoutmanager\n===============\n\nMakes bzr/hg/git/svn checkouts in several places according to a\n``.checkoutmanager.cfg`` config file (in your home directory).\n\nThe advantage: you've got one command with which you can update all your\ncheckouts.  And with which you can ask for a list of uncommitted changes.  And\nyou can rebuild your entire checkout structure on a new machine just by\ncopying the config file (this was actually the purpose I build it for: I had\nto change laptops when I switched jobs...).\n\nCheckoutmanager works on linux, osx and windows.\n\n\nStarting to use it\n------------------\n\nStarting is easy.  Just ``pip install checkoutmanager`` and run\n``checkoutmanager``.\n\n- The first time, you'll get a sample configuration you can copy to\n  ``.checkoutmanager.cfg`` in your home directory.\n\n- The second time, you'll get a usage message.  (You'll want to do\n  ``checkoutmanager co`` to grab your initial checkouts).\n\n\nGeneric usage\n-------------\n\nWhat I normally do every morning when I get to work is ``checkoutmanager\nup``.  This grabs the latest versions of all my checkouts from the server(s).\nSo an ``svn up`` for my subversion checkouts, a ``hg pull -u`` for mercurial\nand so on.\n\nFrom time to time, I'll do a ``checkoutmanager st`` to show if I've got some\nuncommitted files lying around somewhere.  Very handy if you've worked in\nseveral directories throughout the day: it prevents you from forgetting to\ncheck in that one bugfix for a whole week.\n\nA new project means I add a single line to my config file and run\n``checkoutmanager co``.\n\nCheckoutmanager allows you to spread your checkouts over multiple\ndirectories.  It cannot mix version control systems per directory, however.\nAs an example, I've got a ``~/buildout/`` directory with my big svn website\nprojects checked out there.  And a directory with my svn work python\nlibraries.  And a ``~/hg/`` dir with my mercurial projects.  And I've made\ncheckouts of several config directories in my home dir, such as\n``~/.emacs.d``, ``~/.subversion`` and so on.  Works just fine.\n\n\nCommands\n--------\n\nAvailable commands:\n\nexists\n  Print whether checkouts are present or missing\n\nup\n  Grab latest version from the server.\n\nst\n  Print status of files in the checkouts\n\nco\n  Grab missing checkouts from the server\n\nmissing\n  Print directories that are missing from the config file\n\nout\n  Show changesets you haven't pushed to the server yet\n\nin\n  Show incoming changesets that would be pulled in with 'up'. For some\n  version control systems, this depends on the English output of the\n  respective commands and is therefore inherently fragile.\n\n\n\nHidden commands\n---------------\n\nA few commands are hidden because they are seldom used and are only\nuseful for subversion.\n\nupgrade\n  This upgrades the working copy to the new subversion 1.7 layout of\n  the .svn directory.  This should be done once after you have\n  upgraded your subversion to 1.7.  Note that when you accidentally\n  run this twice you get an error, but nothing breaks.  Since this\n  command is so rarely needed, it is not advertised in the command\n  line help.\n\ninfo\n  Display the svn info for the remote url.  This is useful when your\n  svn program has been updated and the security mechanisms on your OS\n  now require you to explictly allow access to the stored credentials.\n  The other commands either do not access the internet or are\n  non-interactive (like command up).  In fact, the reason for adding\n  this command is that a non-interactive 'svn update' will fail when\n  you have not granted access to your credentials yet for this new svn\n  program.  This has happened a bit too often for me (Maurits).\n\n\nOutput directory naming\n-----------------------\n\nIf you don't specify an output directory name for your checkout url, it just\ntakes the last part.  To make life easier, we do have some adjustments we\nmake:\n\n- ``https://xxx/yyy/product/trunk`` becomes ``product`` instead of\n  ``trunk``. (Handy for subversion).\n\n- ``https://xxx/yyy/product/branches/experiment`` becomes\n  ``product_experiment`` instead of ``experiment`` (Handy for subversion).\n\n- ``https://xxx/customername/buildout/trunk`` becomes ``customername``\n  instead of \"trunk\" or \"buildout\". (Old convention we still support).\n\n- Bzr checkouts that start with \"lp:\" (special launchpad urls) get their \"lp:\"\n  stripped.\n\n- Git checkouts lose the \".git\" at the end of the url.\n\n- If you want to preserve the directory configuration of your version control\n  system, add the ``preserve_tree`` option to a group. It should contain one\n  or more base checkout urls (one per line). If the checkout url starts with\n  one of the ``preserve_tree`` urls, the folder structure after it is\n  preserved.\n\n  With a ``preserve_tree`` of ``https://github.com``,\n  ``https://github.com/reinout/checkoutmanager`` becomes\n  ``reinout/checkoutmanager`` instead of ``checkoutmanager``. Also handy for\n  subversion, which often has nested directories.\n\n  If the ``preserve_tree`` base url isn't found, the standard rules are used,\n  so you won't get an error.\n\nIf you want different behaviour from the defaults above, just specify a\ndirectory name (separated by a space) in the configuration file after the\nurl. So ``https://github.com/reinout/checkoutmanager bla_bla`` becomes\n``bla_bla`` instead of ``checkoutmanager``\n\n\nCustom commands\n---------------\n\nYou can write your own custom commands. To do that you need to create a Python\npackage and register an entry point in your ``setup.py`` for the\n``checkoutmanager.custom_actions`` target.\n\nA ``test`` command is included with ``checkoutmanager`` and can serve as an\nexample. It is registered like this in checkoutmanager's own ``setup.py``:\n\n.. code:: python\n\n   entry_points={\n       'checkoutmanager.custom_actions': [\n           'test = checkoutmanager.tests.custom_actions:test_action'\n        ]\n   }\n\nThe entry point function must take one positional argument which will be the\n``checkoutmanager.dirinfo.DirInfo`` instance associated with the directroy\nfor which the command is being executed. The function can also take optional\nkeyword arguments. See ``checkoutmanager.tests.custom_actions.test_action`` for\nan example.\n\nArguments are passed to the custom command using the following syntax:\n\n.. code:: bash\n\n   checkoutmanager action:arg1=val1,arg2=val2\n\n\nConfig file\n-----------\n\n.. Comment: the config file is included into the long description by setup.py,\n   it is in checkoutmanager/sample.cfg!\n\nSample configuration file::\n\n\n  # Sample config file.  Should be placed as .checkoutmanager.cfg in your home\n  # directory.\n  #\n  # There are different sections per base location and version control\n  # system.\n  #\n  # ``checkoutmanager co`` checks them all out (or clones them).\n  # ``checkoutmanager up`` updates them all.\n  # ``checkoutmanager st`` to see if there are uncommitted changes.\n  # ``checkoutmanager out`` to see if there are unpushed git/hg commits.\n  \n  \n  [git-example]\n  vcs = git\n  basedir = ~/example/git\n  checkouts =\n      https://github.com/reinout/checkoutmanager\n      git@github.com:django/django.git\n  \n  \n  [recipes]\n  # Buildout recipes I work on.\n  vcs = svn\n  basedir = ~/example/svn\n  checkouts =\n      http://svn.zope.org/repos/main/z3c.recipe.usercrontab/trunk\n  \n  \n  [hg-example]\n  vcs = hg\n  basedir = ~/example/utilities\n  checkouts =\n      https://bitbucket.org/reinout/eolfixer\n      https://bitbucket.org/reinout/createcoverage\n  \n  \n  # [dotfolders]\n  # # Advanced usage!\n  # # Folders that end up as dotted configfolders in my home dir.\n  # # Note that there's a directory name behind the repository\n  # # location, separated by a space.\n  # vcs = bzr\n  # basedir = ~\n  # checkouts =\n  #     lp:emacsconfig/trunk .emacs.d\n  #     sftp://somewhere/subversion/trunk .subversion\n  # # By ignoring everything, we do not find missing import files but also\n  # # don't get warnings for every subdirectory in our home dir\n  # ignore =\n  #     *\n  #     .*\n\nTODO\n====\n\n- Perhaps make a better sample config (one that actually works instead of the\n  current one that's structured for benefit of the automated tests).\n\n\nCredits\n=======\n\n- Created by `Reinout van Rees <http://reinout.vanrees.org>`_.\n\n- \"out\" command by Dmitrii Miliaev.\n\n- Git support by Robert Kern.\n\n- Globbing support for the ignores by Patrick Gerken.\n\n- Custom commands support by Rafael Oliveira.\n\n- Parallelism code by Morten Lied Johansen.\n\nSource code is on github at https://github.com/reinout/checkoutmanager .\n\nBugs and feature requests can be reported at\nhttps://github.com/reinout/checkoutmanager/issues .\n\n\nChangelog of checkoutmanager\n============================\n\n3.1 (2025-01-30)\n----------------\n\n- Fixed regex strings by making them 'raw' strings. A modern python would otherwise\n  complain (rightfully so) about invalid escape sequences (``\\s``, ``\\d``).\n\n- Internal project change: ``.venv/`` instead of ``venv/``. And removed buildout config\n  as we've been using virtualenv via the makefile for a while now.\n\n- Testing on python 3.9 and 3.13 now, instead of ye olde 3.8.\n\n\n3.0.2 (2024-01-11)\n------------------\n\n- Fixed super() call on the MultiExecutor that I messed up when\n  modernizing the python 2.7 code :-)\n\n\n3.0.1 (2024-01-11)\n------------------\n\n- Cleaned up left-over TODO comments in readme.\n\n\n3.0 (2024-01-11)\n----------------\n\n- Added github action for basic testing.\n\n- Removed ye olde buildout setup, including z3c.testsetup. Using\n  pytest now.\n\n- Removed python 2.7 support, we're on 3.8+ now.\n\n- Achieved compatibility with python 3.12:\n  Safeconfigparser->ConfigParser.\n\n\n2.7 (2021-09-28)\n----------------\n\n- More robust error handling.\n  [mortenlj]\n\n\n2.6.1 (2019-09-23)\n------------------\n\n- Fixed small, but essential, README error.\n\n\n2.6 (2019-09-10)\n----------------\n\n- Updated the setup (mostly: buildout version pins) so that the project can be\n  developed/tested again.\n\n- The ``exists`` and ``co`` command used to check only if a directory\n  existed. Now it also checks if the dot directory (``.git``, ``.svn``)\n  exists. This way an empty directory also will get filled with a checkout.\n\n\n2.5 (2016-11-07)\n----------------\n\n- Fix #19: sometimes git remote changes were seen where there were none.\n  [reinout]\n\n\n2.4.1 (2015-09-10)\n------------------\n\n- Bugfix for the 2.4-introduced ``run_one()`` function.\n  [chintal]\n\n\n2.4 (2015-09-09)\n----------------\n\n- Added ``in`` command that reports incoming changes (so: the changes you'd\n  get by running ``checkoutmanager up``). Due to differences between versions\n  of git/svn/hg/bzr, the reporting might not be entirely accurate. It is\n  *very* hard to get right. So: please `report an issue\n  <https://github.com/reinout/checkoutmanager/issues>`_ if something is not\n  quite right.\n  [chintal]\n\n- Added better support for using checkoutmanager as a library. Provided you\n  first load a config file, you can now programmatically run actions on\n  individual directories or urls. See the source code for the\n  ``checkoutmanager.runner.run_one()`` function.\n  [chintal]\n\n\n2.3 (2015-09-08)\n----------------\n\n- Added a preserve_tree option to config files to allow structured\n  checkouts mirroring the repository tree.\n  [chintal]\n\n\n2.2 (2015-08-24)\n----------------\n\n- Checkoutmanager now also runs **on python 3**!\n  [reinout]\n\n- Moved from bitbucket (https://bitbucket.org/reinout/checkoutmanager) to\n  github (https://github.com/reinout/checkoutmanager).\n  [reinout]\n\n\n2.1 (2015-08-18)\n----------------\n\n- Fixed ``missing`` command: do not swallow the output when\n  looking for not yet checked out items.  Fixes issue #24.\n  [maurits]\n\n\n2.0 (2015-03-25)\n----------------\n\n- Huge speed increase because commands are now run in parallel instead of\n  sequentially. Great fix by Morten Lied Johansen. For me, \"checkoutmanager\n  up\" now takes 19 seconds instead of 105 seconds!\n\n\n1.17 (2015-02-06)\n-----------------\n\n- Added support for custom commands: now you can write an extension for\n  checkoutmanager so that you can run ``checkoutmanager\n  your_custom_command``. See the README for documentation. Patch by Rafael\n  Oliveira.\n\n\n1.16 (2015-01-02)\n-----------------\n\n- Added globbing support for ignores.\n\n\n1.15 (2013-09-27)\n-----------------\n\n- Handle corner case in determining directory name for a git clone.\n\n\n1.14 (2013-08-12)\n-----------------\n\n- Added ``--force-interactive`` to ``svn info`` for svn version 1.8\n  and higher. This is for the \"hidden\" ``instancemanager info``\n  command that is handy for updating your repositories when you've\n  switched svn versions. (See the changelog entry for 1.10). Patch by\n  Maurits.\n\n\n1.13 (2012-07-20)\n-----------------\n\n- Not using the sample config file as the test config file anymore. This means\n  there's a much nicer and more useful sample config file now.\n\n  (Thanks Craig Blaszczyk for his pull request that was the basis for this!)\n\n\n1.12 (2012-04-14)\n-----------------\n\n- For bzr, the \"out\" command uses the exit code instead of the command output\n  now. This is more reliable and comfortable. Fix by Jendrik Seipp, thanks!\n\n\n1.11 (2012-03-20)\n-----------------\n\n- Allow more than one vcs in a directory.  This was already possible\n  before, but now known you no longer need to list all the checkouts\n  of the competing vcs in the ignore option.  Also, items that are\n  ignored in one section are now also ignored in other sections for\n  the same directory.\n  Fixes #11.\n  [maurits]\n\n\n1.10 (2012-01-16)\n-----------------\n\n- Using --mine-only option to ``bzr missing`` to only show our outgoing\n  changesets when running checkoutmanager's \"out\" command for bzr.\n\n- Copying sample .cfg file if it doesn't exist instead of only suggesting the\n  copy. Fixes #12.\n\n- Added hidden info command.  Should be only useful for subversion if\n  your svn program is updated and your OS requires you to give svn\n  access to your stored credentials again, for each repository.\n  [maurits]\n\n\n1.9 (2011-11-08)\n----------------\n\n- Added ``upgrade`` command that upgrades your subversion checkouts to\n  the new 1.7 layout of the ``.svn`` directory.\n  [maurits]\n\n\n1.8 (2011-10-13)\n----------------\n\n- Using ``git push --dry-run`` now to detect not-yet-pushed outgoing changes\n  with ``checkoutmanager out``. Fixes #9 (reported by Maurits van Rees).\n\n\n1.7 (2011-10-06)\n----------------\n\n- Added --configfile option. Useful when you want to use checkoutmanager to\n  manage checkouts for something else than your regular development projects.\n  In practice: I want to use it for an 'sdistmaker' that works with git.\n\n\n1.6 (2010-12-27)\n----------------\n\n- Full fix for #7: checkoutmanager doesn't stop on the first error, but\n  continues.  And it reports all errors afterwards.  This helps when just one\n  of your svn/hg/whatever servers is down: the rest will just keep working.\n\n- Partial fix for #7: ``svn up`` runs with ``--non-interactive`` now, so\n  conflict errors errors are reported instead of pretty much silently waiting\n  for interactive input that will never come.\n\n\n1.5 (2010-09-14)\n----------------\n\n- Using ``except CommandError, e`` instead of ``except CommandError as e`` for\n  python2.4 compatibility.\n\n\n1.4 (2010-08-17)\n----------------\n\n- Added git support (patch by Robert Kern: thanks!)  Fixes issue #6.\n\n\n1.3 (2010-08-09)\n----------------\n\n- Added new \"out\" action that shows changesets not found in the default push\n  location of a repository for a dvcs (hg, bzr).  The action doesn't make\n  sense for svn, so it is ignored for svn checkouts.  Fixes issue #1.  Thanks\n  Dmitrii Miliaev for this fix!\n\n\n1.2.1 (2010-08-06)\n------------------\n\n- Bugfix: when reporting an error, the os.getcwd method itself would get\n  printed instead of the *output* of os.getcwd()...\n\n\n1.2 (2010-08-04)\n----------------\n\n- If the config file doesn't exist, just print the config file hints instead\n  of the generic usage info.\n\n- Fixed issue #4: the generic 'buildout' name is stripped from the path.\n  svn://somewhere/customername/buildout/trunk is a common pattern.\n\n- Added -v option that prints the commands and the directory where you execute\n  them.  Fixes issue #3.\n\n- Reporting on not yet checked out items when running \"checkoutmanager\n  missing\".  Fixes issue #2.\n\n- Checking return code from executed commands.  On error, the command and\n  working directory is printed and also the output.  And the script stops\n  right away.  Fixes #5.\n\n- Updated the documentation, for instance by mentioning the config file name\n  and location.\n\n\n1.1 (2010-08-02)\n----------------\n\n- Switched from \"commands\" module to \"subprocesses\" for windows\n  compatibility.\n\n\n1.0 (2010-08-01)\n----------------\n\n- Small fixes.  It works great in practice.\n\n- Moved from bzr to hg and made it public on bitbucket.org.\n\n- Big documentation update as I'm going to release it.\n\n\n0.1 (2010-05-07)\n----------------\n\n- First reasonably working version.\n\n- Initial library skeleton created by thaskel.\n",
    "bugtrack_url": null,
    "license": "GPL",
    "summary": "Gives you overview and control over your git/hg/bzr/svn checkouts/clones.",
    "version": "3.1",
    "project_urls": {
        "Homepage": "http://reinout.vanrees.org"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e0f05944d49d87965c6c9a655da39ce5d3fa0ec9cb3975e221982cd5c7169784",
                "md5": "09d0b6fce98d1e0696362ec9faf691bb",
                "sha256": "58950bd821067877e4492074f4c4c271513a03c81b9e8840d647ae652c343e0e"
            },
            "downloads": -1,
            "filename": "checkoutmanager-3.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "09d0b6fce98d1e0696362ec9faf691bb",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 30813,
            "upload_time": "2025-01-30T10:59:40",
            "upload_time_iso_8601": "2025-01-30T10:59:40.515871Z",
            "url": "https://files.pythonhosted.org/packages/e0/f0/5944d49d87965c6c9a655da39ce5d3fa0ec9cb3975e221982cd5c7169784/checkoutmanager-3.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bce4f769457810827808a6d0edcb88e2b229b43a680fec3139dd048ceed42135",
                "md5": "559ce4df4b09b71866f896f29aa46944",
                "sha256": "b35a41b6d2a01f95b2b390eec1b8ecbc7119853b8c4251f3af3ea9449ebc873d"
            },
            "downloads": -1,
            "filename": "checkoutmanager-3.1.tar.gz",
            "has_sig": false,
            "md5_digest": "559ce4df4b09b71866f896f29aa46944",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 36949,
            "upload_time": "2025-01-30T10:59:42",
            "upload_time_iso_8601": "2025-01-30T10:59:42.478265Z",
            "url": "https://files.pythonhosted.org/packages/bc/e4/f769457810827808a6d0edcb88e2b229b43a680fec3139dd048ceed42135/checkoutmanager-3.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-30 10:59:42",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "checkoutmanager"
}
        
Elapsed time: 0.73771s