Metadata-Version: 2.0
Name: GitMan
Version: 1.3b4
Summary: A language-agnostic dependency manager using Git.
Home-page: https://jacebrowning/gitman
Author: Jace Browning
Author-email: jacebrowning@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Software Development :: Version Control
Classifier: Topic :: System :: Software Distribution
Requires-Dist: YORM (~=1.3)

Unix: |Build Status| Windows: |Windows Build Status|\ Metrics: |Coverage
Status| |Scrutinizer Code Quality|\ Usage: |PyPI Version| |PyPI
Downloads|

Overview
========

GitMan is a language-agnostic "dependency manager" using Git. It aims to
serve as a submodules replacement and provides advanced options for
managing versions of nested Git repositories.

|demo|

Setup
=====

Requirements
------------

-  Python 3.5+
-  Git 2.8+ (with `stored
   credentials <http://gitman.readthedocs.io/en/latest/setup/git/>`__)

Installation
------------

Install GitMan with pip:

.. code:: sh

    $ pip install gitman

or directly from the source code:

.. code:: sh

    $ git clone https://github.com/jacebrowning/gitman.git
    $ cd gitman
    $ python setup.py install

Setup
-----

Generate a sample configuration file:

.. code:: sh

    $ gitman init

or manually create one (``gitman.yml`` or ``.gitman.yml``) in the root
of your working tree:

.. code:: yaml

    location: vendor/gitman
    sources:
    - name: framework
      repo: https://github.com/kstenerud/iOS-Universal-Framework
      rev: Mk5-end-of-life
    - name: coverage
      repo: https://github.com/jonreid/XcodeCoverage
      rev: master
      link: Tools/XcodeCoverage
    - name: trufflehog
      repo: https://github.com/dxa4481/truffleHog
      rev: master
      scripts:
      - chmod a+x truffleHog.py

Ignore the dependency storage location:

.. code:: sh

    $ echo vendor/gitman >> .gitignore

Usage
=====

See the available commands:

.. code:: sh

    $ gitman --help

Updating Dependencies
---------------------

Get the latest versions of all dependencies:

.. code:: sh

    $ gitman update

which will essentially:

#. Create a working tree at ``<root>``/``<location>``/``<name>``
#. Fetch from ``repo`` and checkout the specified ``rev``
#. Symbolically link each ``<location>``/``<name>`` from
   ``<root>``/``<link>`` (if specified)
#. Repeat for all nested working trees containing a configuration file
#. Record the actual commit SHAs that were checked out (with ``--lock``
   option)
#. Run optional post-install scripts for each dependency

where ``rev`` can be:

-  all or part of a commit SHA: ``123def``
-  a tag: ``v1.0``
-  a branch: ``master``
-  a ``rev-parse`` date: ``'develop@{2015-06-18 10:30:59}'``

Restoring Previous Versions
---------------------------

Display the specific revisions that are currently installed:

.. code:: sh

    $ gitman list

Reinstall these specific versions at a later time:

.. code:: sh

    $ gitman install

Deleting Dependencies
---------------------

Remove all installed dependencies:

.. code:: sh

    $ gitman uninstall

.. |Build Status| image:: https://travis-ci.org/jacebrowning/gitman.svg?branch=develop
   :target: https://travis-ci.org/jacebrowning/gitman
.. |Windows Build Status| image:: https://img.shields.io/appveyor/ci/jacebrowning/gitman/develop.svg
   :target: https://ci.appveyor.com/project/jacebrowning/gitman
.. |Coverage Status| image:: https://img.shields.io/coveralls/jacebrowning/gitman/develop.svg
   :target: https://coveralls.io/r/jacebrowning/gitman
.. |Scrutinizer Code Quality| image:: https://img.shields.io/scrutinizer/g/jacebrowning/gitman.svg
   :target: https://scrutinizer-ci.com/g/jacebrowning/gitman/?branch=develop
.. |PyPI Version| image:: https://img.shields.io/pypi/v/GitMan.svg
   :target: https://pypi.python.org/pypi/GitMan
.. |PyPI Downloads| image:: https://img.shields.io/pypi/dm/gitman.svg
   :target: https://pypi.python.org/pypi/GitMan
.. |demo| image:: https://raw.githubusercontent.com/jacebrowning/gitman/develop/docs/demo.gif


Revision History
================

1.3 (unreleased)
----------------

-  Added ``init`` command to generate sample configuration files.
-  Added support for post-install scripts on dependencies.
-  Updated configuration format to support ``null`` for links.

1.2 (2017/01/08)
----------------

-  Added preliminary Windows support (@StudioEtrange).

1.1 (2017/01/06)
----------------

-  Added coloring to the command-line output.
-  Fixed issue where ``<dirty>`` could be saved as a locked revision.

1.0.2 (2016/07/28)
------------------

-  Moved documentation to http://gitman.readthedocs.io/.

1.0.1 (2016/05/31)
------------------

-  Replaced calls to ``git remote add origin`` with
   ``git remote set-url origin``.

1.0 (2016/05/22)
----------------

-  Initial stable release.

0.11 (2016/05/10)
-----------------

-  Removed dependency on ``sh`` to support Cygwin/MinGW/etc. on Windows.
-  Dropped Python 3.4 support for ``subprocess`` and ``*args``
   improvements.
-  **BREAKING**: Renamed config file key ``dir`` to ``name``.

0.10 (2016/04/14)
-----------------

-  Added ``show`` command to display dependency and internal paths.

0.9 (2016/03/31)
----------------

-  Added ``edit`` command to launch the configuration file.
-  Depth now defaults to 5 to prevent infinite recursion.
-  Fixed handling of source lists containing different dependencies.

0.8.3 (2016/03/14)
------------------

-  Renamed to GitMan.

0.8.2 (2016/02/24)
------------------

-  Updated to YORM v0.6.

0.8.1 (2016/01/21)
------------------

-  Added an error message when attempting to lock invalid repositories.

0.8 (2016/01/13)
----------------

-  Switched to using repository mirrors to speed up cloning.
-  Disabled automatic fetching on install.
-  Added ``--fetch`` option on ``install`` to always fetch.
-  Now displaying ``git status`` output when there are changes.

0.7 (2015/12/22)
----------------

-  Fixed ``git remote rm`` command (@hdnivara).
-  Now applying the ``update`` dependency filter to locking as well.
-  Now only locking previous locked dependencies.
-  Added ``lock`` command to manually save all dependency versions.
-  Now requiring ``--lock`` option on ``update`` to explicitly lock
   dependencies.

0.6 (2015/11/13)
----------------

-  Added the ability to filter the dependency list on ``install`` and
   ``update``.
-  Added ``--depth`` option to limit dependency traversal on
   ``install``, ``update``, and ``list``.

0.5 (2015/10/20)
----------------

-  Added Git plugin support via: ``git deps``.
-  Removed ``--no-clean`` option (now the default) on ``install`` and
   ``update``.
-  Added ``--clean`` option to delete ignored files on ``install`` and
   ``update``.
-  Switched to ``install`` rather than ``update`` of nested
   dependencies.
-  Added ``--all`` option on ``update`` to update all nested
   dependencies.
-  Disabled warnings when running ``install`` without locked sources.
-  Added ``--no-lock`` option to disable version recording.

0.4.2 (2015/10/18)
------------------

-  Fixed crash when running with some sources missing.

0.4.1 (2015/09/24)
------------------

-  Switched to cloning for initial working tree creation.

0.4 (2015/09/18)
----------------

-  Replaced ``install`` command with ``update``.
-  Updated ``install`` command to use locked dependency versions.
-  Now sorting sources after a successful ``update``.
-  Now requiring ``--force`` to ``uninstall`` with uncommitted changes.
-  Updated ``list`` command to show full shell commands.

0.3.1 (2015/09/09)
------------------

-  Ensures files are not needlessly reloaded with newer versions of
   YORM.

0.3 (2015/06/26)
----------------

-  Added ``--no-clean`` option to disable removing untracked files.
-  Added support for ``rev-parse`` dates as the dependency ``rev``.

0.2.5 (2015/06/15)
------------------

-  Added ``--quiet`` option to hide warnings.

0.2.4 (2015/05/19)
------------------

-  Now hiding YORM logging bellow warnings.

0.2.3 (2015/05/17)
------------------

-  Upgraded to YORM v0.4.

0.2.2 (2015/05/04)
------------------

-  Specified YORM < v0.4.

0.2.1 (2015/03/12)
------------------

-  Added automatic remote branch tracking in dependencies.
-  Now requiring ``--force`` when there are untracked files.

0.2 (2015/03/10)
----------------

-  Added ``list`` command to display current URLs/SHAs.

0.1.4 (2014/02/27)
------------------

-  Fixed an outdated index when checking for changes.

0.1.3 (2014/02/27)
------------------

-  Fixed extra whitespace when logging shell output.

0.1.2 (2014/02/27)
------------------

-  Added ``--force`` argument to:

   -  overwrite uncommitted changes
   -  create symbolic links in place of directories

-  Added live shell command output with ``-vv`` argument.

0.1 (2014/02/24)
----------------

-  Initial release.


