diff --git a/README.rst b/README.rst --- a/README.rst +++ b/README.rst @@ -4,12 +4,14 @@ Welcome to RhodeCode (RhodiumCode) docum ================================================= ``RhodeCode`` (formerly hg-app) is Pylons framework based Mercurial repository -browser/management with build in push/pull server and full text search. -It works on http/https, has build in permission/authentication(+ldap) features -It's similar to github or bitbucket, but it's suppose to run as standalone -hosted application, it's open source and focuses more on restricted access to -repositories. It's powered by vcs_ library that me and Lukasz Balcerzak created -to handle many various version control systems. +browser/management tool with build in push/pull server and full text search. +It works on http/https, has build in permission/authentication system with +ability to auth via LDAP. It's similar in some parts to github or bitbucket, +but it's suppose to run as standalone hosted application, it's open source +and donation ware and focuses more on providing customized, self administered +interface for Mercurial(and soon GIT) repositories. It's powered by vcs_ +library that me and Lukasz Balcerzak created to handle many various version +control systems. RhodeCode uses `Semantic Versioning `_ @@ -45,23 +47,28 @@ Features - Has it's own middleware to handle mercurial_ protocol request. Each request can be logged and authenticated. Runs on threads unlikely to hgweb. You can make multiple pulls/pushes simultaneous. Supports http/https - and ldap + and LDAP - Full permissions (private/read/write/admin) and authentication per project. One account for web interface and mercurial_ push/pull/clone operations. +- Have built in users groups for easier permission management +- Users can fork other users repo. RhodeCode have also compare view to see + combined changeset for all changeset made within single push. - Mako templates let's you customize look and feel of application. -- Beautiful diffs, annotations and source codes all colored by pygments. +- Beautiful diffs, annotations and source codes all colored by pygments. Raw + diffs are made in git-diff format, including git binary-patches - Mercurial_ branch graph and yui-flot powered graphs with zooming and statistics - Admin interface with user/permission management. Admin activity journal, logs pulls, pushes, forks, registrations and other actions made by all users. - Server side forks, it's possible to fork a project and hack it free without - breaking the main repository. + breaking the main repository. You can even write Your own hooks and install + them - Full text search powered by Whoosh on source codes, and file names. Build in indexing daemons, with optional incremental index build - (no external search servers required all in one application) + (no external search servers required. All in one application !) - Setup project descriptions and info inside built in db for easy, non file-system operations -- Intelligent cache with invalidation after push or project change, provides high - performance and always up to date data. +- Intelligent cache with invalidation after push or project change, provides + high performance and always up to date data. - Rss / atom feeds, gravatar support, download sources as zip/tar/gz - Async tasks for speed and performance using celery_ (works without them too) - Backup scripts can do backup of whole app and send it over scp to desired @@ -76,7 +83,6 @@ Incoming / Plans ---------------- - project grouping -- User groups/teams - code review (probably based on hg-review) - full git_ support, with push/pull server (currently in beta tests) - redmine integration diff --git a/docs/contributing.rst b/docs/contributing.rst --- a/docs/contributing.rst +++ b/docs/contributing.rst @@ -6,4 +6,12 @@ Contributing in RhodeCode If You would like to contribute to RhodeCode, please contact me, any help is greatly appreciated. +Preferable method Would be to fork RhodeCode repository from bitbucket +https://bitbucket.org/marcinkuzminski/rhodecode and then open a pull request. +This way it's easier for me to merge. + +To run RhodeCode in a development version You always need to install tip +version of RhodeCode and VCS library. + + Thank You. diff --git a/docs/installation.rst b/docs/installation.rst --- a/docs/installation.rst +++ b/docs/installation.rst @@ -22,16 +22,16 @@ Rhodecode requires python 2.x greater th Easiest way to install ``rhodecode`` is to run:: - easy_install rhodecode + easy_install rhodecode Or:: - pip install rhodecode + pip install rhodecode If you prefer to install manually simply grab latest release from http://pypi.python.org/pypi/rhodecode, decompres archive and run:: - python setup.py install + python setup.py install Step by step installation example @@ -44,27 +44,27 @@ Step by step installation example :: - virtualenv --no-site-packages /var/www/rhodecode-venv + virtualenv --no-site-packages /var/www/rhodecode-venv - this will install new virtualenv_ into `/var/www/rhodecode-venv`. - Activate the virtualenv_ by running :: - source /var/www/rhodecode-venv/bin/activate + source /var/www/rhodecode-venv/bin/activate - Make a folder for rhodecode somewhere on the filesystem for example :: - mkdir /var/www/rhodecode + mkdir /var/www/rhodecode - Run this command to install rhodecode :: - easy_install rhodecode + easy_install rhodecode - this will install rhodecode together with pylons and all other required python libraries diff --git a/docs/setup.rst b/docs/setup.rst --- a/docs/setup.rst +++ b/docs/setup.rst @@ -7,7 +7,7 @@ Setup Setting up the application -------------------------- -First You'll ned to create RhodeCode config file. Run the following command +First You'll need to create RhodeCode config file. Run the following command to do this :: @@ -19,8 +19,10 @@ to do this email settings, usage of static files, cache, celery settings and logging. +Next we need to create the database. I'll recommend to use sqlite (default) +or postgresql. Make sure You properly adjust the db url in the .ini file to use +other than the default sqlite database -Next we need to create the database. :: @@ -35,7 +37,7 @@ Next we need to create the database. interface will work even without such an access but, when trying to do a push it'll eventually fail with permission denied errors. -You are ready to use rhodecode, to run it simply execute +You are ready to use RhodeCode, to run it simply execute :: @@ -92,13 +94,13 @@ incremental mode. incremental mode:: - paster make-index production.ini --repo-location= + paster make-index production.ini --repo-location= for full index rebuild You can use:: - paster make-index production.ini -f --repo-location= + paster make-index production.ini -f --repo-location= building index just for chosen repositories is possible with such command:: @@ -334,10 +336,18 @@ In order to make start using celery run: paster celeryd - .. note:: Make sure You run this command from same virtualenv, and with the same user that rhodecode runs. + +HTTPS support +------------- + +There are two ways to enable https, first is to set HTTP_X_URL_SCHEME in +Your http server headers, than rhodecode will recognise this headers and make +proper https redirections, another way is to set `force_https = true` +in the ini cofiguration to force using https, no headers are needed than to +enable https Nginx virtual host example @@ -426,6 +436,29 @@ Additional tutorial http://wiki.pylonshq.com/display/pylonscookbook/Apache+as+a+reverse+proxy+for+Pylons +Apache as subdirectory +---------------------- + + +Apache subdirectory part:: + + + ProxyPass http://127.0.0.1:59542/rhodecode + ProxyPassReverse http://127.0.0.1:59542/rhodecode + SetEnvIf X-Url-Scheme https HTTPS=1 + + +Besides the regular apache setup You'll need to add such part to .ini file:: + + filter-with = proxy-prefix + +Add the following at the end of the .ini file:: + + [filter:proxy-prefix] + use = egg:PasteDeploy#prefix + prefix = / + + Apache's example FCGI config ---------------------------- @@ -462,7 +495,9 @@ Troubleshooting - make sure You set a proper max_body_size for the http server +- Apache doesn't pass basicAuth on pull/push ? + - Make sure You added `WSGIPassAuthorization true` .. _virtualenv: http://pypi.python.org/pypi/virtualenv .. _python: http://www.python.org/ diff --git a/docs/upgrade.rst b/docs/upgrade.rst --- a/docs/upgrade.rst +++ b/docs/upgrade.rst @@ -25,15 +25,20 @@ This will display any changes made from current config. And tries to do an automerge. It's always better to do a backup of config file and recheck the content after merge. +.. note:: + The next steps only apply to upgrading from non bugfix releases eg. from + 1.1 to 1.2. Bugfix releases (eg. 1.1.2->1.1.3) will not have any database + schema changes or whoosh library updates + It's also good to rebuild the whoosh index since after upgrading the whoosh -version there could be introduced incompatible index changes. +version there could be introduced incompatible index changes. The last step is to upgrade the database. To do this simply run :: - paster upgrade-db production.ini + paster upgrade-db production.ini This will upgrade schema, as well as update some default on the database, always recheck the settings of the application, if there are no new options