{ "info": { "author": "Ethan Jucovy", "author_email": "ejucovy@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "This plugin provides two-way integration with gitolite: https://github.com/sitaramc/gitolite\n\n1. Users who don't have read access to a repository in Gitolite will be blocked from viewing that repository in Trac's web browser\n2. Trac admins may manage users' gitolite-based repository permissions through the Trac web interface\n3. Trac admins may add and remove users' SSH public keys through the Trac web interface to control access to the gitolite system\n4. Trac admins may use a \"Create New Repository\" feature to initialize an empty gitolite repository through the Trac web interface\n\nInstallation \n============\n\nOverview\n--------\n\n1. Install Trac and Gitolite on the same server.\n2. Ensure that the system user running the Trac process has filesystem\n read access to all gitolite repositories in the present and\n future. The simplest way to do this is to run Trac as the gitolite\n user; the more correct way is to add the Trac and Gitolite users to\n a shared group, set ``UMASK=>0027`` in ``.gitolite.rc`` as well as\n running chmod to fix up permissions on the already-created files.\n3. Ensure that the system user running the Trac process can clone and\n push the gitolite-admin repository, by setting up an SSH keypair\n for the Trac user, adding that public key to ``gitolite-admin/keydir``\n and adding RW+ (or just RW) permissions to the corresponding user\n in ``gitolite-admin/conf/gitolite.conf`` for \"repo gitolite-admin\".\n4. Tell Trac about the existence of the gitolite-admin repository by\n running a command like ``trac-admin repository add\n gitolite-admin $GITOLITE_HOME/repositories/gitolite-admin.git git``\n5. Install the trac_gitolite plugin, enable its components in trac.ini\n and prepend \"GitolitePermissionPolicy\" to your site's trac.ini\n permission_policies settings.\n\n\nDetailed Instructions\n---------------------\n\nFirst, install both Trac and Gitolite in the standard ways. They must\nbe installed on the same server.\n\nYou will need to ensure that Trac has the necessary read access to the \nfilesystem directory that contains your gitolite repositories. If Trac \nis running as user \"wsgi\" and gitolite has been installed to run as user\n\"git\" with a homedir /home/git/ you will probably want to run a command \non your server like this::\n\n sudo groupadd infra\n sudo usermod -a -G infra wsgi\n sudo usermod -a -G infra git\n sudo chown -R git:infra /home/git/repositories/\n sudo chmod -R g+rXs /home/git/repositories/\n\n(The +s ensures that new files created in the git repositories, like\nnew commit objects in the repos, will retain the \"infra\" group-ownership\nrather than reverting to the git user's primary group.)\n\nYou will also need to ensure that Trac can continue to read all needed\nfiles over time. One way to do this is to set the UMASK setting in\n``.gitolite.rc`` to 0027. Another way would be to set the repository\nconfiguration ``core.sharedRepository = group`` in all existing and new\nrepositories (including gitolite-admin) using a repository template.\n\nNow Trac will be able to read from your gitolite repositories using its\nstandard repository features. \n\nYou then need to add the gitolite-admin repository itself to Trac.\nThis will allow Trac to read configuration files directly from the\ngitolite-admin repository using its own version-control APIs. Do this\nwith a command line::\n\n trac-admin /path/to/env/ repository add gitolite-admin /home/git/repositories/gitolite-admin.git git\n\nFrom now on, to add an existing gitolite repository named\n\"my-first-repo\" to your\nTrac system, you would add a Trac git repository named \"my-first-repo\"\nwith directory ``/home/git/repositories/my-first-repo.git``\nthrough Trac's standard administrative web interface, shell scripts,\nor configuration files.\n\nNext, you will need to grant the Trac system user read and write\npermissions on the gitolite-admin repository through gitolite itself.\nThis is how Trac will write changes to your Gitolite system (web-based\nuser, permission and repository management) -- it will clone the\ngitolite-admin repo, write changes, commit and push them back to the\nserver. \n\nTo do this -- again supposing that Trac is running as user \"wsgi\" --\nyou will run commands on your server like this::\n\n sudo su wsgi\n ssh-keygen\n exit\n cd /tmp/\n git clone git@localhost:gitolite-admin.git\n cd /tmp/gitolite-admin/\n echo \"repo gitolite-admin\n RW+ = wsgi\" >> ./conf/gitolite.conf\n sudo cp ~wsgi/.ssh/id_rsa.pub ./keydir/wsgi.pub\n git add keydir/wsgi.pub conf/gitolite.conf\n git commit -m \"configuring trac_gitolite permissions\"\n git push\n\nFinally, enable the trac_gitolite components in trac.ini for your site::\n\n [components]\n trac_gitolite.* = enabled\n\nThis will add three new panels to the \"Version Control\" section in the Trac Admin. To additionally enable the permission policy, add to your trac.ini::\n\n [trac]\n permission_policies = GitolitePermissionPolicy, AuthzPolicy, \n DefaultPermissionPolicy, LegacyAttachmentPolicy\n\nConfiguration\n=============\n\nSensible defaults are provided that should work for most typical\ninstallations of Trac and Gitolite. The following trac.ini options\n(all in a `[trac-gitolite]` section) can be modified if necessary:\n\n* admin_reponame: defaults to gitolite-admin; this is the name *in\n trac* of the gitolite-admin repository\n* admin_real_reponame: defaults to gitolite-admin; this is the name\n *in gitolite* of the gitolite-admin repository\n* admin_ssh_path: defaults to git@localhost:gitolite-admin.git\n* admin_system_user: defaults to \"trac\"; this is the name *in\n gitolite* of the system user running the trac web process\n\n* default_private: defaults to True; when set to True (the default)\n repositories known to Trac which are missing from gitolite.conf \n will not be visible through the Trac source browser to any users.\n Set this to False to defer those repositories' permissions to the\n rest of the Trac permission system.\n* all_includes_anonymous: defaults to False; when set to True,\n repositories with `@all = R` in `gitolite.conf` will be viewable\n through the web by anonymous users. The default is to make these\n repositories viewable by all logged-in users only.\n\nKnown Deficiencies\n==================\n\nPatches are welcome for any of these known deficiencies:\n\n* Only the most basic Gitolite configuration is supported; any of the\n following advanced gitolite features will cause the plugin to fail:\n\n * refexes are unsupported: they cannot be configured through\n the Trac admin UI, and they are not respected by the Trac\n Browser permission policy.\n * deny rules are unsupported\n * user groups (aside from `@all`) are unsupported\n * project groups are unsupported\n * conf includes are unsupported\n * permissions other than R, W, + are unsupported: C, D, M\n* Probably there are other unsupported advanced Gitolite features that\n I don't even know about -- feel free to tell me about them\n* The process of creating a new repo is a bit confusing (first create\n it in Gitolite Repositories, then add it in Repositories)\n* The permission-management UI is overwhelming\n* All users are assumed to have the same usernames in Trac as their\n gitolite names.\n* All repositories are assumed to have the same names in Trac as they\n do in gitolite.\n* The behavior of Trac repository aliases have not been tested at all\n* I think TRAC_ADMIN is not respected (TRAC_ADMIN users should have\n access to all repositories regardless of the gitolite.conf\n permissions, unless a configuration option says otherwise)\n* Comments in the gitolite conf file will be overwritten when saving\n changes through Trac; in general, the gitolite conf file's\n particular contents, ordering and formatting will not be preserved\n reliably through Trac writes.\n* The whole approach -- of having Trac clone, edit, commit and push\n the gitolite-admin repository during the user's web request with\n subprocesses -- is a pretty terrible hack, but I don't know if\n there's any possible alternative. (I don't think Gitolite has an\n API.) Using dulwich instead of `subprocess.call(['git', 'clone'])`\n etc would reduce the hackishness I guess.\n0.3.1 (Dec 06 2012)\n-------------------\n\nFixed error in previous release.\n\n0.3.0 (Dec 06 2012)\n-------------------\n\nPermission manager no longer deletes configuration for users who are mentioned in\ngitolite.conf but absent from the keydir, and no longer deletes configuration for\ngroups.\n\n0.2.4 (Nov 10 2012)\n-------------------\n\nFixing formatting issues (in docs and in MANIFEST.in) in previous release.\n\n0.2.3 (Nov 10 2012)\n-------------------\n\nFixing formatting issues (in docs and in MANIFEST.in) in previous release.\n\n0.2.2 (Nov 10 2012)\n-------------------\n\nFixing formatting issues (in docs and in MANIFEST.in) in previous release.\n\n0.2.1 (Nov 10 2012)\n-------------------\n\nFixing formatting issues (in docs and in MANIFEST.in) in previous release.\n \n0.2.0 (Nov 10 2012)\n-------------------\n\nAdded MANIFEST.in to ensure that template files are included in installed package.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://trac-hacks.org/wiki/GitolitePlugin", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "trac-GitolitePlugin", "package_url": "https://pypi.org/project/trac-GitolitePlugin/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/trac-GitolitePlugin/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://trac-hacks.org/wiki/GitolitePlugin" }, "release_url": "https://pypi.org/project/trac-GitolitePlugin/0.3.1/", "requires_dist": null, "requires_python": null, "summary": "two-way integration between trac and gitolite", "version": "0.3.1" }, "last_serial": 800840, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "a7007f3aebfffbb06649df28ac0445f8", "sha256": "5a81eb8c49f3431d7218515319d74ec78f70e753b4989e3d0f009b689e044bd8" }, "downloads": -1, "filename": "trac-GitolitePlugin-0.1.tar.gz", "has_sig": false, "md5_digest": "a7007f3aebfffbb06649df28ac0445f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7807, "upload_time": "2012-08-22T14:04:33", "url": "https://files.pythonhosted.org/packages/81/4c/063245dbf978a42b59bc42dec7bb1bcd718a9ac3fd9609f54e99faa8c9bb/trac-GitolitePlugin-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "07c3aa3cee571e79706227737c830589", "sha256": "3de2d3b78551658b14fbacf1e0f80ce19fa94d99de3ba4697dd82169c0d34963" }, "downloads": -1, "filename": "trac-GitolitePlugin-0.2.tar.gz", "has_sig": false, "md5_digest": "07c3aa3cee571e79706227737c830589", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12038, "upload_time": "2012-11-10T15:23:33", "url": "https://files.pythonhosted.org/packages/10/3f/cd79070c6b6da41a65824fd413a4b5aef87c62b4bef1cfe19d123a9ca4db/trac-GitolitePlugin-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "f752952dc3ca0aabea666c9aba60cd39", "sha256": "fd4d1941ae2108b149ec1b92e239dbc1d2554f26de0c3fe7d0473097e170fa42" }, "downloads": -1, "filename": "trac-GitolitePlugin-0.2.1.tar.gz", "has_sig": false, "md5_digest": "f752952dc3ca0aabea666c9aba60cd39", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12130, "upload_time": "2012-11-10T15:26:10", "url": "https://files.pythonhosted.org/packages/c2/08/8c7f66f7fa5ee44483447c5bf2f49d74f01dc745c5152d307a5d88c46e98/trac-GitolitePlugin-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "e9ec40932baf91e6f33e279f0fc5f79b", "sha256": "d33cb124064df5190070f00d21017c8f86a6ab6a070b1748024d414a0c7ab1e3" }, "downloads": -1, "filename": "trac-GitolitePlugin-0.2.2.tar.gz", "has_sig": false, "md5_digest": "e9ec40932baf91e6f33e279f0fc5f79b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12205, "upload_time": "2012-11-10T15:31:24", "url": "https://files.pythonhosted.org/packages/de/6d/57739f2ff4cefb03790d8184cd627dad727d0ef0c5f25ad3f4f22c3e8210/trac-GitolitePlugin-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "da40181554a3f1850abbf0853b02a658", "sha256": "c4ed50b64b1ecd0c1b6b99abf4420f36fadd1e80df3ccbb5f16c915a53dfd3f5" }, "downloads": -1, "filename": "trac-GitolitePlugin-0.2.3.tar.gz", "has_sig": false, "md5_digest": "da40181554a3f1850abbf0853b02a658", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12222, "upload_time": "2012-11-10T15:42:09", "url": "https://files.pythonhosted.org/packages/7a/ef/e2f233f58f2032a802d6d8a4f4753819ee2d54aa4ac9e4b3e489fbc956e4/trac-GitolitePlugin-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "45879a94560957f7574ee279eea65f36", "sha256": "1294a4e4b13e3c1da56a9af112e1c8b1a36f81ba968e8ce43001fa9307326dda" }, "downloads": -1, "filename": "trac-GitolitePlugin-0.2.4.tar.gz", "has_sig": false, "md5_digest": "45879a94560957f7574ee279eea65f36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12234, "upload_time": "2012-11-10T15:44:23", "url": "https://files.pythonhosted.org/packages/93/ba/244ae0df0ace7953970ee9a53d8f8c7d383901943118da899b2f6b712c44/trac-GitolitePlugin-0.2.4.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "6e899b9fa2aaec01df94a0d0d508e5ee", "sha256": "4010d61fa2c47e81eebfc97bdb11283f06c8caebdd957c6201de2f7626fc578c" }, "downloads": -1, "filename": "trac-GitolitePlugin-0.3.tar.gz", "has_sig": false, "md5_digest": "6e899b9fa2aaec01df94a0d0d508e5ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12424, "upload_time": "2012-12-07T00:54:48", "url": "https://files.pythonhosted.org/packages/7f/4d/70168c9a4c93146cb44b61a53b1599ba5e7f279244c0fc61790a236047ad/trac-GitolitePlugin-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "9ecca2444c1a8acb5894a3672c8541ac", "sha256": "47a66186a6088d4a19857e334f3cf1d0f5652c44d5521ef05890e10a9e5eecff" }, "downloads": -1, "filename": "trac-GitolitePlugin-0.3.1.tar.gz", "has_sig": false, "md5_digest": "9ecca2444c1a8acb5894a3672c8541ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12477, "upload_time": "2012-12-07T00:58:49", "url": "https://files.pythonhosted.org/packages/8f/a6/c9061d5345561fa40b35eee1c2dd7a902266256783ef619fd523db2df9f9/trac-GitolitePlugin-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9ecca2444c1a8acb5894a3672c8541ac", "sha256": "47a66186a6088d4a19857e334f3cf1d0f5652c44d5521ef05890e10a9e5eecff" }, "downloads": -1, "filename": "trac-GitolitePlugin-0.3.1.tar.gz", "has_sig": false, "md5_digest": "9ecca2444c1a8acb5894a3672c8541ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12477, "upload_time": "2012-12-07T00:58:49", "url": "https://files.pythonhosted.org/packages/8f/a6/c9061d5345561fa40b35eee1c2dd7a902266256783ef619fd523db2df9f9/trac-GitolitePlugin-0.3.1.tar.gz" } ] }