{ "info": { "author": "Florian Kempenich", "author_email": "Flori@nKempenich.com", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Topic :: Utilities" ], "description": "# Hierarchy\n[![Travis](https://img.shields.io/travis/FlorianKempenich/hierarchy.svg)](https://travis-ci.org/FlorianKempenich/hierarchy) [![PyPI](https://img.shields.io/pypi/v/hierarchy.svg)](https://pypi.org/project/hierarchy/)\n\nHierarchy is a simple tool that allows you to clone and maintain an entire hierarchy of Git repository in _one single command_:\n```\n$ hierarchy\n```\n> TODO: Add picture of `hierarchy` in action\n\n## Quick-Start\n\n1. **Install**\n ```bash\n $ pip install hierarchy\n ```\n\n2. **Create the _Hierarchy_ file**\n ```bash\n $ nano ~/.hierarchy\n ```\n\n > _Sample Hierarchy File_\n > ```yaml\n > repos:\n > - path: ~/Dev/CliTools\n > url: git@github.com:FlorianKempenich/Hierarchy.git\n > \n > - path: ~/Dev/CliTools\n > url: git@github.com:FlorianKempenich/kata.git\n > \n > - path: ~/Dev/CliTools/DevOps\n > url: git@github.com:FlorianKempenich/ansible-droplet.git\n > \n > - path: ~/Dev/HomeAutomation\n > url: git@github.com:FlorianKempenich/Appdaemon-Test-Framework.git\n > name: appdaemontestframework\n > ```\n\n3. **Run _Hierarchy_**\n ```bash\n $ hierarchy\n ```\n\n## _Hierarchy_ file structure\n\nThe _Hierarchy_ file represent the flat hierarchy of all the git repository to clone and maintain. \n\nIt consists of a list of entries, under the key `repos`, each representing a repository to clone.\n```yaml\nrepos:\n - REPO_TO_CLONE_1\n \n - REPO_TO_CLONE_2\n \n - REPO_TO_CLONE_3\n```\nEach repository has the following structure:\n```yaml\nurl: \"URL of the project. The same used to clone the repository with `git clone`\"\npath: \"The local path where to clone the repository. It can contain `~` to represent HOME\"\nname: \"OPTIONAL - A name to override the default repository name when cloning\"\n```\n\n**The repository will be cloned at:** `path/name` \nIf no `name` is provided, the repository name will be used.\n\n\nA sample _Hierarchy_ file might look like this:\n```yaml\nrepos:\n - path: ~/Dev/CliTools\n url: git@github.com:FlorianKempenich/Hierarchy.git\n \n - path: ~/Dev/CliTools\n url: git@github.com:FlorianKempenich/kata.git\n \n - path: ~/Dev/CliTools/DevOps\n url: git@github.com:FlorianKempenich/ansible-droplet.git\n \n - path: ~/Dev/HomeAutomation\n url: git@github.com:FlorianKempenich/Appdaemon-Test-Framework.git\n name: appdaemontestframework\n```\n\n## Options\n\n* ### `-f` / `--file HIERARCHY_FILE`\n A hierarchy file to use. \n _Default:_ `~/.hierarchy`\n \n* ### `-v` / `--verbose`\n Enable verbose mode\n \n* ### `--help`\n Show help\n\n\n\n---\n## Work In Progress\n\n- [x] Allow for `~` in the `path`\n- [x] Create directories if do not exist\n- [ ] Clone with all submodules\n- [ ] If directory exists and not empty:\n - [ ] Is not same repo => Skip and notify user (ERROR)\n - [ ] Is not repo => Skip and notify user (ERROR)\n - [ ] Is correct repo:\n - [ ] Has no local modifications and up to date with remote =>\n - [ ] Update (pull)\n - [ ] Update with all submodules\n - [ ] Has local modifications => Skip and notify user (WARN)\n - [ ] Is not up to date with remote => Skip and notify user (WARN)", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/FlorianKempenich/Hierarchy", "keywords": "git batch", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "hierarchy", "package_url": "https://pypi.org/project/hierarchy/", "platform": "", "project_url": "https://pypi.org/project/hierarchy/", "project_urls": { "Homepage": "https://github.com/FlorianKempenich/Hierarchy" }, "release_url": "https://pypi.org/project/hierarchy/0.4.0/", "requires_dist": null, "requires_python": "", "summary": "Clone and Maintain an entire hierarchy of Git repositories in one command", "version": "0.4.0" }, "last_serial": 5507779, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "560fe968e791c0dae0079d0b3f045b5a", "sha256": "1037eda989a3029cd00f914d082ab6a947a63f6eae0efb43f62cf2d38c979265" }, "downloads": -1, "filename": "hierarchy-0.1.2.tar.gz", "has_sig": false, "md5_digest": "560fe968e791c0dae0079d0b3f045b5a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2233, "upload_time": "2019-07-09T10:48:18", "url": "https://files.pythonhosted.org/packages/d1/ac/11c8b6b139761c1c97737fcb084174306986298832777e7cc7b212a65a4e/hierarchy-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "f204f39b6856656edfa52cba5095985f", "sha256": "6c619c4e66d67101eb408cfd5a98345ca11a1cde782625df39ae46987a7a446a" }, "downloads": -1, "filename": "hierarchy-0.2.0.tar.gz", "has_sig": false, "md5_digest": "f204f39b6856656edfa52cba5095985f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3195, "upload_time": "2019-07-09T12:00:34", "url": "https://files.pythonhosted.org/packages/6c/7e/ee6e7b12008eb6d42e438f2c5648ac87ef8340b16b66ce47827c7889386d/hierarchy-0.2.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "02e37fd8cfebcf555eb45ad15fae5d7c", "sha256": "4cf63124cf75f980cd0a5f12c7200d4d57f60956246ff2ed0da8fd3e212c8b15" }, "downloads": -1, "filename": "hierarchy-0.3.1.tar.gz", "has_sig": false, "md5_digest": "02e37fd8cfebcf555eb45ad15fae5d7c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3860, "upload_time": "2019-07-09T13:36:32", "url": "https://files.pythonhosted.org/packages/65/49/ff38945129ded07658349cd554660013e2bb55fba99e8bb7cf018b133063/hierarchy-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "3521d8d745a0a754d7874d0019bbc026", "sha256": "554aae64de700170491efbc63963198364c8ef7790fc67f5ebf1162128634447" }, "downloads": -1, "filename": "hierarchy-0.4.0.tar.gz", "has_sig": false, "md5_digest": "3521d8d745a0a754d7874d0019bbc026", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4045, "upload_time": "2019-07-09T15:30:29", "url": "https://files.pythonhosted.org/packages/2b/81/421ffe6068793a933e0589dc25224b65b4d722c2ef74402596a54d48e336/hierarchy-0.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3521d8d745a0a754d7874d0019bbc026", "sha256": "554aae64de700170491efbc63963198364c8ef7790fc67f5ebf1162128634447" }, "downloads": -1, "filename": "hierarchy-0.4.0.tar.gz", "has_sig": false, "md5_digest": "3521d8d745a0a754d7874d0019bbc026", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4045, "upload_time": "2019-07-09T15:30:29", "url": "https://files.pythonhosted.org/packages/2b/81/421ffe6068793a933e0589dc25224b65b4d722c2ef74402596a54d48e336/hierarchy-0.4.0.tar.gz" } ] }