{ "info": { "author": "Simon McCartney", "author_email": "simon.mccartnet@hp.com", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7" ], "description": "# gitshelf - a shelf full of git repos\n\nManage a collection of git repos that you don't want to manage as sub-modules\n\nCreated to be used to manage a set of salt states, formula & pillars in a controlled fashion, the default config file is a YAML file that can also be loaded as a pillar (for whatever reason).\nUsing the branch parameter, you can pin a repo to a branch, sha1, tag, whatever you need to keep it at your known good version.\n\nAlso supports creating symlinks for you.\n\n\n\n## Install\n\ngitshelf is published on pypi [here](https://pypi.python.org/pypi/gitshelf), so you can install from pypi using pip:\n\n pip install gitshelf\n\n\nYou can also install from the github repo:\n\n pip install git+http://github.com/gitshelf/gitshelf\n\nWe use the python [sh](https://pypi.python.org/pypi/sh) sub process interface to work with git repos, so you'll need a standard git cli install, if you don't know how to do that, this might be the wrong tool for you.\n\n## Usage\n\nHere's a sample gitshelf.yml\n\n books:\n - book: \"srv/salt/state/base\"\n git: \"ssh://deploy-user@internal-git-repo-server/salt/state-base\"\n - book: \"srv/salt/state/sudoers-formula\"\n git: \"https://github.com/saltstack-formulas/sudoers-formula.git\"\n #\n # Pillars, an example of using a specific branch\n - book: \"srv/salt/pillar/base\"\n git: \"ssh://deploy-user@internal-git-repo-server/salt/pillar-base\"\n branch: \"staging\"\n - book: srv/salt/pillar/base/top.sls\n link: some/link/target.sls\n\n\n### Create the required clones\n\n $ gitshelf install\n\n### Check for repo drift\n\nRun `git status` against each repo, reporting drift\n\n $ gitshelf status\n\n### Discover all the repos\nCrudely create a gitshelf.yml for the current directory, recurses down through the directory looking for git repos (by looking for .git/config) and symlinks:\n\n $ gitshelf discover\n books:\n - book: srv/salt/pillar/base\n git: ssh://simonm@gerrit.paas.hpcloud.net:29418/paas-core/salt-openstack/pillar-base\n branch: 7a46de1c2b666dda2c37ee9183ef28c0a4b0f82d\n - book: srv/salt/pillar/env/someplace\n link: ../../base\n - book: srv/salt/state/base\n git: ssh://simonm@gerrit.paas.hpcloud.net:29418/paas-core/salt-openstack/state-base\n branch: dbfb89908011bb9e177dd3ceac0369e3ca884937\n - book: srv/salt/state/beaver-formula\n git: ssh://simonm@gerrit.paas.hpcloud.net:29418/paas-share/salt/beaver-formula.git\n branch: 0d00d407cef62bcc4e9a2fe8e7d5b21aebdddaa3\n - book: srv/salt/state/dbaas_state_env\n git: ssh://simonm@gerrit.paas.hpcloud.net:29418/paas-core/salt-openstack/dbaas_state_env\n branch: 9bbe4bd94951aa5c47f17efe5fedcc230551e8d1\n - book: srv/salt/state/elasticsearch-formula\n git: ssh://simonm@gerrit.paas.hpcloud.net:29418/paas-share/salt/elasticsearch-formula.git\n branch: 36252f32d48a54c598c9d52b011ec8b7625d164c\n - book: srv/salt/state/logstash-formula\n git: ssh://simonm@gerrit.paas.hpcloud.net:29418/paas-share/salt/logstash-formula.git\n branch: ef246438c2aeb7f9d934409191edd7dc1ebf904e\n\nOr use the branch name instead of the SHA1:\n\n $ gitshelf discover --use-branch\n books:\n - book: srv/salt/pillar/base\n git: ssh://simonm@gerrit.paas.hpcloud.net:29418/paas-core/salt-openstack/pillar-base\n branch: ae1az1\n - book: srv/salt/pillar/env/someplace\n link: ../../base\n - book: srv/salt/state/base\n git: ssh://simonm@gerrit.paas.hpcloud.net:29418/paas-core/salt-openstack/state-base\n branch: master\n - book: srv/salt/state/beaver-formula\n git: ssh://simonm@gerrit.paas.hpcloud.net:29418/paas-share/salt/beaver-formula.git\n branch: master\n\n### Tokens & Environments\ngitshelf supports token replacement in the `gitshelf.yml`:\n\n defaults:\n environment: dev\n\n environments:\n prod:\n description: \"Prod deploy kit, use the r/o git mirror\"\n tokens:\n giturlbase: \"https://paas-core-salt-ae1@gerrit.paas.hpcloud.net\"\n dev:\n description: \"dev deploy kit, use the gerrit repo\"\n tokens:\n giturlbase: \"ssh://simonm@gerrit.paas.hpcloud.net:29418\"\n\n books:\n - book: \"/srv/salt/state/formulae/beaver\"\n git: \"{giturlbase}/paas-share/salt/beaver-formula\"\n branch: 'b3032ff60bbfc77472f79f621b214d0393963796'\n\nYou can specify the environment to use using the `--environment` option:\n\n gitshelf install --environment prod\n\nTODO: Add support for specifying a token on the command line\n\n## Development\n\npbr introduces some weirdness under virtualenv, so we use the site packages to help make\nsure pbr doesn't break everything.\n\n virtualenv --system-site-packages .venv && . .venv/bin/activate && python setup.py develop\n # hack\n\n## publishing a new version\n\nbuild & upload to pypi in a single hit:\n\n git tag -s 0.0.x\n python setup.py sdist upload", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/gitshelf/gitshelf", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "gitshelf", "package_url": "https://pypi.org/project/gitshelf/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/gitshelf/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/gitshelf/gitshelf" }, "release_url": "https://pypi.org/project/gitshelf/0.0.4/", "requires_dist": null, "requires_python": null, "summary": "Manage a shelf full of git repos", "version": "0.0.4" }, "last_serial": 1236246, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "f71490758134e2b0bcbf3a656725f03d", "sha256": "d4e03614cfda01f441024f685999ff4cffc46a677d02112d83c51424d40830ea" }, "downloads": -1, "filename": "gitshelf-0.0.2.tar.gz", "has_sig": false, "md5_digest": "f71490758134e2b0bcbf3a656725f03d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20794, "upload_time": "2014-08-11T20:57:22", "url": "https://files.pythonhosted.org/packages/59/66/f02fbc53ed63b227d5b2c420ca78c4447d65144d3f0aae0d5fb3a9ecc531/gitshelf-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "ca0e2f53bc2ad430639a2f45cad84af3", "sha256": "398fd317cd095fd0e4397e374f100c64c231625650583adecc154a826d24b82f" }, "downloads": -1, "filename": "gitshelf-0.0.3.tar.gz", "has_sig": false, "md5_digest": "ca0e2f53bc2ad430639a2f45cad84af3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18967, "upload_time": "2014-08-19T13:49:10", "url": "https://files.pythonhosted.org/packages/cd/bb/2d78c839c9f18a1f37bbcb72af2dd0e461f4aac9bc1f6e8e6bd0fc4e7704/gitshelf-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "12695e420d57787b4f94b8a1fe96fbb5", "sha256": "96b87cb74613da7545bef7836632551225daa1f2287571097498134ff0219a8c" }, "downloads": -1, "filename": "gitshelf-0.0.4.tar.gz", "has_sig": false, "md5_digest": "12695e420d57787b4f94b8a1fe96fbb5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19469, "upload_time": "2014-09-24T11:36:48", "url": "https://files.pythonhosted.org/packages/cd/ae/fe010bd942228158e97a1426d3d7d05b8f64cb02b70ecaef1bd0e601671c/gitshelf-0.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "12695e420d57787b4f94b8a1fe96fbb5", "sha256": "96b87cb74613da7545bef7836632551225daa1f2287571097498134ff0219a8c" }, "downloads": -1, "filename": "gitshelf-0.0.4.tar.gz", "has_sig": false, "md5_digest": "12695e420d57787b4f94b8a1fe96fbb5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19469, "upload_time": "2014-09-24T11:36:48", "url": "https://files.pythonhosted.org/packages/cd/ae/fe010bd942228158e97a1426d3d7d05b8f64cb02b70ecaef1bd0e601671c/gitshelf-0.0.4.tar.gz" } ] }