Show More
@@ -0,0 +1,37 b'' | |||
|
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |
|
2 | <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" enable-background="new 0 0 163 30" xml:space="preserve" height="30" viewBox="0 0 140 30" width="140" version="1.1" y="0px" x="0px"> | |
|
3 | <metadata> | |
|
4 | <rdf:RDF> | |
|
5 | <cc:Work rdf:about=""> | |
|
6 | <dc:format>image/svg+xml</dc:format> | |
|
7 | <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> | |
|
8 | <dc:title/> | |
|
9 | </cc:Work> | |
|
10 | </rdf:RDF> | |
|
11 | </metadata> | |
|
12 | <g display="none"> | |
|
13 | <rect display="inline" height="163" width="256" y="-66.5" x="-24" fill="#404c2c"/> | |
|
14 | </g> | |
|
15 | <g transform="matrix(.83 0 0 1 5.6391 0)"> | |
|
16 | <g fill="#b1d579"> | |
|
17 | <path d="m26.04 25.875v-20.64l5.451-0.473v21.113h-5.451zm17.215 0h-6.141l-5.451-8.066 5.589-6.704h5.555l-5.555 6.481 6.003 8.289z"/> | |
|
18 | <path d="m58.951 21.592c0 1.141 0.379 1.557 1.242 1.809l-1.138 2.865c-2.174-0.141-3.588-0.668-4.416-2.143-1.311 1.641-3.347 2.225-5.52 2.225-3.657 0-5.969-1.918-5.969-4.617 0-3.227 3.036-4.979 8.59-4.979h1.863v-0.641c0-1.751-0.862-2.28-3.105-2.28-1.173 0-2.967 0.278-4.795 0.779l-1.242-2.893c2.312-0.695 4.83-1.085 6.9-1.085 5.313 0 7.59 1.808 7.59 5.229v5.731zm-5.347 0.194v-2.614h-1.346c-2.484 0-3.691 0.695-3.691 2.169 0 1.169 0.793 1.864 2.139 1.864 1.276 0 2.242-0.529 2.898-1.419z"/> | |
|
19 | <path d="m68.057 21.73c0 0.834 0.345 1.141 0.932 1.141 0.276 0 0.655-0.057 0.897-0.139l1.069 3.115c-0.931 0.305-2.242 0.5-3.519 0.5-3.036 0-4.83-1.447-4.83-4.173v-16.939l5.451-0.473v16.968z"/> | |
|
20 | <path d="m77.785 21.73c0 0.834 0.345 1.141 0.932 1.141 0.276 0 0.655-0.057 0.897-0.139l1.069 3.115c-0.931 0.305-2.242 0.5-3.519 0.5-3.036 0-4.83-1.447-4.83-4.173v-16.939l5.451-0.473v16.968z"/> | |
|
21 | <path d="m88.169 5.819c0 1.418-1.346 2.503-3.243 2.503-1.896 0-3.208-1.085-3.208-2.503 0-1.419 1.312-2.504 3.208-2.504 1.897 0 3.243 1.085 3.243 2.504zm-5.935 20.056v-14.771h5.451v14.771h-5.451z"/> | |
|
22 | <path d="m102.93 25.18c-1.379 0.779-3.312 1.168-4.968 1.168-4.036-0.027-6.003-1.863-6.003-5.341v-6.843h-2.588v-3.06h2.588v-3.199l5.451-0.5v3.7h4.209l-0.587 3.06h-3.622v6.787c0 1.419 0.586 1.92 1.725 1.92 0.621 0 1.242-0.14 1.967-0.501l1.828 2.809z"/> | |
|
23 | <path d="m120.04 15.082v10.793h-5.45v-10.042c0-1.558-0.691-1.975-1.726-1.975-1.208 0-2.208 0.695-3.175 1.892v10.125h-5.45v-20.64l5.45-0.445v7.9c1.483-1.363 3.141-2.059 5.279-2.059 3.174 0 5.072 1.641 5.072 4.451z"/> | |
|
24 | <path d="m139.5 19.783h-11.35c0.379 2.643 1.932 3.365 4.174 3.365 1.484 0 2.795-0.416 4.382-1.308l2.243 2.447c-1.829 1.168-4.176 2.06-7.143 2.06-6.105 0-9.211-3.172-9.211-7.789 0-4.422 3.002-7.928 8.557-7.928 5.242 0 8.451 2.782 8.451 7.566 0.001 0.474-0.033 1.142-0.102 1.587zm-5.244-2.838c-0.034-2.002-0.794-3.394-2.968-3.394-1.793 0-2.896 0.946-3.139 3.589h6.105l0.002-0.195z"/> | |
|
25 | <path d="m156.78 21.592c0 1.141 0.379 1.557 1.242 1.809l-1.139 2.865c-2.175-0.141-3.589-0.668-4.416-2.143-1.312 1.641-3.348 2.225-5.521 2.225-3.658 0-5.97-1.918-5.97-4.617 0-3.227 3.035-4.979 8.59-4.979h1.863v-0.641c0-1.751-0.861-2.28-3.104-2.28-1.172 0-2.968 0.278-4.795 0.779l-1.242-2.893c2.312-0.695 4.83-1.085 6.899-1.085 5.312 0 7.591 1.808 7.591 5.229l0.002 5.731zm-5.347 0.194v-2.614h-1.346c-2.484 0-3.691 0.695-3.691 2.169 0 1.169 0.793 1.864 2.14 1.864 1.275 0 2.24-0.529 2.897-1.419z"/> | |
|
26 | </g> | |
|
27 | </g> | |
|
28 | <g fill="#b1d579"> | |
|
29 | <path d="m8.155 18.736c-0.086-0.21-0.048-0.579-0.048-0.579l-0.097-8.098h-1.149l0.098 8.398s-0.034 0.455 0.091 0.709c0.125 0.255 0.413 0.599 0.413 0.599l3.491 3.384s0.107 0.122 0.292 0.486l0.001-1.876-2.884-2.702c0 0.002-0.122-0.11-0.208-0.321z"/> | |
|
30 | <path d="m19.362 23.255c0.088-0.331 0.089-0.608 0.089-0.608l-0.01-2.976h-1.237v3.082s-0.007 0.113-0.069 0.254c-0.063 0.142-0.091 0.173-0.091 0.173l-2.319 2.395h1.569l1.768-1.832c0.001-0.001 0.217-0.17 0.3-0.488z"/> | |
|
31 | <path d="m12.905 15.81c0.18-0.288 0.437-0.463 0.437-0.463l2.998-3.073s0.511-0.461 0.622-0.782c0.108-0.321 0.045-1.436 0.045-1.436l-0.111-6.44h-1.491l0.077 6.441s0.062 0.514 0 0.726-0.294 0.481-0.294 0.481l-3.137 3.212s-0.638 0.705-0.743 0.934c-0.104 0.228-0.057 1.347-0.057 1.347l-0.003 5.005-0.001 1.876-0.002 1.938h1.479l0.051-8.819c-0.002-0.001-0.048-0.66 0.13-0.947z"/> | |
|
32 | </g> | |
|
33 | <g stroke="#b1d579" fill="none" stroke-miterlimit="10"> | |
|
34 | <circle cx="18.723" cy="17.973" r="1.698" stroke-width="1.4318"/> | |
|
35 | <circle cx="7.454" cy="7.291" r="2.769" stroke-width="1.7898"/> | |
|
36 | </g> | |
|
37 | </svg> |
@@ -21,6 +21,6 b' syntax: regexp' | |||
|
21 | 21 | ^kallithea\.db$ |
|
22 | 22 | ^test\.db$ |
|
23 | 23 | ^Kallithea\.egg-info$ |
|
24 |
^ |
|
|
24 | ^my\.ini$ | |
|
25 | 25 | ^fabfile.py |
|
26 | 26 | ^\.idea$ |
@@ -1,6 +1,6 b'' | |||
|
1 | ========= | |
|
2 | Kallithea | |
|
3 | ========= | |
|
1 | ================ | |
|
2 | Kallithea README | |
|
3 | ================ | |
|
4 | 4 | |
|
5 | 5 | About |
|
6 | 6 | ----- |
@@ -23,15 +23,12 b' Kallithea was forked from RhodeCode in J' | |||
|
23 | 23 | |
|
24 | 24 | Installation |
|
25 | 25 | ------------ |
|
26 |
|
|
|
27 | ||
|
28 | easy_install kallithea | |
|
29 | ||
|
30 | Or:: | |
|
26 | Official releases of Kallithea can be installed via:: | |
|
31 | 27 | |
|
32 | 28 | pip install kallithea |
|
33 | 29 | |
|
34 | Detailed instructions and links may be found on the Installation page. | |
|
30 | The development repository is kept very stable and used in production by the | |
|
31 | developers - you can do the same. | |
|
35 | 32 | |
|
36 | 33 | Please visit http://packages.python.org/Kallithea/installation.html for |
|
37 | 34 | more details. |
@@ -40,14 +37,10 b' more details.' | |||
|
40 | 37 | Source code |
|
41 | 38 | ----------- |
|
42 | 39 | |
|
43 | The latest sources can be obtained from https://kallithea-scm.org/repos/kallithea | |
|
44 | ||
|
40 | The latest sources can be obtained from https://kallithea-scm.org/repos/kallithea. | |
|
45 | 41 | |
|
46 | MIRRORS: | |
|
47 | ||
|
48 | Issue tracker and sources at Bitbucket_ | |
|
49 | ||
|
50 | https://bitbucket.org/conservancy/kallithea | |
|
42 | The issue tracker and a repository mirror can be found at Bitbucket_ on | |
|
43 | https://bitbucket.org/conservancy/kallithea. | |
|
51 | 44 | |
|
52 | 45 | |
|
53 | 46 | |
@@ -67,7 +60,7 b' Kallithea Features' | |||
|
67 | 60 | - Users can fork other users repos, and compare them at any time. |
|
68 | 61 | - Built-in versioned paste functionality (Gist) for sharing code snippets. |
|
69 | 62 | - Integrates easily with other systems, with custom created mappers you can connect it to almost |
|
70 |
any issue tracker, and with a |
|
|
63 | any issue tracker, and with a JSON-RPC API you can make much more. | |
|
71 | 64 | - Built-in commit API lets you add, edit and commit files right from Kallithea |
|
72 | 65 | web interface using simple editor or upload binary files using simple form. |
|
73 | 66 | - Powerful pull request driven review system with inline commenting, |
@@ -75,9 +68,9 b' Kallithea Features' | |||
|
75 | 68 | - Importing and syncing repositories from remote locations for Git_, Mercurial_ and Subversion. |
|
76 | 69 | - Mako templates let you customize the look and feel of the application. |
|
77 | 70 | - Beautiful diffs, annotations and source code browsing all colored by pygments. |
|
78 | Raw diffs are made in Git-diff format for both VCS systems, including Git_ binary-patches | |
|
71 | Raw diffs are made in Git-diff format for both VCS systems, including Git_ binary-patches. | |
|
79 | 72 | - Mercurial_ and Git_ DAG graphs and Flot-powered graphs with zooming and statistics |
|
80 | to track activity for repositories | |
|
73 | to track activity for repositories. | |
|
81 | 74 | - Admin interface with user/permission management. Admin activity journal, logs |
|
82 | 75 | pulls, pushes, forks, registrations and other actions made by all users. |
|
83 | 76 | - Server side forks. It is possible to fork a project and modify it freely |
@@ -85,69 +78,68 b' Kallithea Features' | |||
|
85 | 78 | - reST and Markdown README support for repositories. |
|
86 | 79 | - Full text search powered by Whoosh on the source files, commit messages, and file names. |
|
87 | 80 | Built-in indexing daemons, with optional incremental index build |
|
88 | (no external search servers required all in one application) | |
|
81 | (no external search servers required all in one application). | |
|
89 | 82 | - Setup project descriptions/tags and info inside built in DB for easy, |
|
90 | 83 | non-filesystem operations. |
|
91 | 84 | - Intelligent cache with invalidation after push or project change, provides |
|
92 | 85 | high performance and always up to date data. |
|
93 | - RSS/Atom feeds, Gravatar support, downloadable sources as zip/tar/gz | |
|
94 | - Optional async tasks for speed and performance using Celery_ | |
|
86 | - RSS/Atom feeds, Gravatar support, downloadable sources as zip/tar/gz. | |
|
87 | - Optional async tasks for speed and performance using Celery_. | |
|
95 | 88 | - Backup scripts can do backup of whole app and send it over scp to desired |
|
96 | location | |
|
97 | - Based on Pylons, SQLAlchemy, SQLite, Whoosh, vcs | |
|
98 | ||
|
99 | ||
|
100 | Incoming / Plans | |
|
101 | ---------------- | |
|
89 | location. | |
|
90 | - Based on Pylons, SQLAlchemy, SQLite, Whoosh, vcs. | |
|
102 | 91 | |
|
103 | - Finer granular permissions per branch, or subrepo | |
|
104 | - Web-based merges for pull requests | |
|
105 | - Tracking history for each lines in files | |
|
106 | - Simple issue tracker | |
|
107 | - SSH-based authentication with server side key management | |
|
108 | - Commit based built in wiki system | |
|
109 | - More statistics and graph (global annotation + some more statistics) | |
|
110 | - Other advancements as development continues (or you can of course make | |
|
111 | additions and or requests) | |
|
112 | 92 | |
|
113 | 93 | License |
|
114 | 94 | ------- |
|
115 | 95 | |
|
116 | ``Kallithea`` is released under the GPLv3 license. | |
|
96 | ``Kallithea`` is released under the GPLv3 license. ``Kallithea`` is a | |
|
97 | `Software Freedom Conservancy`_ project and thus controlled by a non-profit organization. | |
|
98 | No commercial entity can take ownership of the project and change the direction. | |
|
99 | ||
|
100 | Kallithea started out as an effort to make sure the existing GPLv3 codebase would stay | |
|
101 | available under a legal license. Kallithea thus has to stay GPLv3 compatible ... | |
|
102 | but we are also happy it is GPLv3 and happy to keep it that way. | |
|
103 | A different license (such as AGPL) could perhaps help attract a different community | |
|
104 | with a different mix of Free Software people and companies but we are happy with the current focus. | |
|
117 | 105 | |
|
118 | 106 | |
|
119 | Getting help | |
|
120 |
--------- |
|
|
107 | Community | |
|
108 | --------- | |
|
109 | ||
|
110 | ``Kallithea`` is maintained by its users who contribute the fixes they would like to see. | |
|
111 | ||
|
112 | Get in touch with the rest of the community: | |
|
121 | 113 | |
|
122 | Listed bellow are various support resources that should help. | |
|
114 | - Join the mailing list users and developers - see | |
|
115 | http://lists.sfconservancy.org/mailman/listinfo/kallithea-general. | |
|
116 | ||
|
117 | - Use IRC and join #kallithea on FreeNode (irc.freenode.net) | |
|
118 | or use http://webchat.freenode.net/?channels=kallithea. | |
|
119 | ||
|
120 | - Follow ``Kallithea`` on Twitter, **@KallitheaSCM**. | |
|
121 | ||
|
122 | - Issues can be reported at `issue tracker <https://bitbucket.org/conservancy/kallithea/issues>`_. | |
|
123 | 123 | |
|
124 | 124 | .. note:: |
|
125 | 125 | |
|
126 | 126 | Please try to read the documentation before posting any issues, especially |
|
127 | 127 | the **troubleshooting section** |
|
128 | 128 | |
|
129 | - Open an issue at `issue tracker <https://bitbucket.org/conservancy/kallithea/issues>`_ | |
|
130 | ||
|
131 | - Join #kallithea on FreeNode (irc.freenode.net) | |
|
132 | or use http://webchat.freenode.net/?channels=kallithea for web access to irc. | |
|
133 | ||
|
134 | You can follow this project on Twitter, **@KallitheaSCM**. | |
|
135 | ||
|
136 | 129 | |
|
137 | 130 | Online documentation |
|
138 | 131 | -------------------- |
|
139 | 132 | |
|
140 | Online documentation for the current version of Kallithea is available at | |
|
141 | - http://packages.python.org/Kallithea/ | |
|
142 | - http://kallithea.readthedocs.org/ | |
|
133 | Online documentation for the current version of Kallithea is available at https://pythonhosted.org/Kallithea/. | |
|
134 | Documentation for the current development version can be found on http://kallithea.readthedocs.org/. | |
|
143 | 135 | |
|
144 |
You |
|
|
136 | You can also build the documentation locally: go to ``docs/`` and run:: | |
|
145 | 137 | |
|
146 | 138 | make html |
|
147 | 139 | |
|
148 | 140 | (You need to have Sphinx_ installed to build the documentation. If you don't |
|
149 | 141 | have Sphinx_ installed you can install it via the command: |
|
150 |
`` |
|
|
142 | ``pip install sphinx``) | |
|
151 | 143 | |
|
152 | 144 | |
|
153 | 145 | Converting from RhodeCode |
@@ -160,7 +152,7 b' Currently, you have two options for work' | |||
|
160 | 152 | Maintaining Interoperability |
|
161 | 153 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
162 | 154 | |
|
163 |
Interoperability with RhodeCode 2.2. |
|
|
155 | Interoperability with RhodeCode 2.2.X installations is provided so you don't | |
|
164 | 156 | have to immediately commit to switching to Kallithea. This option will most |
|
165 | 157 | likely go away once the two projects have diverged significantly. |
|
166 | 158 | |
@@ -173,7 +165,7 b' This location will depend on where you i' | |||
|
173 | 165 | python setup.py install |
|
174 | 166 | |
|
175 | 167 | then you will find this location at |
|
176 |
``$VIRTUAL_ENV/lib/python2.7/site-packages/Kallithea- |
|
|
168 | ``$VIRTUAL_ENV/lib/python2.7/site-packages/Kallithea-0.1-py2.7.egg/kallithea``. | |
|
177 | 169 | |
|
178 | 170 | One-time Conversion |
|
179 | 171 | ~~~~~~~~~~~~~~~~~~~ |
@@ -188,10 +180,10 b' database, using the database string you ' | |||
|
188 | 180 | pip install sqlalchemy-migrate |
|
189 | 181 | python kallithea/bin/rebranddb.py sqlite:///kallithea.db |
|
190 | 182 | |
|
191 | .. WARNING:: | |
|
183 | .. Note:: | |
|
192 | 184 | |
|
193 | If you used the other method for interoperability, overwrite brand.py with | |
|
194 |
a |
|
|
185 | If you started out using the branding interoperability approach mentioned | |
|
186 | above, watch out for stray brand.pyc after removing brand.py. | |
|
195 | 187 | |
|
196 | 188 | .. _virtualenv: http://pypi.python.org/pypi/virtualenv |
|
197 | 189 | .. _Python: http://www.python.org/ |
@@ -203,3 +195,4 b' database, using the database string you ' | |||
|
203 | 195 | .. _Git: http://git-scm.com/ |
|
204 | 196 | .. _Celery: http://celeryproject.org/ |
|
205 | 197 | .. _vcs: http://pypi.python.org/pypi/vcs |
|
198 | .. _Software Freedom Conservancy: http://sfconservancy.org/ |
@@ -10,7 +10,7 b' methods. Everything is available by send' | |||
|
10 | 10 | <your_server>/_admin/api . |
|
11 | 11 | |
|
12 | 12 | |
|
13 | API ACCESS FOR WEB VIEWS | |
|
13 | API access for web views | |
|
14 | 14 | ++++++++++++++++++++++++ |
|
15 | 15 | |
|
16 | 16 | API access can also be turned on for each web view in Kallithea that is |
@@ -36,7 +36,7 b' Exposing raw diffs is a good way to inte' | |||
|
36 | 36 | 3rd party services like code review, or build farms that could download archives. |
|
37 | 37 | |
|
38 | 38 | |
|
39 | API ACCESS | |
|
39 | API access | |
|
40 | 40 | ++++++++++ |
|
41 | 41 | |
|
42 | 42 | Clients must send JSON encoded JSON-RPC requests:: |
@@ -75,7 +75,7 b' the reponse will have a failure descript' | |||
|
75 | 75 | *result* will be null. |
|
76 | 76 | |
|
77 | 77 | |
|
78 | API CLIENT | |
|
78 | API client | |
|
79 | 79 | ++++++++++ |
|
80 | 80 | |
|
81 | 81 | Kallithea comes with a `kallithea-api` command line tool providing a convenient |
@@ -109,7 +109,7 b' This will create a `~/.config/kallithea`' | |||
|
109 | 109 | so you don't have to specify them every time. |
|
110 | 110 | |
|
111 | 111 | |
|
112 | API METHODS | |
|
112 | API methods | |
|
113 | 113 | +++++++++++ |
|
114 | 114 | |
|
115 | 115 |
@@ -4,40 +4,54 b'' | |||
|
4 | 4 | Contributing to Kallithea |
|
5 | 5 | ========================= |
|
6 | 6 | |
|
7 | If you would like to contribute to Kallithea, please contact us, any help is | |
|
8 | greatly appreciated! | |
|
7 | Kallithea is developed and maintained by its users. Please join us and scratch | |
|
8 | your own itch. | |
|
9 | ||
|
10 | ||
|
11 | Infrastructure | |
|
12 | -------------- | |
|
13 | ||
|
14 | The main repository is hosted at Our Own Kallithea (aka OOK) on | |
|
15 | https://kallithea-scm.org/repos/kallithea/ (which is our self-hosted instance | |
|
16 | of Kallithea). | |
|
9 | 17 | |
|
10 | Could I request that you make your source contributions by first forking the | |
|
11 | Kallithea repository on bitbucket_ | |
|
12 | https://bitbucket.org/conservancy/kallithea and then make your changes to | |
|
13 | your forked repository. Please post all fixes into **dev** bookmark since your | |
|
14 | change might be already fixed there and i try to merge all fixes from dev into | |
|
15 | stable, and not the other way. Finally, when you are finished with your changes, | |
|
16 | please send us a pull request. | |
|
18 | For now, we use Bitbucket_ for `Pull Requests`_ and `Issue Tracker`_ services. The | |
|
19 | issue tracker is for tracking bugs, not for "support", discussion or ideas - | |
|
20 | please use the `mailing list`_ to reach the community. | |
|
17 | 21 | |
|
18 | To run Kallithea in a development version you always need to install the latest | |
|
19 | required libs. Simply clone Kallithea and switch to beta branch:: | |
|
22 | We use Weblate_ to translate the user interface messages into languages other | |
|
23 | than English. Join our project on `Hosted Weblate`_ to help us. | |
|
24 | To register, you can use your Bitbucket or GitHub account. | |
|
25 | ||
|
26 | ||
|
27 | Getting started | |
|
28 | --------------- | |
|
29 | ||
|
30 | To get started with development:: | |
|
20 | 31 | |
|
21 | 32 | hg clone https://kallithea-scm.org/repos/kallithea |
|
22 | ||
|
23 | after downloading/pulling Kallithea make sure you run:: | |
|
24 | ||
|
33 | cd kallithea | |
|
34 | virtualenv ../kallithea-venv | |
|
35 | source ../kallithea-venv/bin/activate | |
|
25 | 36 | python setup.py develop |
|
37 | paster make-config Kallithea my.ini | |
|
38 | paster setup-db my.ini --user=user --email=user@example.com --password=password --repos=/tmp | |
|
39 | paster serve my.ini --reload & | |
|
40 | firefox http://127.0.0.1:5000/ | |
|
26 | 41 |
|
|
27 | command to install/verify all required packages, and prepare development | |
|
28 | enviroment. | |
|
42 | You can also start out by forking https://bitbucket.org/conservancy/kallithea | |
|
43 | on Bitbucket_ and create a local clone of your own fork. | |
|
44 | ||
|
29 | 45 | |
|
30 | There are two files in the directory production.ini and developement.ini copy | |
|
31 | the `development.ini` file as rc.ini (which is excluded from version controll) | |
|
32 | and put all your changes like db connection or server port in there. | |
|
46 | Running tests | |
|
47 | ------------- | |
|
33 | 48 | |
|
34 |
After finishing your changes make sure all tests pass |
|
|
49 | After finishing your changes make sure all tests pass cleanly. You can run | |
|
35 | 50 | the testsuite running ``nosetest`` from the project root, or if you use tox |
|
36 | 51 | run tox for python2.6-2.7 with multiple database test. When using `nosetests` |
|
37 | 52 | test.ini file is used and by default it uses sqlite for tests, edit this file |
|
38 | 53 | to change your testing enviroment. |
|
39 | 54 | |
|
40 | ||
|
41 | 55 | There's a special set of tests for push/pull operations, you can runn them using:: |
|
42 | 56 | |
|
43 | 57 | paster serve test.ini --pid-file=test.pid --daemon |
@@ -45,7 +59,102 b" There's a special set of tests for push/" | |||
|
45 | 59 | kill -9 $(cat test.pid) |
|
46 | 60 | |
|
47 | 61 | |
|
48 | | Thank you for any contributions! | |
|
62 | Coding/contribution guidelines | |
|
63 | ------------------------------ | |
|
64 | ||
|
65 | Kallithea is GPLv3 and we assume all contributions are made by the | |
|
66 | committer/contributor and under GPLv3 unless explicitly stated. We do care a | |
|
67 | lot about preservation of copyright and license information for existing code | |
|
68 | that is brought into the project. | |
|
69 | ||
|
70 | We don't have a formal coding/formatting standard. We are currently using a mix | |
|
71 | of Mercurial (http://mercurial.selenic.com/wiki/CodingStyle), pep8, and | |
|
72 | consistency with existing code. Run whitespacecleanup.sh to avoid stupid | |
|
73 | whitespace noise in your patches. | |
|
74 | ||
|
75 | We support both Python 2.6.x and 2.7.x and nothing else. For now we don't care | |
|
76 | about Python 3 compatibility. | |
|
77 | ||
|
78 | We try to support the most common modern web browsers. IE8 is still supported | |
|
79 | to the extent it is feasible but we may stop supporting it very soon. | |
|
80 | ||
|
81 | We primarily support Linux and OS X on the server side but Windows should also work. | |
|
82 | ||
|
83 | Html templates should use 2 spaces for indentation ... but be pragmatic. We | |
|
84 | should use templates cleverly and avoid duplication. We should use reasonable | |
|
85 | semantic markup with classes and ids that can be used for styling and testing. | |
|
86 | We should only use inline styles in places where it really is semantic (such as | |
|
87 | display:none). | |
|
88 | ||
|
89 | JavaScript must use ';' between/after statements. Indentation 4 spaces. Inline | |
|
90 | multiline functions should be indented two levels - one for the () and one for | |
|
91 | {}. jQuery value arrays should have a leading $. | |
|
92 | ||
|
93 | Commit messages should have a leading short line summarizing the changes. For | |
|
94 | bug fixes, put "(Issue #123)" at the end of this line. | |
|
95 | ||
|
96 | Contributions will be accepted in most formats - such as pull requests on | |
|
97 | bitbucket, something hosted on your own Kallithea instance, or patches sent by | |
|
98 | mail to the kallithea-general mailing list. | |
|
99 | ||
|
100 | Make sure to test your changes both manually and with the automatic tests | |
|
101 | before posting. | |
|
102 | ||
|
103 | We care about quality and review and keeping a clean repository history. We | |
|
104 | might give feedback that requests polishing contributions until they are | |
|
105 | "perfect". We might also rebase and collapse and make minor adjustments to your | |
|
106 | changes when we apply them. | |
|
107 | ||
|
108 | We try to make sure we have consensus on the direction the project is taking. | |
|
109 | Everything non-sensitive should be discussed in public - preferably on the | |
|
110 | mailing list. We aim at having all non-trivial changes reviewed by at least | |
|
111 | one other core developer before pushing. Obvious non-controversial changes will | |
|
112 | be handled more casually. | |
|
113 | ||
|
114 | For now we just have one official branch ("default") and will keep it so stable | |
|
115 | that it can be (and is) used in production. Experimental changes should live | |
|
116 | elsewhere (for example in a pull request) until they are ready. | |
|
49 | 117 | |
|
50 | 118 | |
|
119 | "Roadmap" | |
|
120 | --------- | |
|
121 | ||
|
122 | We do not have a road map but are waiting for your contributions. Here are some | |
|
123 | ideas of places we might want to go - contributions in these areas are very | |
|
124 | welcome: | |
|
125 | ||
|
126 | * Front end: | |
|
127 | * kill YUI - more jQuery | |
|
128 | * remove other dependencies - especially the embedded cut'n'pasted ones | |
|
129 | * remove hardcoded styling in templates, make markup more semantic while moving all styling to css | |
|
130 | * switch to bootstrap or some other modern UI library and cleanup of style.css and contextbar.css | |
|
131 | * new fancy style that looks good | |
|
132 | * testing | |
|
133 | * better test coverage with the existing high level test framework | |
|
134 | * test even more high level and javascript - selenium/robot and splinter seems like the top candidates | |
|
135 | * more unit testing | |
|
136 | * code cleanup | |
|
137 | * move code from templates to controllers and from controllers to libs or models | |
|
138 | * more best practice for web apps and the frameworks | |
|
139 | * features | |
|
140 | * relax dependency version requirements after thorough testing | |
|
141 | * support for evolve | |
|
142 | * updates of PRs ... while preserving history and comment context | |
|
143 | * auto pr merge/rebase | |
|
144 | * ssh | |
|
145 | * bitbucket compatible wiki | |
|
146 | * realtime preview / wysiwyg when editing comments and files | |
|
147 | * make journal more useful - filtering on branches and files | |
|
148 | * community mode with self registration and personal space | |
|
149 | * improve documentation | |
|
150 | ||
|
151 | Thank you for your contribution! | |
|
152 | -------------------------------- | |
|
153 | ||
|
154 | ||
|
155 | .. _Weblate: http://weblate.org/ | |
|
156 | .. _Issue Tracker: https://bitbucket.org/conservancy/kallithea/issues?status=new&status=open | |
|
157 | .. _Pull Requests: https://bitbucket.org/conservancy/kallithea/pull-requests | |
|
51 | 158 | .. _bitbucket: http://bitbucket.org/ |
|
159 | .. _mailing list: http://lists.sfconservancy.org/mailman/listinfo/kallithea-general | |
|
160 | .. _Hosted Weblate: https://hosted.weblate.org/projects/kallithea/kallithea/ |
@@ -1,17 +1,21 b'' | |||
|
1 | 1 | .. _index: |
|
2 | 2 | |
|
3 | .. include:: ./../README.rst | |
|
3 | Administrators Guide | |
|
4 | -------------------- | |
|
5 | ||
|
6 | **Readme** | |
|
4 | 7 | |
|
5 | Users Guide | |
|
6 | ----------- | |
|
8 | .. toctree:: | |
|
9 | :maxdepth: 1 | |
|
7 | 10 | |
|
8 | **Installation:** | |
|
11 | readme | |
|
12 | ||
|
13 | **Installation** | |
|
9 | 14 | |
|
10 | 15 | .. toctree:: |
|
11 | 16 | :maxdepth: 1 |
|
12 | 17 | |
|
13 | 18 | installation |
|
14 | upgrade | |
|
15 | 19 | installation_win |
|
16 | 20 | installation_win_old |
|
17 | 21 | installation_iis |
@@ -4,69 +4,42 b'' | |||
|
4 | 4 | Installation on Unix/Linux |
|
5 | 5 | ========================== |
|
6 | 6 | |
|
7 |
``Kallithea`` is written entirely in Python. |
|
|
8 | sure, your not missing any system libraries and using right version of | |
|
9 | libraries required by Kallithea. There's also restriction in terms of mercurial | |
|
10 | clients. Minimal version of hg client known working fine with Kallithea is | |
|
11 | **1.6**. If you're using older client, please upgrade. | |
|
7 | ``Kallithea`` is written entirely in Python. Kallithea requires Python version | |
|
8 | 2.6 or higher. | |
|
9 | ||
|
10 | .. Note:: Alternative very detailed installation instructions for Ubuntu Server | |
|
11 | with celery, indexer and daemon scripts: https://gist.github.com/4546398 | |
|
12 | 12 | |
|
13 | 13 | |
|
14 |
Installing Kallithea from Py |
|
|
15 | ------------------------------------------------- | |
|
16 | ||
|
17 | Kallithea requires python version 2.6 or higher. | |
|
14 | Installing Kallithea from Python Package Index (PyPI) | |
|
15 | ----------------------------------------------------- | |
|
18 | 16 | |
|
19 | The easiest way to install ``kallithea`` is to run:: | |
|
20 | ||
|
21 | easy_install kallithea | |
|
22 | ||
|
23 | Or:: | |
|
17 | ``Kallithea`` can be installed from PyPI with:: | |
|
24 | 18 | |
|
25 | 19 | pip install kallithea |
|
26 | 20 | |
|
27 | If you prefer to install Kallithea manually simply grab latest release from | |
|
28 | http://pypi.python.org/pypi/Kallithea, decompress the archive and run:: | |
|
29 | 21 | |
|
30 | python setup.py install | |
|
31 | ||
|
32 | Step by step installation example for Windows | |
|
33 | --------------------------------------------- | |
|
34 | ||
|
35 | :ref:`installation_win` | |
|
36 | ||
|
22 | Installation in virtualenv | |
|
23 | -------------------------- | |
|
37 | 24 | |
|
38 | Step by step installation example for Linux | |
|
39 | ------------------------------------------- | |
|
40 | ||
|
25 | It is highly recommended to use a separate virtualenv_ for installing Kallithea. | |
|
26 | This way, all libraries required by Kallithea will be installed separately from your | |
|
27 | main Python installation and things will be less problematic when upgrading the | |
|
28 | system or Kallithea. | |
|
29 | An additional benefit of virtualenv_ is that it doesn't require root privileges. | |
|
41 | 30 | |
|
42 | For installing Kallithea i highly recommend using separate virtualenv_. This | |
|
43 | way many required by Kallithea libraries will remain sandboxed from your main | |
|
44 | python and making things less problematic when doing system python updates. | |
|
45 | ||
|
46 | Alternative very detailed installation instructions for Ubuntu Server with | |
|
47 | celery, indexer and daemon scripts: https://gist.github.com/4546398 | |
|
48 | ||
|
49 | ||
|
50 | - Assuming you have installed virtualenv_ create a new virtual environment | |
|
31 | - Assuming you have installed virtualenv_, create a new virtual environment | |
|
51 | 32 | using virtualenv command:: |
|
52 | 33 | |
|
53 |
virtualenv |
|
|
34 | virtualenv /srv/kallithea/venv | |
|
54 | 35 | |
|
36 | .. note:: Older versions of virtualenv required ``--no-site-packages`` to work | |
|
37 | correctly. It should no longer be necessary. | |
|
55 | 38 | |
|
56 | .. note:: Using ``--no-site-packages`` when generating your | |
|
57 | virtualenv is **very important**. This flag provides the necessary | |
|
58 | isolation for running the set of packages required by | |
|
59 | Kallithea. If you do not specify ``--no-site-packages``, | |
|
60 | it's possible that Kallithea will not install properly into | |
|
61 | the virtualenv, or, even if it does, may not run properly, | |
|
62 | depending on the packages you've already got installed into your | |
|
63 | Python's "main" site-packages dir. | |
|
39 | - this will install new virtualenv_ into `/srv/kallithea/venv`. | |
|
40 | - Activate the virtualenv_ in your current shell session by running:: | |
|
64 | 41 | |
|
65 | ||
|
66 | - this will install new virtualenv_ into `/opt/kallithea-venv`. | |
|
67 | - Activate the virtualenv_ by running:: | |
|
68 | ||
|
69 | source /opt/kallithea-venv/bin/activate | |
|
42 | source /srv/kallithea/venv/bin/activate | |
|
70 | 43 | |
|
71 | 44 | .. note:: If you're using UNIX, *do not* use ``sudo`` to run the |
|
72 | 45 | ``virtualenv`` script. It's perfectly acceptable (and desirable) |
@@ -75,19 +48,20 b' celery, indexer and daemon scripts: http' | |||
|
75 | 48 | - Make a folder for Kallithea data files, and configuration somewhere on the |
|
76 | 49 | filesystem. For example:: |
|
77 | 50 | |
|
78 |
mkdir / |
|
|
79 | ||
|
51 | mkdir /srv/kallithea | |
|
80 | 52 | |
|
81 | 53 | - Go into the created directory run this command to install kallithea:: |
|
82 | 54 | |
|
83 | easy_install kallithea | |
|
84 | ||
|
85 | or:: | |
|
86 | ||
|
87 | 55 | pip install kallithea |
|
88 | 56 | |
|
57 | Alternatively, download a .tar.gz from http://pypi.python.org/pypi/Kallithea, | |
|
58 | extract it and run:: | |
|
59 | ||
|
60 | python setup.py install | |
|
61 | ||
|
89 | 62 | - This will install Kallithea together with pylons and all other required |
|
90 | python libraries into activated virtualenv | |
|
63 | python libraries into the activated virtualenv. | |
|
64 | ||
|
91 | 65 | |
|
92 | 66 | Requirements for Celery (optional) |
|
93 | 67 | ---------------------------------- |
@@ -121,9 +95,103 b' http://ask.github.com/celery/getting-sta' | |||
|
121 | 95 | This is a very nice tutorial on how to start using celery_ with rabbitmq_ |
|
122 | 96 | |
|
123 | 97 | |
|
124 | You can now proceed to :ref:`setup` | |
|
125 | ----------------------------------- | |
|
98 | Next | |
|
99 | ---- | |
|
100 | ||
|
101 | You can now proceed to :ref:`setup`. | |
|
102 | ||
|
103 | ||
|
104 | Upgrading Kallithea from Python Package Index (PyPI) | |
|
105 | ----------------------------------------------------- | |
|
106 | ||
|
107 | .. note:: | |
|
108 | Firstly, it is recommended that you **always** perform a database and | |
|
109 | configuration backup before doing an upgrade. | |
|
110 | ||
|
111 | (These directions will use '{version}' to note that this is the version of | |
|
112 | Kallithea that these files were used with. If backing up your Kallithea | |
|
113 | instance from version 0.1 to 0.2, the ``my.ini`` file could be | |
|
114 | backed up to ``my.ini.0-1``.) | |
|
115 | ||
|
116 | ||
|
117 | If using a sqlite database, stop the Kallithea process/daemon/service, and | |
|
118 | then make a copy of the database file:: | |
|
119 | ||
|
120 | service kallithea stop | |
|
121 | cp kallithea.db kallithea.db.{version} | |
|
122 | ||
|
123 | ||
|
124 | Back up your configuration file:: | |
|
125 | ||
|
126 | cp my.ini my.ini.{version} | |
|
127 | ||
|
128 | ||
|
129 | Ensure that you are using the Python Virtual Environment that you'd originally | |
|
130 | installed Kallithea in:: | |
|
131 | ||
|
132 | pip freeze | |
|
133 | ||
|
134 | will list all packages installed in the current environment. If Kallithea | |
|
135 | isn't listed, change virtual environments to your venv location:: | |
|
136 | ||
|
137 | source /srv/kallithea/venv/bin/activate | |
|
138 | ||
|
139 | ||
|
140 | Once you have verified the environment you can upgrade ``Kallithea`` with:: | |
|
141 | ||
|
142 | pip install --upgrade kallithea | |
|
143 | ||
|
144 | ||
|
145 | Then run the following command from the installation directory:: | |
|
126 | 146 |
|
|
147 | paster make-config Kallithea my.ini | |
|
148 | ||
|
149 | This will display any changes made by the new version of Kallithea to your | |
|
150 | current configuration. It will try to perform an automerge. It's recommended | |
|
151 | that you re-check the content after the automerge. | |
|
152 | ||
|
153 | .. note:: | |
|
154 | Please always make sure your .ini files are up to date. Often errors are | |
|
155 | caused by missing params added in new versions. | |
|
156 | ||
|
157 | ||
|
158 | It is also recommended that you rebuild the whoosh index after upgrading since | |
|
159 | the new whoosh version could introduce some incompatible index changes. Please | |
|
160 | read the changelog to see if there were any changes to whoosh. | |
|
161 | ||
|
162 | ||
|
163 | The final step is to upgrade the database. To do this simply run:: | |
|
164 | ||
|
165 | paster upgrade-db my.ini | |
|
166 | ||
|
167 | This will upgrade the schema and update some of the defaults in the database, | |
|
168 | and will always recheck the settings of the application, if there are no new | |
|
169 | options that need to be set. | |
|
170 | ||
|
171 | ||
|
172 | .. note:: | |
|
173 | DB schema upgrade library has some limitations and can sometimes fail if you try to | |
|
174 | upgrade from older major releases. In such case simply run upgrades sequentially, eg. | |
|
175 | upgrading from 0.1.X to 0.3.X should be done like that: 0.1.X. > 0.2.X > 0.3.X | |
|
176 | You can always specify what version of Kallithea you want to install for example in pip | |
|
177 | `pip install Kallithea==0.2` | |
|
178 | ||
|
179 | You may find it helpful to clear out your log file so that new errors are | |
|
180 | readily apparent:: | |
|
181 | ||
|
182 | echo > kallithea.log | |
|
183 | ||
|
184 | Once that is complete, you may now start your upgraded Kallithea Instance:: | |
|
185 | ||
|
186 | service kallithea start | |
|
187 | ||
|
188 | Or:: | |
|
189 | ||
|
190 | paster serve /srv/kallithea/my.ini | |
|
191 | ||
|
192 | .. note:: | |
|
193 | If you're using Celery, make sure you restart all instances of it after | |
|
194 | upgrade. | |
|
127 | 195 | |
|
128 | 196 | |
|
129 | 197 | .. _virtualenv: http://pypi.python.org/pypi/virtualenv |
@@ -71,6 +71,7 b' If it was not installed or if you are us' | |||
|
71 | 71 | - Go to https://bootstrap.pypa.io |
|
72 | 72 | - Right-click on get-pip.py and choose Saves as... |
|
73 | 73 | - Run "python get-pip.py" in the folder where you downloaded get-pip.py (may require admin access). |
|
74 | ||
|
74 | 75 | (See http://stackoverflow.com/questions/4750806/how-to-install-pip-on-windows for explanations or alternatives) |
|
75 | 76 | |
|
76 | 77 | Note that pip.exe will be placed inside your Python installation's Scripts folder, which is likely not on your path. |
@@ -11,22 +11,22 b' Setting up Kallithea' | |||
|
11 | 11 | First, you will need to create a Kallithea configuration file. Run the |
|
12 | 12 | following command to do this:: |
|
13 | 13 | |
|
14 |
paster make-config Kallithea |
|
|
14 | paster make-config Kallithea my.ini | |
|
15 | 15 | |
|
16 |
- This will create the file ` |
|
|
16 | - This will create the file `my.ini` in the current directory. This | |
|
17 | 17 | configuration file contains the various settings for Kallithea, e.g proxy |
|
18 | 18 | port, email settings, usage of static files, cache, celery settings and |
|
19 | 19 | logging. |
|
20 | 20 | |
|
21 | 21 | |
|
22 |
Next, you need to create the databases used by Kallithea. I recommend t |
|
|
22 | Next, you need to create the databases used by Kallithea. It is recommended to | |
|
23 | 23 | use postgresql or sqlite (default). If you choose a database other than the |
|
24 |
default ensure you properly adjust the db url in your |
|
|
24 | default ensure you properly adjust the db url in your my.ini | |
|
25 | 25 | configuration file to use this other database. Kallithea currently supports |
|
26 | 26 | postgresql, sqlite and mysql databases. Create the database by running |
|
27 | 27 | the following command:: |
|
28 | 28 | |
|
29 |
paster setup-db |
|
|
29 | paster setup-db my.ini | |
|
30 | 30 | |
|
31 | 31 | This will prompt you for a "root" path. This "root" path is the location where |
|
32 | 32 | Kallithea will store all of its repositories on the current machine. After |
@@ -36,7 +36,7 b' up for you.' | |||
|
36 | 36 | |
|
37 | 37 | setup process can be fully automated, example for lazy:: |
|
38 | 38 | |
|
39 |
paster setup-db |
|
|
39 | paster setup-db my.ini --user=nn --password=secret --email=nn@your.kallithea.server --repos=/srv/repos | |
|
40 | 40 | |
|
41 | 41 | |
|
42 | 42 | - The ``setup-db`` command will create all of the needed tables and an |
@@ -52,22 +52,22 b' setup process can be fully automated, ex' | |||
|
52 | 52 | |
|
53 | 53 | You are now ready to use Kallithea, to run it simply execute:: |
|
54 | 54 | |
|
55 |
paster serve |
|
|
55 | paster serve my.ini | |
|
56 | 56 | |
|
57 | 57 | - This command runs the Kallithea server. The web app should be available at the |
|
58 |
127.0.0.1:5000. This ip and port is configurable via the |
|
|
58 | 127.0.0.1:5000. This ip and port is configurable via the my.ini | |
|
59 | 59 | file created in previous step |
|
60 | 60 | - Use the admin account you created above when running ``setup-db`` |
|
61 | 61 | to login to the web app. |
|
62 | 62 | - The default permissions on each repository is read, and the owner is admin. |
|
63 | 63 | Remember to update these if needed. |
|
64 |
- In the admin panel you can toggle |
|
|
64 | - In the admin panel you can toggle LDAP, anonymous, permissions settings. As | |
|
65 | 65 | well as edit more advanced options on users and repositories |
|
66 | 66 | |
|
67 | 67 | Optionally users can create `rcextensions` package that extends Kallithea |
|
68 | 68 | functionality. To do this simply execute:: |
|
69 | 69 | |
|
70 |
paster make-rcext |
|
|
70 | paster make-rcext my.ini | |
|
71 | 71 | |
|
72 | 72 | This will create `rcextensions` package in the same place that your `ini` file |
|
73 | 73 | lives. With `rcextensions` it's possible to add additional mapping for whoosh, |
@@ -96,10 +96,10 b' login accounts have the correct permissi' | |||
|
96 | 96 | using the Kallithea web interface.) |
|
97 | 97 | |
|
98 | 98 | If your main directory (the same as set in Kallithea settings) is for example |
|
99 |
set to **/ |
|
|
99 | set to **/srv/repos** and the repository you are using is named `kallithea`, then | |
|
100 | 100 | to clone via ssh you should run:: |
|
101 | 101 | |
|
102 |
hg clone ssh://user@server.com/ |
|
|
102 | hg clone ssh://user@server.com//srv/repos/kallithea | |
|
103 | 103 | |
|
104 | 104 | Using other external tools such as mercurial-server_ or using ssh key based |
|
105 | 105 | authentication is fully supported. |
@@ -112,12 +112,12 b' permissions against that.' | |||
|
112 | 112 | Setting up Whoosh full text search |
|
113 | 113 | ---------------------------------- |
|
114 | 114 | |
|
115 |
|
|
|
115 | The whoosh index can be build by using the paster | |
|
116 | 116 | command ``make-index``. To use ``make-index`` you must specify the configuration |
|
117 | 117 | file that stores the location of the index. You may specify the location of the |
|
118 | 118 | repositories (`--repo-location`). If not specified, this value is retrieved |
|
119 | from the Kallithea database. This was required prior to 1.2. Starting from | |
|
120 |
|
|
|
119 | from the Kallithea database. | |
|
120 | It is also possible to specify a comma separated list of | |
|
121 | 121 | repositories (`--index-only`) to build index only on chooses repositories |
|
122 | 122 | skipping any other found in repos location |
|
123 | 123 | |
@@ -126,23 +126,23 b' the `-f` option, indexing will run alway' | |||
|
126 | 126 | |
|
127 | 127 | For an incremental index build use:: |
|
128 | 128 | |
|
129 |
paster make-index |
|
|
129 | paster make-index my.ini | |
|
130 | 130 | |
|
131 | 131 | For a full index rebuild use:: |
|
132 | 132 | |
|
133 |
paster make-index |
|
|
133 | paster make-index my.ini -f | |
|
134 | 134 | |
|
135 | 135 | |
|
136 | 136 | building index just for chosen repositories is possible with such command:: |
|
137 | 137 | |
|
138 |
paster make-index |
|
|
138 | paster make-index my.ini --index-only=vcs,kallithea | |
|
139 | 139 | |
|
140 | 140 | |
|
141 | 141 | In order to do periodical index builds and keep your index always up to date. |
|
142 | 142 | It's recommended to do a crontab entry for incremental indexing. |
|
143 | 143 | An example entry might look like this:: |
|
144 | 144 | |
|
145 |
/path/to/python/bin/paster make-index /path/to/kallithea/ |
|
|
145 | /path/to/python/bin/paster make-index /path/to/kallithea/my.ini | |
|
146 | 146 | |
|
147 | 147 | When using incremental mode (the default) whoosh will check the last |
|
148 | 148 | modification date of each file and add it to be reindexed if a newer file is |
@@ -156,25 +156,19 b' or in the admin panel you can check `bui' | |||
|
156 | 156 | Setting up LDAP support |
|
157 | 157 | ----------------------- |
|
158 | 158 | |
|
159 |
Kallithea s |
|
|
159 | Kallithea supports LDAP authentication. In order | |
|
160 | 160 | to use LDAP, you have to install the python-ldap_ package. This package is |
|
161 | 161 | available via pypi, so you can install it by running |
|
162 | 162 | |
|
163 | using easy_install:: | |
|
164 | ||
|
165 | easy_install python-ldap | |
|
166 | ||
|
167 | using pip:: | |
|
168 | ||
|
169 | 163 | pip install python-ldap |
|
170 | 164 | |
|
171 | 165 | .. note:: |
|
172 | 166 | python-ldap requires some certain libs on your system, so before installing |
|
173 | 167 | it check that you have at least `openldap`, and `sasl` libraries. |
|
174 | 168 | |
|
175 |
LDAP settings are located in |
|
|
169 | LDAP settings are located in Admin->LDAP section. | |
|
176 | 170 | |
|
177 |
Here's a typical |
|
|
171 | Here's a typical LDAP setup:: | |
|
178 | 172 | |
|
179 | 173 | Connection settings |
|
180 | 174 | Enable LDAP = checked |
@@ -241,7 +235,7 b' Connection Security : required' | |||
|
241 | 235 | Plain non encrypted connection |
|
242 | 236 | |
|
243 | 237 | LDAPS connection |
|
244 |
Enable |
|
|
238 | Enable LDAPS connections. It will likely require `Port`_ to be set to | |
|
245 | 239 | a different value (standard LDAPS port is 636). When LDAPS is enabled |
|
246 | 240 | then `Certificate Checks`_ is required. |
|
247 | 241 | |
@@ -338,7 +332,7 b' Email Attribute : required' | |||
|
338 | 332 | The LDAP record attribute which represents the user's email address. |
|
339 | 333 | |
|
340 | 334 | If all data are entered correctly, and python-ldap_ is properly installed |
|
341 |
users should be granted access to Kallithea with |
|
|
335 | users should be granted access to Kallithea with LDAP accounts. At this | |
|
342 | 336 | time user information is copied from LDAP into the Kallithea user database. |
|
343 | 337 | This means that updates of an LDAP user object may not be reflected as a |
|
344 | 338 | user update in Kallithea. |
@@ -417,7 +411,7 b' reverse-proxy setup with basic auth::' | |||
|
417 | 411 | |
|
418 | 412 | AuthType Basic |
|
419 | 413 | AuthName "Kallithea authentication" |
|
420 |
AuthUserFile / |
|
|
414 | AuthUserFile /srv/kallithea/.htpasswd | |
|
421 | 415 | require valid-user |
|
422 | 416 | |
|
423 | 417 | RequestHeader unset X-Forwarded-User |
@@ -491,18 +485,18 b' can be found at *kallithea.lib.hooks*.' | |||
|
491 | 485 | Changing default encoding |
|
492 | 486 | ------------------------- |
|
493 | 487 | |
|
494 |
By default Kallithea uses utf8 encoding |
|
|
495 | can be changed, simply edit default_encoding in .ini file to desired one. | |
|
496 |
This affects many parts in Kallithea including |
|
|
488 | By default, Kallithea uses utf8 encoding. | |
|
489 | It is configurable as `default_encoding` in the .ini file. | |
|
490 | This affects many parts in Kallithea including user names, filenames, and | |
|
497 | 491 | encoding of commit messages. In addition Kallithea can detect if `chardet` |
|
498 | 492 | library is installed. If `chardet` is detected Kallithea will fallback to it |
|
499 | 493 | when there are encode/decode errors. |
|
500 | 494 | |
|
501 | 495 | |
|
502 | Setting Up Celery | |
|
503 | ----------------- | |
|
496 | Celery configuration | |
|
497 | -------------------- | |
|
504 | 498 | |
|
505 |
|
|
|
499 | Celery is configured in the Kallithea ini configuration files. | |
|
506 | 500 | Simply set use_celery=true in the ini file then add / change the configuration |
|
507 | 501 | variables inside the ini file. |
|
508 | 502 | |
@@ -537,7 +531,7 b' Nginx virtual host example' | |||
|
537 | 531 | |
|
538 | 532 | Sample config for nginx using proxy:: |
|
539 | 533 | |
|
540 |
upstream |
|
|
534 | upstream kallithea { | |
|
541 | 535 | server 127.0.0.1:5000; |
|
542 | 536 | # add more instances for load balancing |
|
543 | 537 | #server 127.0.0.1:5001; |
@@ -586,11 +580,11 b' Sample config for nginx using proxy::' | |||
|
586 | 580 | #root /path/to/installation/kallithea/public; |
|
587 | 581 | include /etc/nginx/proxy.conf; |
|
588 | 582 | location / { |
|
589 |
try_files $uri @ |
|
|
583 | try_files $uri @kallithea; | |
|
590 | 584 | } |
|
591 | 585 | |
|
592 |
location @ |
|
|
593 |
proxy_pass http:// |
|
|
586 | location @kallithea { | |
|
587 | proxy_pass http://kallithea; | |
|
594 | 588 | } |
|
595 | 589 | |
|
596 | 590 | } |
@@ -699,50 +693,66 b" that, you'll need to:" | |||
|
699 | 693 | |
|
700 | 694 | Here is a sample excerpt from an Apache Virtual Host configuration file:: |
|
701 | 695 | |
|
702 |
WSGIDaemonProcess |
|
|
703 | threads=4 \ | |
|
704 |
python-path=/ |
|
|
705 |
WSGIScriptAlias / / |
|
|
696 | WSGIDaemonProcess kallithea \ | |
|
697 | processes=1 threads=4 \ | |
|
698 | python-path=/srv/kallithea/pyenv/lib/python2.7/site-packages | |
|
699 | WSGIScriptAlias / /srv/kallithea/dispatch.wsgi | |
|
706 | 700 | WSGIPassAuthorization On |
|
707 | 701 | |
|
702 | Or if using a dispatcher wsgi script with proper virtualenv activation:: | |
|
703 | ||
|
704 | WSGIDaemonProcess kallithea processes=1 threads=4 | |
|
705 | WSGIScriptAlias / /srv/kallithea/dispatch.wsgi | |
|
706 | WSGIPassAuthorization On | |
|
707 | ||
|
708 | ||
|
708 | 709 | .. note:: |
|
709 |
|
|
|
710 | into above configuration | |
|
710 | When running apache as root, please make sure it doesn't run Kallithea as | |
|
711 | root, for examply by adding: `user=www-data group=www-data` to the configuration. | |
|
711 | 712 | |
|
712 | 713 | .. note:: |
|
713 |
|
|
|
714 | make sure you don't specify `processes=num` directive in the config | |
|
714 | If running Kallithea in multiprocess mode, | |
|
715 | make sure you set `instance_id = \*` in the configuration so each process | |
|
716 | gets it's own cache invalidationkey. | |
|
715 | 717 | |
|
716 | 718 | |
|
717 | 719 | Example wsgi dispatch script:: |
|
718 | 720 | |
|
719 | 721 | import os |
|
720 | 722 | os.environ["HGENCODING"] = "UTF-8" |
|
721 |
os.environ['PYTHON_EGG_CACHE'] = '/ |
|
|
723 | os.environ['PYTHON_EGG_CACHE'] = '/srv/kallithea/.egg-cache' | |
|
722 | 724 | |
|
723 | 725 | # sometimes it's needed to set the curent dir |
|
724 |
os.chdir('/ |
|
|
726 | os.chdir('/srv/kallithea/') | |
|
725 | 727 | |
|
726 | 728 | import site |
|
727 |
site.addsitedir("/ |
|
|
729 | site.addsitedir("/srv/kallithea/pyenv/lib/python2.7/site-packages") | |
|
728 | 730 | |
|
729 | 731 | from paste.deploy import loadapp |
|
730 | 732 | from paste.script.util.logging_config import fileConfig |
|
731 | 733 | |
|
732 |
fileConfig('/ |
|
|
733 |
application = loadapp('config:/ |
|
|
734 | fileConfig('/srv/kallithea/my.ini') | |
|
735 | application = loadapp('config:/srv/kallithea/my.ini') | |
|
736 | ||
|
737 | Or using proper virtualenv activation:: | |
|
738 | ||
|
739 | activate_this = '/srv/kallithea/venv/bin/activate_this.py' | |
|
740 | execfile(activate_this,dict(__file__=activate_this)) | |
|
734 | 741 | |
|
735 | Note: when using mod_wsgi you'll need to install the same version of | |
|
736 | Mercurial that's inside Kallithea's virtualenv also on the system's Python | |
|
737 | environment. | |
|
742 | import os | |
|
743 | os.environ['HOME'] = '/srv/kallithea' | |
|
744 | ||
|
745 | ini = '/srv/kallithea/kallithea.ini' | |
|
746 | from paste.script.util.logging_config import fileConfig | |
|
747 | fileConfig(ini) | |
|
748 | from paste.deploy import loadapp | |
|
749 | application = loadapp('config:' + ini) | |
|
738 | 750 |
|
|
739 | 751 |
|
|
740 | 752 | Other configuration files |
|
741 | 753 | ------------------------- |
|
742 | 754 | |
|
743 | Some example init.d scripts can be found in init.d directory:: | |
|
744 | ||
|
745 | https://kallithea-scm.org/repos/kallithea/files/tip/init.d/ | |
|
755 | Some example init.d scripts can be found in init.d directory: https://kallithea-scm.org/repos/kallithea/files/tip/init.d/ | |
|
746 | 756 | |
|
747 | 757 | .. _virtualenv: http://pypi.python.org/pypi/virtualenv |
|
748 | 758 | .. _python: http://www.python.org/ |
@@ -752,4 +762,3 b' Some example init.d scripts can be found' | |||
|
752 | 762 | .. _python-ldap: http://www.python-ldap.org/ |
|
753 | 763 | .. _mercurial-server: http://www.lshift.net/mercurial-server.html |
|
754 | 764 | .. _PublishingRepositories: http://mercurial.selenic.com/wiki/PublishingRepositories |
|
755 | .. _Issues tracker: https://bitbucket.org/conservancy/kallithea/issues |
@@ -1,6 +1,9 b'' | |||
|
1 | 1 | {% extends "basic/layout.html" %} |
|
2 | 2 | |
|
3 | 3 | {% block sidebarlogo %} |
|
4 | <div style="text-align:center;margin:10px;padding:20px;background:white"> | |
|
5 | <img src="{{pathto('_static/kallithea-logo.svg',1)}}"/> | |
|
6 | </div> | |
|
4 | 7 | <h3>Support Kallithea development</h3> |
|
5 | 8 | <div style="text-align:center"> |
|
6 | 9 | <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> |
@@ -9,7 +9,7 b' possibly debug them.' | |||
|
9 | 9 | |
|
10 | 10 | ** First make sure you're using the latest version available.** |
|
11 | 11 | |
|
12 |
|
|
|
12 | Enable detailed debug | |
|
13 | 13 | --------------------- |
|
14 | 14 | |
|
15 | 15 | Kallithea uses standard python logging modules to log it's output. |
@@ -19,7 +19,7 b' This change will allow to see much more ' | |||
|
19 | 19 | console. This generally helps a lot to track issues. |
|
20 | 20 | |
|
21 | 21 | |
|
22 |
|
|
|
22 | Enable interactive debug mode | |
|
23 | 23 | ----------------------------- |
|
24 | 24 | |
|
25 | 25 | To enable interactive debug mode simply comment out `set debug = false` in |
@@ -16,7 +16,7 b' delete a repository You can easy restore' | |||
|
16 | 16 | from the repository name, and internal repository storage (.hg/.git). There |
|
17 | 17 | is also a special command for cleaning such archived repos:: |
|
18 | 18 | |
|
19 |
paster cleanup-repos --older-than=30d |
|
|
19 | paster cleanup-repos --older-than=30d my.ini | |
|
20 | 20 | |
|
21 | 21 | This command will scan for archived repositories that are older than 30d, |
|
22 | 22 | display them and ask if you want to delete them (there's a --dont-ask flag also) |
@@ -5,24 +5,18 b' GIT support' | |||
|
5 | 5 | =========== |
|
6 | 6 | |
|
7 | 7 | |
|
8 |
Git support i |
|
|
9 |
client installed on the |
|
|
8 | Kallithea Git support is enabled by default. You just need a git | |
|
9 | command line client installed on the server to make Git work fully. | |
|
10 | 10 | |
|
11 | Although There is one limitation on git usage. | |
|
12 | ||
|
13 | - large pushes requires a http server with chunked encoding support. | |
|
11 | Web server with chunked encoding | |
|
12 | -------------------------------- | |
|
14 | 13 | |
|
15 | if you plan to use git you need to run Kallithea with some | |
|
16 | http server that supports chunked encoding which git http protocol uses, | |
|
17 | i recommend using waitress_ or gunicorn_ (linux only) for `paste` wsgi app | |
|
18 | replacement. Starting from version 1.4 waitress_ is the default wsgi server | |
|
19 | used in Kallithea. | |
|
14 | Large Git pushes do however require a http server with support for chunked encoding for POST. | |
|
20 | 15 | |
|
21 | To use, simply change change the following in the .ini file:: | |
|
16 | The Python web servers waitress_ and gunicorn_ (linux only) can be used. | |
|
17 | By default, Kallithea uses waitress_ for `paster serve` instead of the built-in `paste` WSGI server. | |
|
22 | 18 | |
|
23 | use = egg:Paste#http | |
|
24 | ||
|
25 | to:: | |
|
19 | The default paste server is controlled in the .ini file:: | |
|
26 | 20 | |
|
27 | 21 | use = egg:waitress#main |
|
28 | 22 | |
@@ -31,18 +25,18 b' or::' | |||
|
31 | 25 | use = egg:gunicorn#main |
|
32 | 26 | |
|
33 | 27 | |
|
34 |
A |
|
|
28 | Also make sure to comment out the following options:: | |
|
35 | 29 | |
|
36 | 30 | threadpool_workers = |
|
37 | 31 | threadpool_max_requests = |
|
38 | 32 | use_threadpool = |
|
39 | 33 | |
|
40 | 34 | |
|
41 | You can simply run `paster serve` as usual. | |
|
42 | ||
|
35 | Disabling Git | |
|
36 | ------------- | |
|
43 | 37 | |
|
44 | 38 | You can always disable git/hg support by editing a |
|
45 |
file **kallithea/__init__.py** and commenting out backend |
|
|
39 | file **kallithea/__init__.py** and commenting out the backend. | |
|
46 | 40 | |
|
47 | 41 | .. code-block:: python |
|
48 | 42 |
@@ -5,6 +5,12 b' Kallithea repository locking system' | |||
|
5 | 5 | =================================== |
|
6 | 6 | |
|
7 | 7 | |
|
8 | The scenario for repos with `locking function` enabled is that | |
|
9 | every initial clone and every pull gives users (with write permission) | |
|
10 | the exclusive right to do a push. | |
|
11 | ||
|
12 | Each repo can be manually unlocked by admin from the repo settings menu. | |
|
13 | ||
|
8 | 14 | | Repos with **locking function=disabled** is the default, that's how repos work |
|
9 | 15 | today. |
|
10 | 16 | | Repos with **locking function=enabled** behaves like follows: |
@@ -20,22 +26,13 b' influence this state:' | |||
|
20 | 26 | user has write/admin permissions on this repo |
|
21 | 27 | |
|
22 | 28 | |
|
23 | Kallithea will remember the user id who locked the repo | |
|
29 | Kallithea will remember the user id who locked the repo so | |
|
24 | 30 | only this specific user can unlock the repo (locked=false) by calling |
|
25 | 31 | |
|
26 | 32 | - `hg/git push <repo>` |
|
27 | 33 | |
|
28 |
|
|
|
29 | every command from any other user will result in http return code 423 (locked) | |
|
30 | ||
|
31 | ||
|
32 | additionally the http error includes the <user> that locked the repo | |
|
33 | (e.g. “repository <repo> locked by user <user>”) | |
|
34 | Every other command on that repo from this user and | |
|
35 | every command from any other user will result in http return code 423 (locked). | |
|
34 | 36 | |
|
35 | ||
|
36 | So the scenario of use for repos with `locking function` enabled is that | |
|
37 | every initial clone and every pull gives users (with write permission) | |
|
38 | the exclusive right to do a push. | |
|
39 | ||
|
40 | ||
|
41 | Each repo can be manually unlocked by admin from the repo settings menu. | |
|
37 | Additionally, the http error includes the <user> that locked the repo | |
|
38 | (e.g. “repository <repo> locked by user <user>”). |
@@ -6,7 +6,7 b' Statistics' | |||
|
6 | 6 | |
|
7 | 7 | The Kallithea statistics system makes heavy demands of the server resources, so |
|
8 | 8 | in order to keep a balance between usability and performance, the statistics are |
|
9 |
cached inside db and are gathered incrementally |
|
|
9 | cached inside db and are gathered incrementally. This is how Kallithea does | |
|
10 | 10 | this: |
|
11 | 11 | |
|
12 | 12 | With Celery disabled |
@@ -1,10 +1,10 b'' | |||
|
1 | 1 | .. _subrepos: |
|
2 | 2 | |
|
3 | 3 | ============================================= |
|
4 |
|
|
|
4 | Working with Kallithea and Mercurial subrepos | |
|
5 | 5 | ============================================= |
|
6 | 6 | |
|
7 |
|
|
|
7 | Example usage of Subrepos with Kallithea:: | |
|
8 | 8 | |
|
9 | 9 | ## init a simple repo |
|
10 | 10 | hg init repo1 |
@@ -14,24 +14,23 b' example usage of Subrepos with Kallithea' | |||
|
14 | 14 | hg ci --message "initial file 1" |
|
15 | 15 | |
|
16 | 16 | #clone subrepo we want to add |
|
17 |
hg clone http:// |
|
|
17 | hg clone http://kallithea.local/subrepo | |
|
18 | 18 | |
|
19 | 19 | ## use path like url to existing repo in Kallithea |
|
20 |
echo "subrepo = http:// |
|
|
20 | echo "subrepo = http://kallithea.local/subrepo" > .hgsub | |
|
21 | 21 | |
|
22 | 22 | hg add .hgsub |
|
23 | 23 | hg ci --message "added remote subrepo" |
|
24 | 24 | |
|
25 | 25 | |
|
26 | In the file list of a clone of repo1 you will see a connected subrepo at | |
|
27 | revision it was during cloning. | |
|
28 | Clicking in subrepos link should send you to proper repository in Kallithea. | |
|
26 | 29 | |
|
27 | In file list of repo1 you will see a connected subrepo at revision it was | |
|
28 | during cloning. | |
|
29 | Clicking in subrepos link should send you to proper repository in Kallithea | |
|
30 | ||
|
31 | cloning repo1 will also clone attached subrepository. | |
|
30 | Cloning repo1 will also clone attached subrepository. | |
|
32 | 31 | |
|
33 | 32 | Next we can edit the subrepo data, and push back to Kallithea. This will update |
|
34 | 33 | both of repositories. |
|
35 | 34 | |
|
36 |
|
|
|
37 | information about subrepositories | |
|
35 | See http://mercurial.aragost.com/kick-start/en/subrepositories/ for more | |
|
36 | information about subrepositories. |
@@ -39,11 +39,11 b' Troubleshooting' | |||
|
39 | 39 | |
|
40 | 40 | :Q: **Git fails on push/pull?** |
|
41 | 41 | :A: Make sure you're using an wsgi http server that can handle chunked encoding |
|
42 | such as `waitress` or `gunicorn` | |
|
42 | such as `waitress` or `gunicorn`. | |
|
43 | 43 | |
|
44 | 44 | | |
|
45 | 45 | |
|
46 |
:Q: **How |
|
|
46 | :Q: **How can I use hooks in Kallithea?** | |
|
47 | 47 | :A: It's easy if they are python hooks just use advanced link in hooks section |
|
48 | 48 | in Admin panel, that works only for Mercurial. If you want to use githooks, |
|
49 | 49 | just install proper one in repository eg. create file in |
@@ -52,19 +52,19 b' Troubleshooting' | |||
|
52 | 52 | |
|
53 | 53 | | |
|
54 | 54 | |
|
55 |
:Q: **Kallithea is slow for me, how can |
|
|
56 | :A: See the :ref:`performance` section | |
|
55 | :Q: **Kallithea is slow for me, how can I make it faster?** | |
|
56 | :A: See the :ref:`performance` section. | |
|
57 | 57 | |
|
58 | 58 | | |
|
59 | 59 | |
|
60 | 60 | :Q: **UnicodeDecodeError on Apache mod_wsgi** |
|
61 | :A: Please read: https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/#if-you-get-a-unicodeencodeerror | |
|
61 | :A: Please read: https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/#if-you-get-a-unicodeencodeerror. | |
|
62 | 62 | |
|
63 | 63 | | |
|
64 | 64 | |
|
65 | 65 | :Q: **Requests hanging on Windows** |
|
66 | 66 | :A: Please try out with disabled Antivirus software, there are some known problems with Eset Anitivirus. Make sure |
|
67 | you have installed latest windows patches (especially KB2789397) | |
|
67 | you have installed latest windows patches (especially KB2789397). | |
|
68 | 68 | |
|
69 | 69 | |
|
70 | 70 | .. _virtualenv: http://pypi.python.org/pypi/virtualenv |
@@ -73,6 +73,3 b' Troubleshooting' | |||
|
73 | 73 | .. _celery: http://celeryproject.org/ |
|
74 | 74 | .. _rabbitmq: http://www.rabbitmq.com/ |
|
75 | 75 | .. _python-ldap: http://www.python-ldap.org/ |
|
76 | .. _mercurial-server: http://www.lshift.net/mercurial-server.html | |
|
77 | .. _PublishingRepositories: http://mercurial.selenic.com/wiki/PublishingRepositories | |
|
78 | .. _Issues tracker: https://bitbucket.org/conservancy/kallithea/issues |
@@ -23,7 +23,7 b' user=username ; (defaul' | |||
|
23 | 23 | ;directory=/tmp ; (default is not to cd during start) |
|
24 | 24 | ;nocleanup=true ; (don't clean up tempfiles at start;default false) |
|
25 | 25 | ;childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP) |
|
26 |
environment=HOME=/ |
|
|
26 | environment=HOME=/srv/kallithea ; (key value pairs to add to environment) | |
|
27 | 27 | ;strip_ansi=false ; (strip ansi escape codes in logs; def. false) |
|
28 | 28 | |
|
29 | 29 | ; the below section must remain in the config file for RPC |
@@ -44,8 +44,8 b' serverurl=http://127.0.0.1:9001 ; use an' | |||
|
44 | 44 | [program:kallithea] |
|
45 | 45 | numprocs = 1 |
|
46 | 46 | numprocs_start = 5000 # possible should match ports |
|
47 |
directory=/ |
|
|
48 |
command = / |
|
|
47 | directory=/srv/kallithea | |
|
48 | command = /srv/kallithea/venv/bin/paster serve my.ini | |
|
49 | 49 | process_name = %(program_name)s_%(process_num)04d |
|
50 | 50 | redirect_stderr=true |
|
51 | stdout_logfile=/%(here)s/kallithea.log No newline at end of file | |
|
51 | stdout_logfile=/%(here)s/kallithea.log |
|
1 | NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now