Metadata-Version: 1.2
Name: ingit
Version: 0.4.2
Summary: git repository collection management tool
Home-page: https://mbdevpl.github.io/
Author: Mateusz Bysiek
Author-email: mb@mbdev.pl
Maintainer: Mateusz Bysiek
Maintainer-email: mb@mbdev.pl
License: GNU General Public License v3 or later (GPLv3+)
Download-URL: https://github.com/mbdevpl/ingit
Description: .. role:: bash(code)
            :language: bash
        
        .. role:: json(code)
            :language: json
        
        =====
        ingit
        =====
        
        .. image:: https://img.shields.io/pypi/v/ingit.svg
            :target: https://pypi.python.org/pypi/ingit
            :alt: package version from PyPI
        
        .. image:: https://travis-ci.org/mbdevpl/ingit.svg?branch=master
            :target: https://travis-ci.org/mbdevpl/ingit
            :alt: build status from Travis CI
        
        .. image:: https://ci.appveyor.com/api/projects/status/github/mbdevpl/ingit?svg=true
            :target: https://ci.appveyor.com/project/mbdevpl/ingit
            :alt: build status from AppVeyor
        
        .. image:: https://codecov.io/gh/mbdevpl/ingit/branch/master/graph/badge.svg
            :target: https://codecov.io/gh/mbdevpl/ingit
            :alt: test coverage from Codecov
        
        .. image:: https://img.shields.io/pypi/l/ingit.svg
            :target: https://github.com/mbdevpl/ingit/blob/master/NOTICE
            :alt: license
        
        Tool for managing a large collection of repositories in git. If you have 100 git-versioned projects,
        keeping tabs on everything can be quite troublesome.
        
        That's where *ingit* comes in. It mimics selected git commands, however you can perform the same
        action on a group of repositories instead of just one.
        
        Additionally, it has an interactive mode in which you can go over your repositories and quickly
        perform typical suggested actions in each individual repository based on its current status.
        
        
        overview
        ========
        
        
        basic usage
        -----------
        
        For general help, see:
        
        .. code:: bash
        
            ingit -h
        
        
        For command-specific help, see:
        
        .. code:: bash
        
            ingit command -h
        
        
        Commands are of two kinds in general:
        
        *   git-like commands, which work similar to their git versions;
        *   ingit-only commands, which you won't find in git.
        
        
        Currently available ingit-only commands are:
        
        .. code:: bash
        
            ingit summary
            ingit register
        
        
        Currently available git-like commands are:
        
        .. code:: bash
        
            ingit clone
            ingit init
            ingit fetch
            ingit checkout
            ingit merge
            ingit push
            ingit gc
            ingit status
        
        
        configuration
        -------------
        
        Ingit workes based on configuration in 2 JSON files:
        
        *   runtime configuration
        *   repositories configuraion
        
        If either of the files doesn't exist, detaults will be generated.
        
        The default paths to the files can be overriden via ``--config`` and ``--repos``
        command-line options.
        
        
        runtime configuraion
        ~~~~~~~~~~~~~~~~~~~~
        
        Most importantly, stores repositories root directory -- it's a directory which ingit assumes
        to contain git-versioned projects.
        
        Example:
        
        .. code:: json
        
            {
              "description": "ingit runtime configuration file",
              "ingit-version": "0.3.0",
              "machines": [
                {
                  "name": "desktop",
                  "repos_path": "~/Projects"
                },
                {
                  "interactive": false,
                  "names": ["server", "server.domain.com"],
                  "repos_path": "$HOME/Projects"
                }
              ]
            }
        
        
        repositories configuraion
        ~~~~~~~~~~~~~~~~~~~~~~~~~
        
        It's a file that lists all registered projects.
        
        Example:
        
        .. code:: json
        
            {
              "description": "ingit repositories configuration file",
              "ingit-version": "0.3.0",
              "repos": [
                {
                  "name": "ingit",
                  "remotes": {
                    "github": "git@github.com:mbdevpl/ingit.git"
                  },
                  "tags": [
                    "active",
                    "git",
                    "github",
                    "my",
                    "python"
                  ]
                },
                {
                  "name": "pylint",
                  "remotes": {
                    "github": "git@github.com:mbdevpl/pylint.git",
                    "source": "https://github.com/PyCQA/pylint"
                  },
                  "tags": [
                    "external",
                    "github",
                    "python"
                  ]
                }
              ]
            }
        
        
        command details
        ---------------
        
        Below, details of each command are described.
        
        
        ingit summary
        ~~~~~~~~~~~~~
        
        Show summary of registered repositories and status of configured repository root.
        
        First of all, print a list of registered repositories. By default, all registered repositories
        are listed, but, as in case of most commands, the results can be filtered via a predicate or regex.
        
        Independently, print a list of all unregistered repositories and all not versioned paths present
        in the configured repositories root.
        
        
        ingit register
        ~~~~~~~~~~~~~~
        
        Start tracking a repository in ingit.
        
        .. code:: bash
        
            ingit register [--tags TAG ...] [PATH]
        
        The initial configuration is set according to basic repository information:
        its root directory name becomes "name", its absolute path becomes "path", and
        its currently configured remotes become "remotes". You can edit the
        configuration manually afterwards.
        
        Use ``PATH`` to provide the path to root directory of repository.
        
        Use ``--tags`` to provide tags for this repository, they will be added to the initial configuration.
        
        
        ingit status
        ~~~~~~~~~~~~
        
        Perform git status, as well as other diagnostic git commands.
        
        Execute:
        
        *   ``git status --short`` to inform about any uncommited changes,
        *   ``git log tracking_branch..branch`` to inform about commits that are not yet pushed to the remote,
        *   ``git log branch..tracking_branch`` to inform about commits that are not yet merged from the remote.
        
        Additionally, compare registered remotes with actual remotes to make sure that ingit
        configuration is in sync with the repository metadata.
        
        other commands
        ~~~~~~~~~~~~~~
        
        TODO.
        
        
        requirements
        ============
        
        Python version >= 3.5.
        
        Python libraries as specified in `requirements.txt <https://github.com/mbdevpl/ingit/blob/v0.4.2/requirements.txt>`_.
        
        Building and running tests additionally requires packages listed in `test_requirements.txt <https://github.com/mbdevpl/ingit/blob/v0.4.2/test_requirements.txt>`_.
        
        Tested on Linux, OS X and Windows.
        
Keywords: tools,vcs,repository management,git,submodules
Platform: UNKNOWN
Classifier: Development Status :: 1 - Planning
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Software Development :: Version Control
Classifier: Topic :: System :: Archiving :: Backup
Classifier: Topic :: System :: Archiving :: Mirroring
Classifier: Topic :: System :: Monitoring
Classifier: Topic :: Utilities
Requires-Python: >=3.5
