Metadata-Version: 2.0
Name: GDM
Version: 0.7.dev2
Summary: A language-agnostic "dependency manager" using Git.
Home-page: https://github.com/jacebrowning/gdm
Author: Jace Browning
Author-email: jacebrowning@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Software Development :: Version Control
Classifier: Topic :: System :: Software Distribution
Requires-Dist: YORM (~=0.6.dev1)
Requires-Dist: sh (~=1.11)

| |Build Status|
| |Coverage Status|
| |Scrutinizer Code Quality|
| |PyPI Version|
| |PyPI Downloads|

Getting Started
===============

Git Dependency Manager (GDM) 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.

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

-  Python 3.4+
-  Latest version of Git (with `stored
   credentials <http://stackoverflow.com/questions/7773181>`__)
-  OSX/Linux (with a decent shell for Git)

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

GDM can be installed with pip:

.. code:: sh

    $ pip install gdm

or directly from the source code:

.. code:: sh

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

Setup
-----

Create a GDM configuration file (``gdm.yml`` or ``.gdm.yml``) in the
root of your working tree:

.. code:: yaml

    location: .gdm
    sources:
    - repo: https://github.com/kstenerud/iOS-Universal-Framework
      dir: framework
      rev: Mk5-end-of-life
    - repo: https://github.com/jonreid/XcodeCoverage
      dir: coverage
      rev: master
      link: Tools/XcodeCoverage

Ignore GDM's dependency storage location:

.. code:: sh

    $ echo .gdm >> .gitignore

Basic Usage
===========

See the available commands:

.. code:: sh

    $ gdm --help

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

Get the latest versions of all dependencies:

.. code:: sh

    $ gdm update

which will essentially:

#. create a working tree at *root*/``location``/``dir``
#. fetch from ``repo`` and checkout the specified ``rev``
#. symbolically link each ``location``/``dir`` from *root*/``link``
   (optional)
#. repeat for all nested working trees containing a configuration file
#. record the actual commit SHAs that were checked out

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

    $ gdm list

Reinstall these specific versions at a later time:

.. code:: sh

    $ gdm install

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

Remove all installed dependencies:

.. code:: sh

    $ gdm uninstall

Advanced Options
================

See the full documentation at http://git-dependency-manager.info/.

.. |Build Status| image:: https://travis-ci.org/jacebrowning/gdm.svg?branch=develop
   :target: https://travis-ci.org/jacebrowning/gdm
.. |Coverage Status| image:: http://img.shields.io/coveralls/jacebrowning/gdm/master.svg
   :target: https://coveralls.io/r/jacebrowning/gdm
.. |Scrutinizer Code Quality| image:: http://img.shields.io/scrutinizer/g/jacebrowning/gdm.svg
   :target: https://scrutinizer-ci.com/g/jacebrowning/gdm/?branch=master
.. |PyPI Version| image:: http://img.shields.io/pypi/v/GDM.svg
   :target: https://pypi.python.org/pypi/GDM
.. |PyPI Downloads| image:: http://img.shields.io/pypi/dm/GDM.svg
   :target: https://pypi.python.org/pypi/GDM

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

0.7 (unreleased)
----------------

- 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.

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.


