##// END OF EJS Templates
docs: rework stuff...
Mads Kiilerich -
r4902:03bbd33b default
parent child Browse files
Show More
@@ -0,0 +1,3 b''
1 .. _readme:
2
3 .. include:: ./../README.rst
@@ -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 ^kallithea\.db$
21 ^kallithea\.db$
22 ^test\.db$
22 ^test\.db$
23 ^Kallithea\.egg-info$
23 ^Kallithea\.egg-info$
24 ^rc.*\.ini$
24 ^my\.ini$
25 ^fabfile.py
25 ^fabfile.py
26 ^\.idea$
26 ^\.idea$
@@ -1,6 +1,6 b''
1 =========
1 ================
2 Kallithea
2 Kallithea README
3 =========
3 ================
4
4
5 About
5 About
6 -----
6 -----
@@ -23,15 +23,12 b' Kallithea was forked from RhodeCode in J'
23
23
24 Installation
24 Installation
25 ------------
25 ------------
26 Stable releases of Kallithea are best installed via::
26 Official releases of Kallithea can be installed via::
27
28 easy_install kallithea
29
30 Or::
31
27
32 pip install kallithea
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 Please visit http://packages.python.org/Kallithea/installation.html for
33 Please visit http://packages.python.org/Kallithea/installation.html for
37 more details.
34 more details.
@@ -40,14 +37,10 b' more details.'
40 Source code
37 Source code
41 -----------
38 -----------
42
39
43 The latest sources can be obtained from https://kallithea-scm.org/repos/kallithea
40 The latest sources can be obtained from https://kallithea-scm.org/repos/kallithea.
44
45
41
46 MIRRORS:
42 The issue tracker and a repository mirror can be found at Bitbucket_ on
47
43 https://bitbucket.org/conservancy/kallithea.
48 Issue tracker and sources at Bitbucket_
49
50 https://bitbucket.org/conservancy/kallithea
51
44
52
45
53
46
@@ -67,7 +60,7 b' Kallithea Features'
67 - Users can fork other users repos, and compare them at any time.
60 - Users can fork other users repos, and compare them at any time.
68 - Built-in versioned paste functionality (Gist) for sharing code snippets.
61 - Built-in versioned paste functionality (Gist) for sharing code snippets.
69 - Integrates easily with other systems, with custom created mappers you can connect it to almost
62 - Integrates easily with other systems, with custom created mappers you can connect it to almost
70 any issue tracker, and with an JSON-RPC API you can make much more
63 any issue tracker, and with a JSON-RPC API you can make much more.
71 - Built-in commit API lets you add, edit and commit files right from Kallithea
64 - Built-in commit API lets you add, edit and commit files right from Kallithea
72 web interface using simple editor or upload binary files using simple form.
65 web interface using simple editor or upload binary files using simple form.
73 - Powerful pull request driven review system with inline commenting,
66 - Powerful pull request driven review system with inline commenting,
@@ -75,9 +68,9 b' Kallithea Features'
75 - Importing and syncing repositories from remote locations for Git_, Mercurial_ and Subversion.
68 - Importing and syncing repositories from remote locations for Git_, Mercurial_ and Subversion.
76 - Mako templates let you customize the look and feel of the application.
69 - Mako templates let you customize the look and feel of the application.
77 - Beautiful diffs, annotations and source code browsing all colored by pygments.
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 - Mercurial_ and Git_ DAG graphs and Flot-powered graphs with zooming and statistics
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 - Admin interface with user/permission management. Admin activity journal, logs
74 - Admin interface with user/permission management. Admin activity journal, logs
82 pulls, pushes, forks, registrations and other actions made by all users.
75 pulls, pushes, forks, registrations and other actions made by all users.
83 - Server side forks. It is possible to fork a project and modify it freely
76 - Server side forks. It is possible to fork a project and modify it freely
@@ -85,69 +78,68 b' Kallithea Features'
85 - reST and Markdown README support for repositories.
78 - reST and Markdown README support for repositories.
86 - Full text search powered by Whoosh on the source files, commit messages, and file names.
79 - Full text search powered by Whoosh on the source files, commit messages, and file names.
87 Built-in indexing daemons, with optional incremental index build
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 - Setup project descriptions/tags and info inside built in DB for easy,
82 - Setup project descriptions/tags and info inside built in DB for easy,
90 non-filesystem operations.
83 non-filesystem operations.
91 - Intelligent cache with invalidation after push or project change, provides
84 - Intelligent cache with invalidation after push or project change, provides
92 high performance and always up to date data.
85 high performance and always up to date data.
93 - RSS/Atom feeds, Gravatar support, downloadable sources as zip/tar/gz
86 - RSS/Atom feeds, Gravatar support, downloadable sources as zip/tar/gz.
94 - Optional async tasks for speed and performance using Celery_
87 - Optional async tasks for speed and performance using Celery_.
95 - Backup scripts can do backup of whole app and send it over scp to desired
88 - Backup scripts can do backup of whole app and send it over scp to desired
96 location
89 location.
97 - Based on Pylons, SQLAlchemy, SQLite, Whoosh, vcs
90 - Based on Pylons, SQLAlchemy, SQLite, Whoosh, vcs.
98
99
100 Incoming / Plans
101 ----------------
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 License
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
107 Community
120 ------------
108 ---------
109
110 ``Kallithea`` is maintained by its users who contribute the fixes they would like to see.
121
111
122 Listed bellow are various support resources that should help.
112 Get in touch with the rest of the community:
123
113
124 .. note::
114 - Join the mailing list users and developers - see
115 http://lists.sfconservancy.org/mailman/listinfo/kallithea-general.
125
116
126 Please try to read the documentation before posting any issues, especially
117 - Use IRC and join #kallithea on FreeNode (irc.freenode.net)
127 the **troubleshooting section**
118 or use http://webchat.freenode.net/?channels=kallithea.
128
119
129 - Open an issue at `issue tracker <https://bitbucket.org/conservancy/kallithea/issues>`_
120 - Follow ``Kallithea`` on Twitter, **@KallitheaSCM**.
130
121
131 - Join #kallithea on FreeNode (irc.freenode.net)
122 - Issues can be reported at `issue tracker <https://bitbucket.org/conservancy/kallithea/issues>`_.
132 or use http://webchat.freenode.net/?channels=kallithea for web access to irc.
133
123
134 You can follow this project on Twitter, **@KallitheaSCM**.
124 .. note::
125
126 Please try to read the documentation before posting any issues, especially
127 the **troubleshooting section**
135
128
136
129
137 Online documentation
130 Online documentation
138 --------------------
131 --------------------
139
132
140 Online documentation for the current version of Kallithea is available at
133 Online documentation for the current version of Kallithea is available at https://pythonhosted.org/Kallithea/.
141 - http://packages.python.org/Kallithea/
134 Documentation for the current development version can be found on http://kallithea.readthedocs.org/.
142 - http://kallithea.readthedocs.org/
143
135
144 You may also build the documentation for yourself: go into ``docs/`` and run::
136 You can also build the documentation locally: go to ``docs/`` and run::
145
137
146 make html
138 make html
147
139
148 (You need to have Sphinx_ installed to build the documentation. If you don't
140 (You need to have Sphinx_ installed to build the documentation. If you don't
149 have Sphinx_ installed you can install it via the command:
141 have Sphinx_ installed you can install it via the command:
150 ``easy_install sphinx``)
142 ``pip install sphinx``)
151
143
152
144
153 Converting from RhodeCode
145 Converting from RhodeCode
@@ -160,7 +152,7 b' Currently, you have two options for work'
160 Maintaining Interoperability
152 Maintaining Interoperability
161 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
153 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
162
154
163 Interoperability with RhodeCode 2.2.5 installations is provided so you don't
155 Interoperability with RhodeCode 2.2.X installations is provided so you don't
164 have to immediately commit to switching to Kallithea. This option will most
156 have to immediately commit to switching to Kallithea. This option will most
165 likely go away once the two projects have diverged significantly.
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 python setup.py install
165 python setup.py install
174
166
175 then you will find this location at
167 then you will find this location at
176 ``$VIRTUAL_ENV/lib/python2.7/site-packages/Kallithea-2.2.5-py2.7.egg/kallithea``
168 ``$VIRTUAL_ENV/lib/python2.7/site-packages/Kallithea-0.1-py2.7.egg/kallithea``.
177
169
178 One-time Conversion
170 One-time Conversion
179 ~~~~~~~~~~~~~~~~~~~
171 ~~~~~~~~~~~~~~~~~~~
@@ -188,10 +180,10 b' database, using the database string you '
188 pip install sqlalchemy-migrate
180 pip install sqlalchemy-migrate
189 python kallithea/bin/rebranddb.py sqlite:///kallithea.db
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
185 If you started out using the branding interoperability approach mentioned
194 an empty file (or watch out for stray brand.pyc after removing brand.py).
186 above, watch out for stray brand.pyc after removing brand.py.
195
187
196 .. _virtualenv: http://pypi.python.org/pypi/virtualenv
188 .. _virtualenv: http://pypi.python.org/pypi/virtualenv
197 .. _Python: http://www.python.org/
189 .. _Python: http://www.python.org/
@@ -203,3 +195,4 b' database, using the database string you '
203 .. _Git: http://git-scm.com/
195 .. _Git: http://git-scm.com/
204 .. _Celery: http://celeryproject.org/
196 .. _Celery: http://celeryproject.org/
205 .. _vcs: http://pypi.python.org/pypi/vcs
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 <your_server>/_admin/api .
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 API access can also be turned on for each web view in Kallithea that is
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 3rd party services like code review, or build farms that could download archives.
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 Clients must send JSON encoded JSON-RPC requests::
42 Clients must send JSON encoded JSON-RPC requests::
@@ -75,7 +75,7 b' the reponse will have a failure descript'
75 *result* will be null.
75 *result* will be null.
76
76
77
77
78 API CLIENT
78 API client
79 ++++++++++
79 ++++++++++
80
80
81 Kallithea comes with a `kallithea-api` command line tool providing a convenient
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 so you don't have to specify them every time.
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 Contributing to Kallithea
4 Contributing to Kallithea
5 =========================
5 =========================
6
6
7 If you would like to contribute to Kallithea, please contact us, any help is
7 Kallithea is developed and maintained by its users. Please join us and scratch
8 greatly appreciated!
8 your own itch.
9
10
11 Infrastructure
12 --------------
9
13
10 Could I request that you make your source contributions by first forking the
14 The main repository is hosted at Our Own Kallithea (aka OOK) on
11 Kallithea repository on bitbucket_
15 https://kallithea-scm.org/repos/kallithea/ (which is our self-hosted instance
12 https://bitbucket.org/conservancy/kallithea and then make your changes to
16 of Kallithea).
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.
17
17
18 To run Kallithea in a development version you always need to install the latest
18 For now, we use Bitbucket_ for `Pull Requests`_ and `Issue Tracker`_ services. The
19 required libs. Simply clone Kallithea and switch to beta branch::
19 issue tracker is for tracking bugs, not for "support", discussion or ideas -
20 please use the `mailing list`_ to reach the community.
21
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
20
26
21 hg clone https://kallithea-scm.org/repos/kallithea
27 Getting started
28 ---------------
22
29
23 after downloading/pulling Kallithea make sure you run::
30 To get started with development::
24
25 python setup.py develop
26
31
27 command to install/verify all required packages, and prepare development
32 hg clone https://kallithea-scm.org/repos/kallithea
28 enviroment.
33 cd kallithea
34 virtualenv ../kallithea-venv
35 source ../kallithea-venv/bin/activate
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/
29
41
30 There are two files in the directory production.ini and developement.ini copy
42 You can also start out by forking https://bitbucket.org/conservancy/kallithea
31 the `development.ini` file as rc.ini (which is excluded from version controll)
43 on Bitbucket_ and create a local clone of your own fork.
32 and put all your changes like db connection or server port in there.
44
33
45
34 After finishing your changes make sure all tests passes ok. You can run
46 Running tests
47 -------------
48
49 After finishing your changes make sure all tests pass cleanly. You can run
35 the testsuite running ``nosetest`` from the project root, or if you use tox
50 the testsuite running ``nosetest`` from the project root, or if you use tox
36 run tox for python2.6-2.7 with multiple database test. When using `nosetests`
51 run tox for python2.6-2.7 with multiple database test. When using `nosetests`
37 test.ini file is used and by default it uses sqlite for tests, edit this file
52 test.ini file is used and by default it uses sqlite for tests, edit this file
38 to change your testing enviroment.
53 to change your testing enviroment.
39
54
40
41 There's a special set of tests for push/pull operations, you can runn them using::
55 There's a special set of tests for push/pull operations, you can runn them using::
42
56
43 paster serve test.ini --pid-file=test.pid --daemon
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 kill -9 $(cat test.pid)
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 .. _bitbucket: http://bitbucket.org/
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 .. _index:
1 .. _index:
2
2
3 .. include:: ./../README.rst
3 Administrators Guide
4 --------------------
5
6 **Readme**
4
7
5 Users Guide
8 .. toctree::
6 -----------
9 :maxdepth: 1
7
10
8 **Installation:**
11 readme
12
13 **Installation**
9
14
10 .. toctree::
15 .. toctree::
11 :maxdepth: 1
16 :maxdepth: 1
12
17
13 installation
18 installation
14 upgrade
15 installation_win
19 installation_win
16 installation_win_old
20 installation_win_old
17 installation_iis
21 installation_iis
@@ -4,69 +4,42 b''
4 Installation on Unix/Linux
4 Installation on Unix/Linux
5 ==========================
5 ==========================
6
6
7 ``Kallithea`` is written entirely in Python. Before posting any issues make
7 ``Kallithea`` is written entirely in Python. Kallithea requires Python version
8 sure, your not missing any system libraries and using right version of
8 2.6 or higher.
9 libraries required by Kallithea. There's also restriction in terms of mercurial
9
10 clients. Minimal version of hg client known working fine with Kallithea is
10 .. Note:: Alternative very detailed installation instructions for Ubuntu Server
11 **1.6**. If you're using older client, please upgrade.
11 with celery, indexer and daemon scripts: https://gist.github.com/4546398
12
12
13
13
14 Installing Kallithea from PyPI (aka "Cheeseshop")
14 Installing Kallithea from Python Package Index (PyPI)
15 -------------------------------------------------
15 -----------------------------------------------------
16
17 Kallithea requires python version 2.6 or higher.
18
16
19 The easiest way to install ``kallithea`` is to run::
17 ``Kallithea`` can be installed from PyPI with::
20
21 easy_install kallithea
22
23 Or::
24
18
25 pip install kallithea
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
22 Installation in virtualenv
31
23 --------------------------
32 Step by step installation example for Windows
33 ---------------------------------------------
34
35 :ref:`installation_win`
36
37
24
38 Step by step installation example for Linux
25 It is highly recommended to use a separate virtualenv_ for installing Kallithea.
39 -------------------------------------------
26 This way, all libraries required by Kallithea will be installed separately from your
40
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
31 - Assuming you have installed virtualenv_, create a new virtual environment
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
51 using virtualenv command::
32 using virtualenv command::
52
33
53 virtualenv --no-site-packages /opt/kallithea-venv
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
39 - this will install new virtualenv_ into `/srv/kallithea/venv`.
57 virtualenv is **very important**. This flag provides the necessary
40 - Activate the virtualenv_ in your current shell session by running::
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.
64
41
65
42 source /srv/kallithea/venv/bin/activate
66 - this will install new virtualenv_ into `/opt/kallithea-venv`.
67 - Activate the virtualenv_ by running::
68
69 source /opt/kallithea-venv/bin/activate
70
43
71 .. note:: If you're using UNIX, *do not* use ``sudo`` to run the
44 .. note:: If you're using UNIX, *do not* use ``sudo`` to run the
72 ``virtualenv`` script. It's perfectly acceptable (and desirable)
45 ``virtualenv`` script. It's perfectly acceptable (and desirable)
@@ -75,19 +48,20 b' celery, indexer and daemon scripts: http'
75 - Make a folder for Kallithea data files, and configuration somewhere on the
48 - Make a folder for Kallithea data files, and configuration somewhere on the
76 filesystem. For example::
49 filesystem. For example::
77
50
78 mkdir /opt/kallithea
51 mkdir /srv/kallithea
79
80
52
81 - Go into the created directory run this command to install kallithea::
53 - Go into the created directory run this command to install kallithea::
82
54
83 easy_install kallithea
84
85 or::
86
87 pip install kallithea
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 - This will install Kallithea together with pylons and all other required
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 Requirements for Celery (optional)
66 Requirements for Celery (optional)
93 ----------------------------------
67 ----------------------------------
@@ -121,9 +95,103 b' http://ask.github.com/celery/getting-sta'
121 This is a very nice tutorial on how to start using celery_ with rabbitmq_
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`
98 Next
125 -----------------------------------
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 .. _virtualenv: http://pypi.python.org/pypi/virtualenv
197 .. _virtualenv: http://pypi.python.org/pypi/virtualenv
@@ -71,6 +71,7 b' If it was not installed or if you are us'
71 - Go to https://bootstrap.pypa.io
71 - Go to https://bootstrap.pypa.io
72 - Right-click on get-pip.py and choose Saves as...
72 - Right-click on get-pip.py and choose Saves as...
73 - Run "python get-pip.py" in the folder where you downloaded get-pip.py (may require admin access).
73 - Run "python get-pip.py" in the folder where you downloaded get-pip.py (may require admin access).
74
74 (See http://stackoverflow.com/questions/4750806/how-to-install-pip-on-windows for explanations or alternatives)
75 (See http://stackoverflow.com/questions/4750806/how-to-install-pip-on-windows for explanations or alternatives)
75
76
76 Note that pip.exe will be placed inside your Python installation's Scripts folder, which is likely not on your path.
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 First, you will need to create a Kallithea configuration file. Run the
11 First, you will need to create a Kallithea configuration file. Run the
12 following command to do this::
12 following command to do this::
13
13
14 paster make-config Kallithea production.ini
14 paster make-config Kallithea my.ini
15
15
16 - This will create the file `production.ini` in the current directory. This
16 - This will create the file `my.ini` in the current directory. This
17 configuration file contains the various settings for Kallithea, e.g proxy
17 configuration file contains the various settings for Kallithea, e.g proxy
18 port, email settings, usage of static files, cache, celery settings and
18 port, email settings, usage of static files, cache, celery settings and
19 logging.
19 logging.
20
20
21
21
22 Next, you need to create the databases used by Kallithea. I recommend that you
22 Next, you need to create the databases used by Kallithea. It is recommended to
23 use postgresql or sqlite (default). If you choose a database other than the
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 production.ini
24 default ensure you properly adjust the db url in your my.ini
25 configuration file to use this other database. Kallithea currently supports
25 configuration file to use this other database. Kallithea currently supports
26 postgresql, sqlite and mysql databases. Create the database by running
26 postgresql, sqlite and mysql databases. Create the database by running
27 the following command::
27 the following command::
28
28
29 paster setup-db production.ini
29 paster setup-db my.ini
30
30
31 This will prompt you for a "root" path. This "root" path is the location where
31 This will prompt you for a "root" path. This "root" path is the location where
32 Kallithea will store all of its repositories on the current machine. After
32 Kallithea will store all of its repositories on the current machine. After
@@ -36,7 +36,7 b' up for you.'
36
36
37 setup process can be fully automated, example for lazy::
37 setup process can be fully automated, example for lazy::
38
38
39 paster setup-db production.ini --user=nn --password=secret --email=nn@your.kallithea.server --repos=/home/nn/my_repos
39 paster setup-db my.ini --user=nn --password=secret --email=nn@your.kallithea.server --repos=/srv/repos
40
40
41
41
42 - The ``setup-db`` command will create all of the needed tables and an
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 You are now ready to use Kallithea, to run it simply execute::
53 You are now ready to use Kallithea, to run it simply execute::
54
54
55 paster serve production.ini
55 paster serve my.ini
56
56
57 - This command runs the Kallithea server. The web app should be available at the
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 production.ini
58 127.0.0.1:5000. This ip and port is configurable via the my.ini
59 file created in previous step
59 file created in previous step
60 - Use the admin account you created above when running ``setup-db``
60 - Use the admin account you created above when running ``setup-db``
61 to login to the web app.
61 to login to the web app.
62 - The default permissions on each repository is read, and the owner is admin.
62 - The default permissions on each repository is read, and the owner is admin.
63 Remember to update these if needed.
63 Remember to update these if needed.
64 - In the admin panel you can toggle ldap, anonymous, permissions settings. As
64 - In the admin panel you can toggle LDAP, anonymous, permissions settings. As
65 well as edit more advanced options on users and repositories
65 well as edit more advanced options on users and repositories
66
66
67 Optionally users can create `rcextensions` package that extends Kallithea
67 Optionally users can create `rcextensions` package that extends Kallithea
68 functionality. To do this simply execute::
68 functionality. To do this simply execute::
69
69
70 paster make-rcext production.ini
70 paster make-rcext my.ini
71
71
72 This will create `rcextensions` package in the same place that your `ini` file
72 This will create `rcextensions` package in the same place that your `ini` file
73 lives. With `rcextensions` it's possible to add additional mapping for whoosh,
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 using the Kallithea web interface.)
96 using the Kallithea web interface.)
97
97
98 If your main directory (the same as set in Kallithea settings) is for example
98 If your main directory (the same as set in Kallithea settings) is for example
99 set to **/home/hg** and the repository you are using is named `kallithea`, then
99 set to **/srv/repos** and the repository you are using is named `kallithea`, then
100 to clone via ssh you should run::
100 to clone via ssh you should run::
101
101
102 hg clone ssh://user@server.com/home/hg/kallithea
102 hg clone ssh://user@server.com//srv/repos/kallithea
103
103
104 Using other external tools such as mercurial-server_ or using ssh key based
104 Using other external tools such as mercurial-server_ or using ssh key based
105 authentication is fully supported.
105 authentication is fully supported.
@@ -112,12 +112,12 b' permissions against that.'
112 Setting up Whoosh full text search
112 Setting up Whoosh full text search
113 ----------------------------------
113 ----------------------------------
114
114
115 Starting from version 1.1 the whoosh index can be build by using the paster
115 The whoosh index can be build by using the paster
116 command ``make-index``. To use ``make-index`` you must specify the configuration
116 command ``make-index``. To use ``make-index`` you must specify the configuration
117 file that stores the location of the index. You may specify the location of the
117 file that stores the location of the index. You may specify the location of the
118 repositories (`--repo-location`). If not specified, this value is retrieved
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
119 from the Kallithea database.
120 version 1.2 it is also possible to specify a comma separated list of
120 It is also possible to specify a comma separated list of
121 repositories (`--index-only`) to build index only on chooses repositories
121 repositories (`--index-only`) to build index only on chooses repositories
122 skipping any other found in repos location
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 For an incremental index build use::
127 For an incremental index build use::
128
128
129 paster make-index production.ini
129 paster make-index my.ini
130
130
131 For a full index rebuild use::
131 For a full index rebuild use::
132
132
133 paster make-index production.ini -f
133 paster make-index my.ini -f
134
134
135
135
136 building index just for chosen repositories is possible with such command::
136 building index just for chosen repositories is possible with such command::
137
137
138 paster make-index production.ini --index-only=vcs,kallithea
138 paster make-index my.ini --index-only=vcs,kallithea
139
139
140
140
141 In order to do periodical index builds and keep your index always up to date.
141 In order to do periodical index builds and keep your index always up to date.
142 It's recommended to do a crontab entry for incremental indexing.
142 It's recommended to do a crontab entry for incremental indexing.
143 An example entry might look like this::
143 An example entry might look like this::
144
144
145 /path/to/python/bin/paster make-index /path/to/kallithea/production.ini
145 /path/to/python/bin/paster make-index /path/to/kallithea/my.ini
146
146
147 When using incremental mode (the default) whoosh will check the last
147 When using incremental mode (the default) whoosh will check the last
148 modification date of each file and add it to be reindexed if a newer file is
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 Setting up LDAP support
156 Setting up LDAP support
157 -----------------------
157 -----------------------
158
158
159 Kallithea starting from version 1.1 supports ldap authentication. In order
159 Kallithea supports LDAP authentication. In order
160 to use LDAP, you have to install the python-ldap_ package. This package is
160 to use LDAP, you have to install the python-ldap_ package. This package is
161 available via pypi, so you can install it by running
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 pip install python-ldap
163 pip install python-ldap
170
164
171 .. note::
165 .. note::
172 python-ldap requires some certain libs on your system, so before installing
166 python-ldap requires some certain libs on your system, so before installing
173 it check that you have at least `openldap`, and `sasl` libraries.
167 it check that you have at least `openldap`, and `sasl` libraries.
174
168
175 LDAP settings are located in admin->ldap section,
169 LDAP settings are located in Admin->LDAP section.
176
170
177 Here's a typical ldap setup::
171 Here's a typical LDAP setup::
178
172
179 Connection settings
173 Connection settings
180 Enable LDAP = checked
174 Enable LDAP = checked
@@ -241,7 +235,7 b' Connection Security : required'
241 Plain non encrypted connection
235 Plain non encrypted connection
242
236
243 LDAPS connection
237 LDAPS connection
244 Enable ldaps connection. It will likely require `Port`_ to be set to
238 Enable LDAPS connections. It will likely require `Port`_ to be set to
245 a different value (standard LDAPS port is 636). When LDAPS is enabled
239 a different value (standard LDAPS port is 636). When LDAPS is enabled
246 then `Certificate Checks`_ is required.
240 then `Certificate Checks`_ is required.
247
241
@@ -338,7 +332,7 b' Email Attribute : required'
338 The LDAP record attribute which represents the user's email address.
332 The LDAP record attribute which represents the user's email address.
339
333
340 If all data are entered correctly, and python-ldap_ is properly installed
334 If all data are entered correctly, and python-ldap_ is properly installed
341 users should be granted access to Kallithea with ldap accounts. At this
335 users should be granted access to Kallithea with LDAP accounts. At this
342 time user information is copied from LDAP into the Kallithea user database.
336 time user information is copied from LDAP into the Kallithea user database.
343 This means that updates of an LDAP user object may not be reflected as a
337 This means that updates of an LDAP user object may not be reflected as a
344 user update in Kallithea.
338 user update in Kallithea.
@@ -417,7 +411,7 b' reverse-proxy setup with basic auth::'
417
411
418 AuthType Basic
412 AuthType Basic
419 AuthName "Kallithea authentication"
413 AuthName "Kallithea authentication"
420 AuthUserFile /home/web/kallithea/.htpasswd
414 AuthUserFile /srv/kallithea/.htpasswd
421 require valid-user
415 require valid-user
422
416
423 RequestHeader unset X-Forwarded-User
417 RequestHeader unset X-Forwarded-User
@@ -491,18 +485,18 b' can be found at *kallithea.lib.hooks*.'
491 Changing default encoding
485 Changing default encoding
492 -------------------------
486 -------------------------
493
487
494 By default Kallithea uses utf8 encoding, starting from 1.3 series this
488 By default, Kallithea uses utf8 encoding.
495 can be changed, simply edit default_encoding in .ini file to desired one.
489 It is configurable as `default_encoding` in the .ini file.
496 This affects many parts in Kallithea including committers names, filenames,
490 This affects many parts in Kallithea including user names, filenames, and
497 encoding of commit messages. In addition Kallithea can detect if `chardet`
491 encoding of commit messages. In addition Kallithea can detect if `chardet`
498 library is installed. If `chardet` is detected Kallithea will fallback to it
492 library is installed. If `chardet` is detected Kallithea will fallback to it
499 when there are encode/decode errors.
493 when there are encode/decode errors.
500
494
501
495
502 Setting Up Celery
496 Celery configuration
503 -----------------
497 --------------------
504
498
505 Since version 1.1 celery is configured by the Kallithea ini configuration files.
499 Celery is configured in the Kallithea ini configuration files.
506 Simply set use_celery=true in the ini file then add / change the configuration
500 Simply set use_celery=true in the ini file then add / change the configuration
507 variables inside the ini file.
501 variables inside the ini file.
508
502
@@ -537,7 +531,7 b' Nginx virtual host example'
537
531
538 Sample config for nginx using proxy::
532 Sample config for nginx using proxy::
539
533
540 upstream rc {
534 upstream kallithea {
541 server 127.0.0.1:5000;
535 server 127.0.0.1:5000;
542 # add more instances for load balancing
536 # add more instances for load balancing
543 #server 127.0.0.1:5001;
537 #server 127.0.0.1:5001;
@@ -586,11 +580,11 b' Sample config for nginx using proxy::'
586 #root /path/to/installation/kallithea/public;
580 #root /path/to/installation/kallithea/public;
587 include /etc/nginx/proxy.conf;
581 include /etc/nginx/proxy.conf;
588 location / {
582 location / {
589 try_files $uri @rhode;
583 try_files $uri @kallithea;
590 }
584 }
591
585
592 location @rhode {
586 location @kallithea {
593 proxy_pass http://rc;
587 proxy_pass http://kallithea;
594 }
588 }
595
589
596 }
590 }
@@ -699,50 +693,66 b" that, you'll need to:"
699
693
700 Here is a sample excerpt from an Apache Virtual Host configuration file::
694 Here is a sample excerpt from an Apache Virtual Host configuration file::
701
695
702 WSGIDaemonProcess pylons \
696 WSGIDaemonProcess kallithea \
703 threads=4 \
697 processes=1 threads=4 \
704 python-path=/home/web/kallithea/pyenv/lib/python2.7/site-packages
698 python-path=/srv/kallithea/pyenv/lib/python2.7/site-packages
705 WSGIScriptAlias / /home/web/kallithea/dispatch.wsgi
699 WSGIScriptAlias / /srv/kallithea/dispatch.wsgi
706 WSGIPassAuthorization On
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 .. note::
709 .. note::
709 when running apache as root please add: `user=www-data group=www-data`
710 When running apache as root, please make sure it doesn't run Kallithea as
710 into above configuration
711 root, for examply by adding: `user=www-data group=www-data` to the configuration.
711
712
712 .. note::
713 .. note::
713 Running Kallithea in multiprocess mode in apache is not supported,
714 If running Kallithea in multiprocess mode,
714 make sure you don't specify `processes=num` directive in the config
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 Example wsgi dispatch script::
719 Example wsgi dispatch script::
718
720
719 import os
721 import os
720 os.environ["HGENCODING"] = "UTF-8"
722 os.environ["HGENCODING"] = "UTF-8"
721 os.environ['PYTHON_EGG_CACHE'] = '/home/web/kallithea/.egg-cache'
723 os.environ['PYTHON_EGG_CACHE'] = '/srv/kallithea/.egg-cache'
722
724
723 # sometimes it's needed to set the curent dir
725 # sometimes it's needed to set the curent dir
724 os.chdir('/home/web/kallithea/')
726 os.chdir('/srv/kallithea/')
725
727
726 import site
728 import site
727 site.addsitedir("/home/web/kallithea/pyenv/lib/python2.7/site-packages")
729 site.addsitedir("/srv/kallithea/pyenv/lib/python2.7/site-packages")
728
730
729 from paste.deploy import loadapp
731 from paste.deploy import loadapp
730 from paste.script.util.logging_config import fileConfig
732 from paste.script.util.logging_config import fileConfig
731
733
732 fileConfig('/home/web/kallithea/production.ini')
734 fileConfig('/srv/kallithea/my.ini')
733 application = loadapp('config:/home/web/kallithea/production.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
742 import os
736 Mercurial that's inside Kallithea's virtualenv also on the system's Python
743 os.environ['HOME'] = '/srv/kallithea'
737 environment.
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 Other configuration files
752 Other configuration files
741 -------------------------
753 -------------------------
742
754
743 Some example init.d scripts can be found in init.d directory::
755 Some example init.d scripts can be found in init.d directory: https://kallithea-scm.org/repos/kallithea/files/tip/init.d/
744
745 https://kallithea-scm.org/repos/kallithea/files/tip/init.d/
746
756
747 .. _virtualenv: http://pypi.python.org/pypi/virtualenv
757 .. _virtualenv: http://pypi.python.org/pypi/virtualenv
748 .. _python: http://www.python.org/
758 .. _python: http://www.python.org/
@@ -752,4 +762,3 b' Some example init.d scripts can be found'
752 .. _python-ldap: http://www.python-ldap.org/
762 .. _python-ldap: http://www.python-ldap.org/
753 .. _mercurial-server: http://www.lshift.net/mercurial-server.html
763 .. _mercurial-server: http://www.lshift.net/mercurial-server.html
754 .. _PublishingRepositories: http://mercurial.selenic.com/wiki/PublishingRepositories
764 .. _PublishingRepositories: http://mercurial.selenic.com/wiki/PublishingRepositories
755 .. _Issues tracker: https://bitbucket.org/conservancy/kallithea/issues
@@ -1,6 +1,9 b''
1 {% extends "basic/layout.html" %}
1 {% extends "basic/layout.html" %}
2
2
3 {% block sidebarlogo %}
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 <h3>Support Kallithea development</h3>
7 <h3>Support Kallithea development</h3>
5 <div style="text-align:center">
8 <div style="text-align:center">
6 <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
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 ** First make sure you're using the latest version available.**
10 ** First make sure you're using the latest version available.**
11
11
12 enable detailed debug
12 Enable detailed debug
13 ---------------------
13 ---------------------
14
14
15 Kallithea uses standard python logging modules to log it's output.
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 console. This generally helps a lot to track issues.
19 console. This generally helps a lot to track issues.
20
20
21
21
22 enable interactive debug mode
22 Enable interactive debug mode
23 -----------------------------
23 -----------------------------
24
24
25 To enable interactive debug mode simply comment out `set debug = false` in
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 from the repository name, and internal repository storage (.hg/.git). There
16 from the repository name, and internal repository storage (.hg/.git). There
17 is also a special command for cleaning such archived repos::
17 is also a special command for cleaning such archived repos::
18
18
19 paster cleanup-repos --older-than=30d production.ini
19 paster cleanup-repos --older-than=30d my.ini
20
20
21 This command will scan for archived repositories that are older than 30d,
21 This command will scan for archived repositories that are older than 30d,
22 display them and ask if you want to delete them (there's a --dont-ask flag also)
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 in Kallithea 1.3 was enabled by default. You need to have a git
8 Kallithea Git support is enabled by default. You just need a git
9 client installed on the machine to make git fully work.
9 command line client installed on the server to make Git work fully.
10
10
11 Although There is one limitation on git usage.
11 Web server with chunked encoding
12
12 --------------------------------
13 - large pushes requires a http server with chunked encoding support.
14
13
15 if you plan to use git you need to run Kallithea with some
14 Large Git pushes do however require a http server with support for chunked encoding for POST.
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.
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
19 The default paste server is controlled in the .ini file::
24
25 to::
26
20
27 use = egg:waitress#main
21 use = egg:waitress#main
28
22
@@ -31,18 +25,18 b' or::'
31 use = egg:gunicorn#main
25 use = egg:gunicorn#main
32
26
33
27
34 And comment out bellow options::
28 Also make sure to comment out the following options::
35
29
36 threadpool_workers =
30 threadpool_workers =
37 threadpool_max_requests =
31 threadpool_max_requests =
38 use_threadpool =
32 use_threadpool =
39
33
40
34
41 You can simply run `paster serve` as usual.
35 Disabling Git
42
36 -------------
43
37
44 You can always disable git/hg support by editing a
38 You can always disable git/hg support by editing a
45 file **kallithea/__init__.py** and commenting out backends
39 file **kallithea/__init__.py** and commenting out the backend.
46
40
47 .. code-block:: python
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 | Repos with **locking function=disabled** is the default, that's how repos work
14 | Repos with **locking function=disabled** is the default, that's how repos work
9 today.
15 today.
10 | Repos with **locking function=enabled** behaves like follows:
16 | Repos with **locking function=enabled** behaves like follows:
@@ -20,22 +26,13 b' influence this state:'
20 user has write/admin permissions on this repo
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 only this specific user can unlock the repo (locked=false) by calling
30 only this specific user can unlock the repo (locked=false) by calling
25
31
26 - `hg/git push <repo>`
32 - `hg/git push <repo>`
27
33
28 every other command on that repo from this user and
34 Every other command on that repo from this user and
29 every command from any other user will result in http return code 423 (locked)
35 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
36
35
37 Additionally, the http error includes the <user> that locked the repo
36 So the scenario of use for repos with `locking function` enabled is that
38 (e.g. “repository <repo> locked by user <user>”).
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.
@@ -6,7 +6,7 b' Statistics'
6
6
7 The Kallithea statistics system makes heavy demands of the server resources, so
7 The Kallithea statistics system makes heavy demands of the server resources, so
8 in order to keep a balance between usability and performance, the statistics are
8 in order to keep a balance between usability and performance, the statistics are
9 cached inside db and are gathered incrementally, this is how Kallithea does
9 cached inside db and are gathered incrementally. This is how Kallithea does
10 this:
10 this:
11
11
12 With Celery disabled
12 With Celery disabled
@@ -1,10 +1,10 b''
1 .. _subrepos:
1 .. _subrepos:
2
2
3 =============================================
3 =============================================
4 working with Kallithea and mercurial subrepos
4 Working with Kallithea and Mercurial subrepos
5 =============================================
5 =============================================
6
6
7 example usage of Subrepos with Kallithea::
7 Example usage of Subrepos with Kallithea::
8
8
9 ## init a simple repo
9 ## init a simple repo
10 hg init repo1
10 hg init repo1
@@ -14,24 +14,23 b' example usage of Subrepos with Kallithea'
14 hg ci --message "initial file 1"
14 hg ci --message "initial file 1"
15
15
16 #clone subrepo we want to add
16 #clone subrepo we want to add
17 hg clone http://rc.local/subrepo
17 hg clone http://kallithea.local/subrepo
18
18
19 ## use path like url to existing repo in Kallithea
19 ## use path like url to existing repo in Kallithea
20 echo "subrepo = http://rc.local/subrepo" > .hgsub
20 echo "subrepo = http://kallithea.local/subrepo" > .hgsub
21
21
22 hg add .hgsub
22 hg add .hgsub
23 hg ci --message "added remote subrepo"
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
30 Cloning repo1 will also clone attached subrepository.
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.
32
31
33 Next we can edit the subrepo data, and push back to Kallithea. This will update
32 Next we can edit the subrepo data, and push back to Kallithea. This will update
34 both of repositories.
33 both of repositories.
35
34
36 see http://mercurial.aragost.com/kick-start/en/subrepositories/ for more
35 See http://mercurial.aragost.com/kick-start/en/subrepositories/ for more
37 information about subrepositories
36 information about subrepositories.
@@ -39,11 +39,11 b' Troubleshooting'
39
39
40 :Q: **Git fails on push/pull?**
40 :Q: **Git fails on push/pull?**
41 :A: Make sure you're using an wsgi http server that can handle chunked encoding
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 i use hooks in Kallithea?**
46 :Q: **How can I use hooks in Kallithea?**
47 :A: It's easy if they are python hooks just use advanced link in hooks section
47 :A: It's easy if they are python hooks just use advanced link in hooks section
48 in Admin panel, that works only for Mercurial. If you want to use githooks,
48 in Admin panel, that works only for Mercurial. If you want to use githooks,
49 just install proper one in repository eg. create file in
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 i make it faster?**
55 :Q: **Kallithea is slow for me, how can I make it faster?**
56 :A: See the :ref:`performance` section
56 :A: See the :ref:`performance` section.
57
57
58 |
58 |
59
59
60 :Q: **UnicodeDecodeError on Apache mod_wsgi**
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 :Q: **Requests hanging on Windows**
65 :Q: **Requests hanging on Windows**
66 :A: Please try out with disabled Antivirus software, there are some known problems with Eset Anitivirus. Make sure
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 .. _virtualenv: http://pypi.python.org/pypi/virtualenv
70 .. _virtualenv: http://pypi.python.org/pypi/virtualenv
@@ -73,6 +73,3 b' Troubleshooting'
73 .. _celery: http://celeryproject.org/
73 .. _celery: http://celeryproject.org/
74 .. _rabbitmq: http://www.rabbitmq.com/
74 .. _rabbitmq: http://www.rabbitmq.com/
75 .. _python-ldap: http://www.python-ldap.org/
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 ;directory=/tmp ; (default is not to cd during start)
23 ;directory=/tmp ; (default is not to cd during start)
24 ;nocleanup=true ; (don't clean up tempfiles at start;default false)
24 ;nocleanup=true ; (don't clean up tempfiles at start;default false)
25 ;childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP)
25 ;childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP)
26 environment=HOME=/home/username ; (key value pairs to add to environment)
26 environment=HOME=/srv/kallithea ; (key value pairs to add to environment)
27 ;strip_ansi=false ; (strip ansi escape codes in logs; def. false)
27 ;strip_ansi=false ; (strip ansi escape codes in logs; def. false)
28
28
29 ; the below section must remain in the config file for RPC
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 [program:kallithea]
44 [program:kallithea]
45 numprocs = 1
45 numprocs = 1
46 numprocs_start = 5000 # possible should match ports
46 numprocs_start = 5000 # possible should match ports
47 directory=/home/username/kallithea-dir
47 directory=/srv/kallithea
48 command = /home/username/v-env/bin/paster serve rc.ini
48 command = /srv/kallithea/venv/bin/paster serve my.ini
49 process_name = %(program_name)s_%(process_num)04d
49 process_name = %(program_name)s_%(process_num)04d
50 redirect_stderr=true
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
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now