##// END OF EJS Templates
release: Merge default into stable for release preparation
marcink -
r3192:689a0c93 merge stable
parent child Browse files
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -0,0 +1,10 b''
1 {
2 "presets": [
3 ["env", {
4 "targets": {
5 "browsers": ["last 2 versions"]
6 }
7 }]
8 ],
9 "plugins": ["transform-object-rest-spread"]
10 }
@@ -0,0 +1,44 b''
1 .. _integrations-rcextensions:
2
3
4 rcextensions integrations
5 =========================
6
7
8 Since RhodeCode 4.14 release rcextensions aren't part of rhodecode-tools, and instead
9 they are shipped with the new or upgraded installations.
10
11 The rcextensions template `rcextensions.tmpl` is created in the `etc/` directory
12 of enterprise or community installation. It's always re-created and updated on upgrades.
13
14
15 Activating rcextensions
16 +++++++++++++++++++++++
17
18 To activate rcextensions simply copy or rename the created template rcextensions
19 into the path where the rhodecode.ini file is located::
20
21 pushd ~/rccontrol/enterprise-1/
22 or
23 pushd ~/rccontrol/community-1/
24
25 mv etc/rcextensions.tmpl rcextensions
26
27
28 rcextensions are loaded when |RCE| starts. So a restart is required after activation or
29 change of code in rcextensions.
30
31 Simply restart only the enterprise/community instance::
32
33 rccontrol restart enterprise-1
34 or
35 rccontrol restart community-1
36
37
38 Example usage
39 +++++++++++++
40
41
42 To see examples of usage please check the examples directory under:
43
44 https://code.rhodecode.com/rhodecode-enterprise-ce/files/stable/rhodecode/config/rcextensions/examples
@@ -0,0 +1,114 b''
1 |RCE| 4.14.0 |RNS|
2 ------------------
3
4 Release Date
5 ^^^^^^^^^^^^
6
7 - 2018-11-02
8
9
10 New Features
11 ^^^^^^^^^^^^
12
13 - Diffs: expose range diff inside the PR view. It's now possible to show
14 commit-per-commit view of changes in pull request.
15 - Diffs: new sticky context bar.
16 When browsing diffs we show file path of the current diff so users are aware all the time
17 what file they are reviewing.
18 - Diffs: added quick file selector in diffs views. Now it's possible to select a file
19 in large diffs from the sticky header for quicker access to certain interesting files
20 in diffs.
21 - Diffs: introducing diff menu for whitespace toggle and context changes.
22 It's now possible to show/hide whitespace changes and toggle the file context in
23 all diff places including pull requests.
24 - Comments: allow commenting on empty files without content.
25 - Repositories: added option to archive repositories instead of deleting them.
26 Archived repositories are useful for future auditing, but they are read-only.
27 - rcextensions: new rcextensions. We're introducing new `rcextensions` that will be base
28 for future low-level integrations. It's now possible to expose nice messages back
29 to the users when using `rcextensions`.
30 - Summary page: slightly re-organize summary page for better user experience.
31
32
33 General
34 ^^^^^^^
35
36 - Mailing: switched from custom library to pyramid_mailer with python3 compatibility.
37 - Frontend: Switched to Polymer 3.0.
38 - Frontend: fixed problems with IE11 and brought back support for that browser.
39 - Git: use a fetch_sync based creation of remote repositories.
40 This fixes problems with importing from Bitbucket.
41 - Comments: update comments email templates.
42 - Packaging: only wrap external dependency scripts. This makes execution of scripts
43 roughly 5x faster due to much smaller PATH tree.
44 - HTTP: use application wide detection of invalid bytes sent via URL/GET/POST data.
45 - Fonts/UI: use consistent fonts across the whole application.
46 Few places had non-standard custom fonts.
47 - Google: updated google auth plugin with latest API changes.
48 - Core: handle edge case requesting matched routes but with hg/svn/git or api context.
49 - Dependencies: bumped rhodecode-tools to 1.0.0 release using Apache2 license.
50 - Dependencies: atomicwrites==1.2.1
51 - Dependencies: attrs==18.2.0
52 - Dependencies: dogpile.cache==0.6.7
53 - Dependencies: psutil==5.4.7
54 - Dependencies: pathlib2==2.3.2
55 - Dependencies: subprocess32==3.5.2
56 - Dependencies: gevent==1.3.6
57 - Dependencies: greenlet==0.4.15
58 - Dependencies: pytest==3.8.2
59 - Dependencies: py==1.6.0
60 - Dependencies: pytest-cov==2.6.0
61 - Dependencies: pytest-timeout==1.3.2
62 - Dependencies: coverage==4.5.1
63 - Dependencies: psycopg2==2.7.5
64
65
66 Security
67 ^^^^^^^^
68
69 - RST: improve Javascript RST sandbox.
70 - Jupyter: sanitize markdown cells similar as we do for our own markdown cleanup.
71
72
73 Performance
74 ^^^^^^^^^^^
75
76 - SSH: improved SSH wrapper execution speed by using optimized binary script wrapping.
77 - Core: reduced font and JavaScript load times.
78
79
80 Fixes
81 ^^^^^
82
83 - Comments: ensure we always display unmatched comments.
84 - Branch Permissions: fixed changing rule order for branch permissions.
85 - Users: ensure get_first_superadmin actually gets the 1st created super-admin.
86 - Users: when deleting users ensure we also clear personal flag.
87 This fixes some problems with multiple personal groups.
88 - Diffs: disable the error border on highlight errors.
89 - Integrations: implement retry to HTTP[S] calls for integrations.
90 Web parts will do a 3x retry call in case service is not reachable or
91 responds with 5XX codes.
92 - Git: fixed pull-request updates in case branch names are the same as the file names.
93 - Supervisor: add patch for older kernel support.
94 - Compare: fixed file after/before links in compare view for cross repo compare.
95 - Emails: improve fonts and rendering of email HTML.
96 - Permissions: flush members of user groups permissions to clear caches.
97 - Repository: add check preventing of removal of repo with attached pull requests. Users
98 should use the new archive repo function instead.
99
100
101 Upgrade notes
102 ^^^^^^^^^^^^^
103
104 - In this release, we're shipping a new `rcextensions`. The changes made are
105 backward incompatible. An update of `rcextensions` is required
106 prior to using them again. Please check the new `rcextensions.tmpl` directory
107 located in `etc/rcextensions.tmpl` in your instance installation path.
108 Old code should be 100% portable by just copy&paste to the right function.
109
110 - Mailing: We introduced a new mailing library. The older options should be compatible and
111 generally, old configuration doesn't need any changes in order to send emails.
112 We, however, encourage users to re-check mailing setup in case of some more
113 sophisticated email setups.
114 There's a possibility to send a test email from admin > settings > email section.
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
@@ -1,6 +1,6 b''
1 [bumpversion]
1 [bumpversion]
2 current_version = 4.13.3
2 current_version = 4.14.0
3 message = release: Bump version {current_version} to {new_version}
3 message = release: Bump version {current_version} to {new_version}
4
4
5 [bumpversion:file:rhodecode/VERSION]
5 [bumpversion:file:rhodecode/VERSION]
6
6
@@ -1,66 +1,66 b''
1 syntax: glob
1 syntax: glob
2 *.egg
2 *.egg
3 *.egg-info
3 *.egg-info
4 *.idea
4 *.idea
5 *.orig
5 *.orig
6 *.pyc
6 *.pyc
7 *.sqlite-journal
7 *.sqlite-journal
8 *.swp
8 *.swp
9 *.tox
9 *.tox
10 *.DS_Store*
10 *.DS_Store*
11 rhodecode/public/js/src/components/**/*.css
11 rhodecode/public/js/src/components/**/*.css
12
12
13 syntax: regexp
13 syntax: regexp
14
14
15 #.filename
15 #.filename
16 ^\.settings$
16 ^\.settings$
17 ^\.project$
17 ^\.project$
18 ^\.pydevproject$
18 ^\.pydevproject$
19 ^\.coverage$
19 ^\.coverage$
20 ^\.cache.*$
20 ^\.cache.*$
21 ^\.rhodecode$
21 ^\.rhodecode$
22
22
23 ^rcextensions
23 ^rcextensions
24 ^.dev
24 ^.dev
25 ^._dev
25 ^._dev
26 ^build/
26 ^build/
27 ^bower_components/
28 ^coverage\.xml$
27 ^coverage\.xml$
29 ^data$
28 ^data$
30 ^\.eggs/
29 ^\.eggs/
31 ^configs/data$
30 ^configs/data$
32 ^dev.ini$
31 ^dev.ini$
33 ^acceptance_tests/dev.*\.ini$
32 ^acceptance_tests/dev.*\.ini$
34 ^dist/
33 ^dist/
35 ^fabfile.py
34 ^fabfile.py
36 ^htmlcov
35 ^htmlcov
37 ^junit\.xml$
36 ^junit\.xml$
38 ^node_modules/
37 ^node_modules/
38 ^node_binaries/
39 ^pylint.log$
39 ^pylint.log$
40 ^rcextensions/
40 ^rcextensions/
41 ^result$
41 ^result$
42 ^rhodecode/public/css/style.css$
42 ^rhodecode/public/css/style.css$
43 ^rhodecode/public/css/style-polymer.css$
43 ^rhodecode/public/css/style-polymer.css$
44 ^rhodecode/public/js/rhodecode-components.html$
44 ^rhodecode/public/js/rhodecode-components.html$
45 ^rhodecode/public/js/rhodecode-components.js$
45 ^rhodecode/public/js/scripts.js$
46 ^rhodecode/public/js/scripts.js$
46 ^rhodecode/public/js/rhodecode-components.js$
47 ^rhodecode/public/js/src/components/root-styles.gen.html$
47 ^rhodecode/public/js/src/components/root-styles.gen.html$
48 ^rhodecode/public/js/vendors/webcomponentsjs/
48 ^rhodecode/public/js/vendors/webcomponentsjs/
49 ^rhodecode\.db$
49 ^rhodecode\.db$
50 ^rhodecode\.log$
50 ^rhodecode\.log$
51 ^rhodecode_dev\.log$
51 ^rhodecode_dev\.log$
52 ^test\.db$
52 ^test\.db$
53
53
54 # ac-tests
54 # ac-tests
55 ^acceptance_tests/\.cache.*$
55 ^acceptance_tests/\.cache.*$
56 ^acceptance_tests/externals
56 ^acceptance_tests/externals
57 ^acceptance_tests/ghostdriver.log$
57 ^acceptance_tests/ghostdriver.log$
58 ^acceptance_tests/local(_.+)?\.ini$
58 ^acceptance_tests/local(_.+)?\.ini$
59
59
60 # docs
60 # docs
61 ^docs/_build$
61 ^docs/_build$
62 ^docs/result$
62 ^docs/result$
63 ^docs-internal/_build$
63 ^docs-internal/_build$
64
64
65 # Cythonized things
65 # Cythonized things
66 ^rhodecode/.*\.(c|so)$
66 ^rhodecode/.*\.(c|so)$
@@ -1,33 +1,28 b''
1 [DEFAULT]
1 [DEFAULT]
2 done = false
2 done = false
3
3
4 [task:bump_version]
4 [task:bump_version]
5 done = true
5 done = true
6
6
7 [task:rc_tools_pinned]
7 [task:rc_tools_pinned]
8 done = true
9
8
10 [task:fixes_on_stable]
9 [task:fixes_on_stable]
11 done = true
12
10
13 [task:pip2nix_generated]
11 [task:pip2nix_generated]
14 done = true
15
12
16 [task:changelog_updated]
13 [task:changelog_updated]
17 done = true
18
14
19 [task:generate_api_docs]
15 [task:generate_api_docs]
20 done = true
16
17 [task:updated_translation]
21
18
22 [release]
19 [release]
23 state = prepared
20 state = in_progress
24 version = 4.13.3
21 version = 4.14.0
25
26 [task:updated_translation]
27
22
28 [task:generate_js_routes]
23 [task:generate_js_routes]
29
24
30 [task:updated_trial_license]
25 [task:updated_trial_license]
31
26
32 [task:generate_oss_licenses]
27 [task:generate_oss_licenses]
33
28
@@ -1,15 +1,21 b''
1 var gruntConfig = require('./grunt_config.json');
1 var gruntConfig = require('./grunt_config.json');
2 var webpackConfig = require('./webpack.config');
3 gruntConfig["webpack"] = {
4 options: {
5 stats: !process.env.NODE_ENV || process.env.NODE_ENV === 'development'
6 },
7 prod: webpackConfig,
8 dev: Object.assign({ watch: false }, webpackConfig)
9 };
2
10
3 module.exports = function(grunt) {
11 module.exports = function(grunt) {
4 grunt.initConfig(gruntConfig);
12 grunt.initConfig(gruntConfig);
5
13
6 grunt.loadNpmTasks('grunt-contrib-less');
14 grunt.loadNpmTasks('grunt-contrib-less');
7 grunt.loadNpmTasks('grunt-contrib-concat');
15 grunt.loadNpmTasks('grunt-contrib-concat');
8 grunt.loadNpmTasks('grunt-contrib-watch');
16 grunt.loadNpmTasks('grunt-contrib-watch');
9 grunt.loadNpmTasks('grunt-contrib-jshint');
17 grunt.loadNpmTasks('grunt-contrib-jshint');
10 grunt.loadNpmTasks('grunt-vulcanize');
11 grunt.loadNpmTasks('grunt-crisper');
12 grunt.loadNpmTasks('grunt-contrib-copy');
18 grunt.loadNpmTasks('grunt-contrib-copy');
13
19 grunt.loadNpmTasks('grunt-webpack');
14 grunt.registerTask('default', ['less:production', 'less:components', 'concat:polymercss', 'copy', 'concat:dist', 'vulcanize', 'crisper']);
20 grunt.registerTask('default', ['less:production', 'less:components', 'copy', 'webpack', 'concat:dist']);
15 };
21 };
@@ -1,53 +1,52 b''
1 # top level files
1 # top level files
2
2
3 include MANIFEST.in
3 include MANIFEST.in
4 include README.rst
4 include README.rst
5 include CHANGES.rst
5 include CHANGES.rst
6 include LICENSE.txt
6 include LICENSE.txt
7
7
8 include rhodecode/VERSION
8 include rhodecode/VERSION
9
9
10 # docs
10 # docs
11 recursive-include docs *
11 recursive-include docs *
12
12
13 # all config files
13 # all config files
14 recursive-include configs *
14 recursive-include configs *
15
15
16 # translations
16 # translations
17 recursive-include rhodecode/i18n *
17 recursive-include rhodecode/i18n *
18
18
19 # non-python core stuff
19 # non-python core stuff
20 recursive-include rhodecode *.cfg
20 recursive-include rhodecode *.cfg
21 recursive-include rhodecode *.json
21 recursive-include rhodecode *.json
22 recursive-include rhodecode *.ini_tmpl
22 recursive-include rhodecode *.ini_tmpl
23 recursive-include rhodecode *.sh
23 recursive-include rhodecode *.sh
24 recursive-include rhodecode *.mako
24 recursive-include rhodecode *.mako
25
25
26 # 502 page
26 # 502 page
27 include rhodecode/public/502.html
27 include rhodecode/public/502.html
28
28
29 # robots
29 # robots
30 include rhodecode/public/robots.txt
30 include rhodecode/public/robots.txt
31
31
32 # images, css
32 # images, css
33 include rhodecode/public/css/*.css
33 include rhodecode/public/css/*.css
34 include rhodecode/public/images/*.*
34 include rhodecode/public/images/*.*
35 include rhodecode/public/images/ee_features/*.*
35 include rhodecode/public/images/ee_features/*.*
36
36
37 # sound files
37 # sound files
38 include rhodecode/public/sounds/*.mp3
38 include rhodecode/public/sounds/*.mp3
39 include rhodecode/public/sounds/*.wav
39 include rhodecode/public/sounds/*.wav
40
40
41 # fonts
41 # fonts
42 recursive-include rhodecode/public/fonts/ProximaNova *
43 recursive-include rhodecode/public/fonts/RCIcons *
42 recursive-include rhodecode/public/fonts/RCIcons *
44
43
45 # js
44 # js
46 recursive-include rhodecode/public/js *
45 recursive-include rhodecode/public/js *
47
46
48 # templates
47 # templates
49 recursive-include rhodecode/templates *
48 recursive-include rhodecode/templates *
50
49
51 # skip any tests files
50 # skip any tests files
52 recursive-exclude rhodecode/tests *
51 recursive-exclude rhodecode/tests *
53
52
@@ -1,53 +1,53 b''
1
1
2 .PHONY: clean docs docs-clean docs-cleanup test test-clean test-only test-only-postgres test-only-mysql web-build
2 .PHONY: clean docs docs-clean docs-cleanup test test-clean test-only test-only-postgres test-only-mysql web-build
3
3
4 WEBPACK=./node_modules/webpack/bin/webpack.js
5 GRUNT=grunt
6 NODE_PATH=./node_modules
4 NODE_PATH=./node_modules
5 WEBPACK=./node_binaries/webpack
6 GRUNT=./node_binaries/grunt
7
7
8
8
9 clean:
9 clean:
10 make test-clean
10 make test-clean
11 find . -type f \( -iname '*.c' -o -iname '*.pyc' -o -iname '*.so' \) -exec rm '{}' ';'
11 find . -type f \( -iname '*.c' -o -iname '*.pyc' -o -iname '*.so' \) -exec rm '{}' ';'
12
12
13 test:
13 test:
14 make test-clean
14 make test-clean
15 make test-only
15 make test-only
16
16
17 test-clean:
17 test-clean:
18 rm -rf coverage.xml htmlcov junit.xml pylint.log result
18 rm -rf coverage.xml htmlcov junit.xml pylint.log result
19 find . -type d -name "__pycache__" -prune -exec rm -rf '{}' ';'
19 find . -type d -name "__pycache__" -prune -exec rm -rf '{}' ';'
20
20
21 test-only:
21 test-only:
22 PYTHONHASHSEED=random \
22 PYTHONHASHSEED=random \
23 py.test -x -vv -r xw -p no:sugar --cov=rhodecode \
23 py.test -x -vv -r xw -p no:sugar --cov=rhodecode \
24 --cov-report=term-missing --cov-report=html \
24 --cov-report=term-missing --cov-report=html \
25 rhodecode
25 rhodecode
26
26
27 test-only-mysql:
27 test-only-mysql:
28 PYTHONHASHSEED=random \
28 PYTHONHASHSEED=random \
29 py.test -x -vv -r xw -p no:sugar --cov=rhodecode \
29 py.test -x -vv -r xw -p no:sugar --cov=rhodecode \
30 --cov-report=term-missing --cov-report=html \
30 --cov-report=term-missing --cov-report=html \
31 --ini-config-override='{"app:main": {"sqlalchemy.db1.url": "mysql://root:qweqwe@localhost/rhodecode_test"}}' \
31 --ini-config-override='{"app:main": {"sqlalchemy.db1.url": "mysql://root:qweqwe@localhost/rhodecode_test"}}' \
32 rhodecode
32 rhodecode
33
33
34 test-only-postgres:
34 test-only-postgres:
35 PYTHONHASHSEED=random \
35 PYTHONHASHSEED=random \
36 py.test -x -vv -r xw -p no:sugar --cov=rhodecode \
36 py.test -x -vv -r xw -p no:sugar --cov=rhodecode \
37 --cov-report=term-missing --cov-report=html \
37 --cov-report=term-missing --cov-report=html \
38 --ini-config-override='{"app:main": {"sqlalchemy.db1.url": "postgresql://postgres:qweqwe@localhost/rhodecode_test"}}' \
38 --ini-config-override='{"app:main": {"sqlalchemy.db1.url": "postgresql://postgres:qweqwe@localhost/rhodecode_test"}}' \
39 rhodecode
39 rhodecode
40
40
41
41
42 docs:
42 docs:
43 (cd docs; nix-build default.nix -o result; make clean html)
43 (cd docs; nix-build default.nix -o result; make clean html)
44
44
45 docs-clean:
45 docs-clean:
46 (cd docs; make clean)
46 (cd docs; make clean)
47
47
48 docs-cleanup:
48 docs-cleanup:
49 (cd docs; make cleanup)
49 (cd docs; make cleanup)
50
50
51 web-build:
51 web-build:
52 NODE_PATH=$(NODE_PATH) $(GRUNT)
52 NODE_PATH=$(NODE_PATH) $(GRUNT)
53
53
@@ -1,724 +1,724 b''
1
1
2
2
3 ################################################################################
3 ################################################################################
4 ## RHODECODE COMMUNITY EDITION CONFIGURATION ##
4 ## RHODECODE COMMUNITY EDITION CONFIGURATION ##
5 ################################################################################
5 ################################################################################
6
6
7 [DEFAULT]
7 [DEFAULT]
8 debug = true
8 debug = true
9
9
10 ################################################################################
10 ################################################################################
11 ## EMAIL CONFIGURATION ##
11 ## EMAIL CONFIGURATION ##
12 ## Uncomment and replace with the email address which should receive ##
12 ## Uncomment and replace with the email address which should receive ##
13 ## any error reports after an application crash ##
13 ## any error reports after an application crash ##
14 ## Additionally these settings will be used by the RhodeCode mailing system ##
14 ## Additionally these settings will be used by the RhodeCode mailing system ##
15 ################################################################################
15 ################################################################################
16
16
17 ## prefix all emails subjects with given prefix, helps filtering out emails
17 ## prefix all emails subjects with given prefix, helps filtering out emails
18 #email_prefix = [RhodeCode]
18 #email_prefix = [RhodeCode]
19
19
20 ## email FROM address all mails will be sent
20 ## email FROM address all mails will be sent
21 #app_email_from = rhodecode-noreply@localhost
21 #app_email_from = rhodecode-noreply@localhost
22
22
23 #smtp_server = mail.server.com
23 #smtp_server = mail.server.com
24 #smtp_username =
24 #smtp_username =
25 #smtp_password =
25 #smtp_password =
26 #smtp_port =
26 #smtp_port =
27 #smtp_use_tls = false
27 #smtp_use_tls = false
28 #smtp_use_ssl = true
28 #smtp_use_ssl = true
29 ## Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
30 #smtp_auth =
31
29
32 [server:main]
30 [server:main]
33 ## COMMON ##
31 ## COMMON ##
34 host = 127.0.0.1
32 host = 127.0.0.1
35 port = 5000
33 port = 5000
36
34
37 ###########################################################
35 ###########################################################
38 ## WAITRESS WSGI SERVER - Recommended for Development ####
36 ## WAITRESS WSGI SERVER - Recommended for Development ####
39 ###########################################################
37 ###########################################################
40
38
41 use = egg:waitress#main
39 use = egg:waitress#main
42 ## number of worker threads
40 ## number of worker threads
43 threads = 5
41 threads = 5
44 ## MAX BODY SIZE 100GB
42 ## MAX BODY SIZE 100GB
45 max_request_body_size = 107374182400
43 max_request_body_size = 107374182400
46 ## Use poll instead of select, fixes file descriptors limits problems.
44 ## Use poll instead of select, fixes file descriptors limits problems.
47 ## May not work on old windows systems.
45 ## May not work on old windows systems.
48 asyncore_use_poll = true
46 asyncore_use_poll = true
49
47
50
48
51 ##########################
49 ##########################
52 ## GUNICORN WSGI SERVER ##
50 ## GUNICORN WSGI SERVER ##
53 ##########################
51 ##########################
54 ## run with gunicorn --log-config rhodecode.ini --paste rhodecode.ini
52 ## run with gunicorn --log-config rhodecode.ini --paste rhodecode.ini
55
53
56 #use = egg:gunicorn#main
54 #use = egg:gunicorn#main
57 ## Sets the number of process workers. More workers means more concurent connections
55 ## Sets the number of process workers. More workers means more concurent connections
58 ## RhodeCode can handle at the same time. Each additional worker also it increases
56 ## RhodeCode can handle at the same time. Each additional worker also it increases
59 ## memory usage as each has it's own set of caches.
57 ## memory usage as each has it's own set of caches.
60 ## Recommended value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers, but no more
58 ## Recommended value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers, but no more
61 ## than 8-10 unless for really big deployments .e.g 700-1000 users.
59 ## than 8-10 unless for really big deployments .e.g 700-1000 users.
62 ## `instance_id = *` must be set in the [app:main] section below (which is the default)
60 ## `instance_id = *` must be set in the [app:main] section below (which is the default)
63 ## when using more than 1 worker.
61 ## when using more than 1 worker.
64 #workers = 2
62 #workers = 2
65 ## process name visible in process list
63 ## process name visible in process list
66 #proc_name = rhodecode
64 #proc_name = rhodecode
67 ## type of worker class, one of sync, gevent
65 ## type of worker class, one of sync, gevent
68 ## recommended for bigger setup is using of of other than sync one
66 ## recommended for bigger setup is using of of other than sync one
69 #worker_class = gevent
67 #worker_class = gevent
70 ## The maximum number of simultaneous clients. Valid only for Gevent
68 ## The maximum number of simultaneous clients. Valid only for Gevent
71 #worker_connections = 10
69 #worker_connections = 10
72 ## max number of requests that worker will handle before being gracefully
70 ## max number of requests that worker will handle before being gracefully
73 ## restarted, could prevent memory leaks
71 ## restarted, could prevent memory leaks
74 #max_requests = 1000
72 #max_requests = 1000
75 #max_requests_jitter = 30
73 #max_requests_jitter = 30
76 ## amount of time a worker can spend with handling a request before it
74 ## amount of time a worker can spend with handling a request before it
77 ## gets killed and restarted. Set to 6hrs
75 ## gets killed and restarted. Set to 6hrs
78 #timeout = 21600
76 #timeout = 21600
79
77
80
78
81 ## prefix middleware for RhodeCode.
79 ## prefix middleware for RhodeCode.
82 ## recommended when using proxy setup.
80 ## recommended when using proxy setup.
83 ## allows to set RhodeCode under a prefix in server.
81 ## allows to set RhodeCode under a prefix in server.
84 ## eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
82 ## eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
85 ## And set your prefix like: `prefix = /custom_prefix`
83 ## And set your prefix like: `prefix = /custom_prefix`
86 ## be sure to also set beaker.session.cookie_path = /custom_prefix if you need
84 ## be sure to also set beaker.session.cookie_path = /custom_prefix if you need
87 ## to make your cookies only work on prefix url
85 ## to make your cookies only work on prefix url
88 [filter:proxy-prefix]
86 [filter:proxy-prefix]
89 use = egg:PasteDeploy#prefix
87 use = egg:PasteDeploy#prefix
90 prefix = /
88 prefix = /
91
89
92 [app:main]
90 [app:main]
93 ## The %(here)s variable will be replaced with the absolute path of parent directory
91 ## The %(here)s variable will be replaced with the absolute path of parent directory
94 ## of this file
92 ## of this file
95 ## In addition ENVIRONMENT variables usage is possible, e.g
93 ## In addition ENVIRONMENT variables usage is possible, e.g
96 ## sqlalchemy.db1.url = {ENV_RC_DB_URL}
94 ## sqlalchemy.db1.url = {ENV_RC_DB_URL}
97
95
98 use = egg:rhodecode-enterprise-ce
96 use = egg:rhodecode-enterprise-ce
99
97
100 ## enable proxy prefix middleware, defined above
98 ## enable proxy prefix middleware, defined above
101 #filter-with = proxy-prefix
99 #filter-with = proxy-prefix
102
100
103 # During development the we want to have the debug toolbar enabled
101 # During development the we want to have the debug toolbar enabled
104 pyramid.includes =
102 pyramid.includes =
105 pyramid_debugtoolbar
103 pyramid_debugtoolbar
106 rhodecode.lib.middleware.request_wrapper
104 rhodecode.lib.middleware.request_wrapper
107
105
108 pyramid.reload_templates = true
106 pyramid.reload_templates = true
109
107
110 debugtoolbar.hosts = 0.0.0.0/0
108 debugtoolbar.hosts = 0.0.0.0/0
111 debugtoolbar.exclude_prefixes =
109 debugtoolbar.exclude_prefixes =
112 /css
110 /css
113 /fonts
111 /fonts
114 /images
112 /images
115 /js
113 /js
116
114
117 ## RHODECODE PLUGINS ##
115 ## RHODECODE PLUGINS ##
118 rhodecode.includes =
116 rhodecode.includes =
119 rhodecode.api
117 rhodecode.api
120
118
121
119
122 # api prefix url
120 # api prefix url
123 rhodecode.api.url = /_admin/api
121 rhodecode.api.url = /_admin/api
124
122
125
123
126 ## END RHODECODE PLUGINS ##
124 ## END RHODECODE PLUGINS ##
127
125
128 ## encryption key used to encrypt social plugin tokens,
126 ## encryption key used to encrypt social plugin tokens,
129 ## remote_urls with credentials etc, if not set it defaults to
127 ## remote_urls with credentials etc, if not set it defaults to
130 ## `beaker.session.secret`
128 ## `beaker.session.secret`
131 #rhodecode.encrypted_values.secret =
129 #rhodecode.encrypted_values.secret =
132
130
133 ## decryption strict mode (enabled by default). It controls if decryption raises
131 ## decryption strict mode (enabled by default). It controls if decryption raises
134 ## `SignatureVerificationError` in case of wrong key, or damaged encryption data.
132 ## `SignatureVerificationError` in case of wrong key, or damaged encryption data.
135 #rhodecode.encrypted_values.strict = false
133 #rhodecode.encrypted_values.strict = false
136
134
137 ## return gzipped responses from Rhodecode (static files/application)
135 ## return gzipped responses from Rhodecode (static files/application)
138 gzip_responses = false
136 gzip_responses = false
139
137
140 ## autogenerate javascript routes file on startup
138 ## autogenerate javascript routes file on startup
141 generate_js_files = false
139 generate_js_files = false
142
140
143 ## System global default language.
141 ## System global default language.
144 ## All available languages: en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
142 ## All available languages: en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
145 lang = en
143 lang = en
146
144
147 ## Perform a full repository scan and import on each server start.
145 ## Perform a full repository scan and import on each server start.
148 ## Settings this to true could lead to very long startup time.
146 ## Settings this to true could lead to very long startup time.
149 startup.import_repos = false
147 startup.import_repos = false
150
148
151 ## Uncomment and set this path to use archive download cache.
149 ## Uncomment and set this path to use archive download cache.
152 ## Once enabled, generated archives will be cached at this location
150 ## Once enabled, generated archives will be cached at this location
153 ## and served from the cache during subsequent requests for the same archive of
151 ## and served from the cache during subsequent requests for the same archive of
154 ## the repository.
152 ## the repository.
155 #archive_cache_dir = /tmp/tarballcache
153 #archive_cache_dir = /tmp/tarballcache
156
154
157 ## URL at which the application is running. This is used for bootstraping
155 ## URL at which the application is running. This is used for bootstraping
158 ## requests in context when no web request is available. Used in ishell, or
156 ## requests in context when no web request is available. Used in ishell, or
159 ## SSH calls. Set this for events to receive proper url for SSH calls.
157 ## SSH calls. Set this for events to receive proper url for SSH calls.
160 app.base_url = http://rhodecode.local
158 app.base_url = http://rhodecode.local
161
159
162 ## Unique application ID. Should be a random unique string for security.
160 ## Unique application ID. Should be a random unique string for security.
163 app_instance_uuid = rc-production
161 app_instance_uuid = rc-production
164
162
165 ## Cut off limit for large diffs (size in bytes). If overall diff size on
163 ## Cut off limit for large diffs (size in bytes). If overall diff size on
166 ## commit, or pull request exceeds this limit this diff will be displayed
164 ## commit, or pull request exceeds this limit this diff will be displayed
167 ## partially. E.g 512000 == 512Kb
165 ## partially. E.g 512000 == 512Kb
168 cut_off_limit_diff = 512000
166 cut_off_limit_diff = 512000
169
167
170 ## Cut off limit for large files inside diffs (size in bytes). Each individual
168 ## Cut off limit for large files inside diffs (size in bytes). Each individual
171 ## file inside diff which exceeds this limit will be displayed partially.
169 ## file inside diff which exceeds this limit will be displayed partially.
172 ## E.g 128000 == 128Kb
170 ## E.g 128000 == 128Kb
173 cut_off_limit_file = 128000
171 cut_off_limit_file = 128000
174
172
175 ## use cached version of vcs repositories everywhere. Recommended to be `true`
173 ## use cached version of vcs repositories everywhere. Recommended to be `true`
176 vcs_full_cache = true
174 vcs_full_cache = true
177
175
178 ## Force https in RhodeCode, fixes https redirects, assumes it's always https.
176 ## Force https in RhodeCode, fixes https redirects, assumes it's always https.
179 ## Normally this is controlled by proper http flags sent from http server
177 ## Normally this is controlled by proper http flags sent from http server
180 force_https = false
178 force_https = false
181
179
182 ## use Strict-Transport-Security headers
180 ## use Strict-Transport-Security headers
183 use_htsts = false
181 use_htsts = false
184
182
185 ## git rev filter option, --all is the default filter, if you need to
183 ## git rev filter option, --all is the default filter, if you need to
186 ## hide all refs in changelog switch this to --branches --tags
184 ## hide all refs in changelog switch this to --branches --tags
187 git_rev_filter = --branches --tags
185 git_rev_filter = --branches --tags
188
186
189 # Set to true if your repos are exposed using the dumb protocol
187 # Set to true if your repos are exposed using the dumb protocol
190 git_update_server_info = false
188 git_update_server_info = false
191
189
192 ## RSS/ATOM feed options
190 ## RSS/ATOM feed options
193 rss_cut_off_limit = 256000
191 rss_cut_off_limit = 256000
194 rss_items_per_page = 10
192 rss_items_per_page = 10
195 rss_include_diff = false
193 rss_include_diff = false
196
194
197 ## gist URL alias, used to create nicer urls for gist. This should be an
195 ## gist URL alias, used to create nicer urls for gist. This should be an
198 ## url that does rewrites to _admin/gists/{gistid}.
196 ## url that does rewrites to _admin/gists/{gistid}.
199 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
197 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
200 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
198 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
201 gist_alias_url =
199 gist_alias_url =
202
200
203 ## List of views (using glob pattern syntax) that AUTH TOKENS could be
201 ## List of views (using glob pattern syntax) that AUTH TOKENS could be
204 ## used for access.
202 ## used for access.
205 ## Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
203 ## Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
206 ## came from the the logged in user who own this authentication token.
204 ## came from the the logged in user who own this authentication token.
207 ## Additionally @TOKEN syntaxt can be used to bound the view to specific
205 ## Additionally @TOKEN syntaxt can be used to bound the view to specific
208 ## authentication token. Such view would be only accessible when used together
206 ## authentication token. Such view would be only accessible when used together
209 ## with this authentication token
207 ## with this authentication token
210 ##
208 ##
211 ## list of all views can be found under `/_admin/permissions/auth_token_access`
209 ## list of all views can be found under `/_admin/permissions/auth_token_access`
212 ## The list should be "," separated and on a single line.
210 ## The list should be "," separated and on a single line.
213 ##
211 ##
214 ## Most common views to enable:
212 ## Most common views to enable:
215 # RepoCommitsView:repo_commit_download
213 # RepoCommitsView:repo_commit_download
216 # RepoCommitsView:repo_commit_patch
214 # RepoCommitsView:repo_commit_patch
217 # RepoCommitsView:repo_commit_raw
215 # RepoCommitsView:repo_commit_raw
218 # RepoCommitsView:repo_commit_raw@TOKEN
216 # RepoCommitsView:repo_commit_raw@TOKEN
219 # RepoFilesView:repo_files_diff
217 # RepoFilesView:repo_files_diff
220 # RepoFilesView:repo_archivefile
218 # RepoFilesView:repo_archivefile
221 # RepoFilesView:repo_file_raw
219 # RepoFilesView:repo_file_raw
222 # GistView:*
220 # GistView:*
223 api_access_controllers_whitelist =
221 api_access_controllers_whitelist =
224
222
225 ## Default encoding used to convert from and to unicode
223 ## Default encoding used to convert from and to unicode
226 ## can be also a comma separated list of encoding in case of mixed encodings
224 ## can be also a comma separated list of encoding in case of mixed encodings
227 default_encoding = UTF-8
225 default_encoding = UTF-8
228
226
229 ## instance-id prefix
227 ## instance-id prefix
230 ## a prefix key for this instance used for cache invalidation when running
228 ## a prefix key for this instance used for cache invalidation when running
231 ## multiple instances of rhodecode, make sure it's globally unique for
229 ## multiple instances of rhodecode, make sure it's globally unique for
232 ## all running rhodecode instances. Leave empty if you don't use it
230 ## all running rhodecode instances. Leave empty if you don't use it
233 instance_id =
231 instance_id =
234
232
235 ## Fallback authentication plugin. Set this to a plugin ID to force the usage
233 ## Fallback authentication plugin. Set this to a plugin ID to force the usage
236 ## of an authentication plugin also if it is disabled by it's settings.
234 ## of an authentication plugin also if it is disabled by it's settings.
237 ## This could be useful if you are unable to log in to the system due to broken
235 ## This could be useful if you are unable to log in to the system due to broken
238 ## authentication settings. Then you can enable e.g. the internal rhodecode auth
236 ## authentication settings. Then you can enable e.g. the internal rhodecode auth
239 ## module to log in again and fix the settings.
237 ## module to log in again and fix the settings.
240 ##
238 ##
241 ## Available builtin plugin IDs (hash is part of the ID):
239 ## Available builtin plugin IDs (hash is part of the ID):
242 ## egg:rhodecode-enterprise-ce#rhodecode
240 ## egg:rhodecode-enterprise-ce#rhodecode
243 ## egg:rhodecode-enterprise-ce#pam
241 ## egg:rhodecode-enterprise-ce#pam
244 ## egg:rhodecode-enterprise-ce#ldap
242 ## egg:rhodecode-enterprise-ce#ldap
245 ## egg:rhodecode-enterprise-ce#jasig_cas
243 ## egg:rhodecode-enterprise-ce#jasig_cas
246 ## egg:rhodecode-enterprise-ce#headers
244 ## egg:rhodecode-enterprise-ce#headers
247 ## egg:rhodecode-enterprise-ce#crowd
245 ## egg:rhodecode-enterprise-ce#crowd
248 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
246 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
249
247
250 ## alternative return HTTP header for failed authentication. Default HTTP
248 ## alternative return HTTP header for failed authentication. Default HTTP
251 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
249 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
252 ## handling that causing a series of failed authentication calls.
250 ## handling that causing a series of failed authentication calls.
253 ## Set this variable to 403 to return HTTPForbidden, or any other HTTP code
251 ## Set this variable to 403 to return HTTPForbidden, or any other HTTP code
254 ## This will be served instead of default 401 on bad authnetication
252 ## This will be served instead of default 401 on bad authnetication
255 auth_ret_code =
253 auth_ret_code =
256
254
257 ## use special detection method when serving auth_ret_code, instead of serving
255 ## use special detection method when serving auth_ret_code, instead of serving
258 ## ret_code directly, use 401 initially (Which triggers credentials prompt)
256 ## ret_code directly, use 401 initially (Which triggers credentials prompt)
259 ## and then serve auth_ret_code to clients
257 ## and then serve auth_ret_code to clients
260 auth_ret_code_detection = false
258 auth_ret_code_detection = false
261
259
262 ## locking return code. When repository is locked return this HTTP code. 2XX
260 ## locking return code. When repository is locked return this HTTP code. 2XX
263 ## codes don't break the transactions while 4XX codes do
261 ## codes don't break the transactions while 4XX codes do
264 lock_ret_code = 423
262 lock_ret_code = 423
265
263
266 ## allows to change the repository location in settings page
264 ## allows to change the repository location in settings page
267 allow_repo_location_change = true
265 allow_repo_location_change = true
268
266
269 ## allows to setup custom hooks in settings page
267 ## allows to setup custom hooks in settings page
270 allow_custom_hooks_settings = true
268 allow_custom_hooks_settings = true
271
269
272 ## Generated license token required for EE edition license.
270 ## Generated license token required for EE edition license.
273 ## New generated token value can be found in Admin > settings > license page.
271 ## New generated token value can be found in Admin > settings > license page.
274 license_token =
272 license_token =
275
273
276 ## supervisor connection uri, for managing supervisor and logs.
274 ## supervisor connection uri, for managing supervisor and logs.
277 supervisor.uri =
275 supervisor.uri =
278 ## supervisord group name/id we only want this RC instance to handle
276 ## supervisord group name/id we only want this RC instance to handle
279 supervisor.group_id = dev
277 supervisor.group_id = dev
280
278
281 ## Display extended labs settings
279 ## Display extended labs settings
282 labs_settings_active = true
280 labs_settings_active = true
283
281
284 ## custom exception store path, defaults to TMPDIR
282 ## Custom exception store path, defaults to TMPDIR
285 exception_tracker.store_path =
283 ## This is used to store exception from RhodeCode in shared directory
284 #exception_tracker.store_path =
285
286
286
287 ####################################
287 ####################################
288 ### CELERY CONFIG ####
288 ### CELERY CONFIG ####
289 ####################################
289 ####################################
290 ## run: /path/to/celery worker \
290 ## run: /path/to/celery worker \
291 ## -E --beat --app rhodecode.lib.celerylib.loader \
291 ## -E --beat --app rhodecode.lib.celerylib.loader \
292 ## --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler \
292 ## --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler \
293 ## --loglevel DEBUG --ini /path/to/rhodecode.ini
293 ## --loglevel DEBUG --ini /path/to/rhodecode.ini
294
294
295 use_celery = false
295 use_celery = false
296
296
297 ## connection url to the message broker (default rabbitmq)
297 ## connection url to the message broker (default rabbitmq)
298 celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
298 celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
299
299
300 ## maximum tasks to execute before worker restart
300 ## maximum tasks to execute before worker restart
301 celery.max_tasks_per_child = 100
301 celery.max_tasks_per_child = 100
302
302
303 ## tasks will never be sent to the queue, but executed locally instead.
303 ## tasks will never be sent to the queue, but executed locally instead.
304 celery.task_always_eager = false
304 celery.task_always_eager = false
305
305
306 #####################################
306 #####################################
307 ### DOGPILE CACHE ####
307 ### DOGPILE CACHE ####
308 #####################################
308 #####################################
309 ## Default cache dir for caches. Putting this into a ramdisk
309 ## Default cache dir for caches. Putting this into a ramdisk
310 ## can boost performance, eg. /tmpfs/data_ramdisk, however this directory might require
310 ## can boost performance, eg. /tmpfs/data_ramdisk, however this directory might require
311 ## large amount of space
311 ## large amount of space
312 cache_dir = %(here)s/data
312 cache_dir = %(here)s/data
313
313
314 ## `cache_perms` cache settings for permission tree, auth TTL.
314 ## `cache_perms` cache settings for permission tree, auth TTL.
315 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
315 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
316 rc_cache.cache_perms.expiration_time = 300
316 rc_cache.cache_perms.expiration_time = 300
317
317
318 ## alternative `cache_perms` redis backend with distributed lock
318 ## alternative `cache_perms` redis backend with distributed lock
319 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
319 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
320 #rc_cache.cache_perms.expiration_time = 300
320 #rc_cache.cache_perms.expiration_time = 300
321 ## redis_expiration_time needs to be greater then expiration_time
321 ## redis_expiration_time needs to be greater then expiration_time
322 #rc_cache.cache_perms.arguments.redis_expiration_time = 7200
322 #rc_cache.cache_perms.arguments.redis_expiration_time = 7200
323 #rc_cache.cache_perms.arguments.socket_timeout = 30
323 #rc_cache.cache_perms.arguments.socket_timeout = 30
324 #rc_cache.cache_perms.arguments.host = localhost
324 #rc_cache.cache_perms.arguments.host = localhost
325 #rc_cache.cache_perms.arguments.port = 6379
325 #rc_cache.cache_perms.arguments.port = 6379
326 #rc_cache.cache_perms.arguments.db = 0
326 #rc_cache.cache_perms.arguments.db = 0
327 #rc_cache.cache_perms.arguments.distributed_lock = true
327 #rc_cache.cache_perms.arguments.distributed_lock = true
328
328
329 ## `cache_repo` cache settings for FileTree, Readme, RSS FEEDS
329 ## `cache_repo` cache settings for FileTree, Readme, RSS FEEDS
330 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
330 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
331 rc_cache.cache_repo.expiration_time = 2592000
331 rc_cache.cache_repo.expiration_time = 2592000
332
332
333 ## alternative `cache_repo` redis backend with distributed lock
333 ## alternative `cache_repo` redis backend with distributed lock
334 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
334 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
335 #rc_cache.cache_repo.expiration_time = 2592000
335 #rc_cache.cache_repo.expiration_time = 2592000
336 ## redis_expiration_time needs to be greater then expiration_time
336 ## redis_expiration_time needs to be greater then expiration_time
337 #rc_cache.cache_repo.arguments.redis_expiration_time = 2678400
337 #rc_cache.cache_repo.arguments.redis_expiration_time = 2678400
338 #rc_cache.cache_repo.arguments.socket_timeout = 30
338 #rc_cache.cache_repo.arguments.socket_timeout = 30
339 #rc_cache.cache_repo.arguments.host = localhost
339 #rc_cache.cache_repo.arguments.host = localhost
340 #rc_cache.cache_repo.arguments.port = 6379
340 #rc_cache.cache_repo.arguments.port = 6379
341 #rc_cache.cache_repo.arguments.db = 1
341 #rc_cache.cache_repo.arguments.db = 1
342 #rc_cache.cache_repo.arguments.distributed_lock = true
342 #rc_cache.cache_repo.arguments.distributed_lock = true
343
343
344 ## cache settings for SQL queries, this needs to use memory type backend
344 ## cache settings for SQL queries, this needs to use memory type backend
345 rc_cache.sql_cache_short.backend = dogpile.cache.rc.memory_lru
345 rc_cache.sql_cache_short.backend = dogpile.cache.rc.memory_lru
346 rc_cache.sql_cache_short.expiration_time = 30
346 rc_cache.sql_cache_short.expiration_time = 30
347
347
348 ## `cache_repo_longterm` cache for repo object instances, this needs to use memory
348 ## `cache_repo_longterm` cache for repo object instances, this needs to use memory
349 ## type backend as the objects kept are not pickle serializable
349 ## type backend as the objects kept are not pickle serializable
350 rc_cache.cache_repo_longterm.backend = dogpile.cache.rc.memory_lru
350 rc_cache.cache_repo_longterm.backend = dogpile.cache.rc.memory_lru
351 ## by default we use 96H, this is using invalidation on push anyway
351 ## by default we use 96H, this is using invalidation on push anyway
352 rc_cache.cache_repo_longterm.expiration_time = 345600
352 rc_cache.cache_repo_longterm.expiration_time = 345600
353 ## max items in LRU cache, reduce this number to save memory, and expire last used
353 ## max items in LRU cache, reduce this number to save memory, and expire last used
354 ## cached objects
354 ## cached objects
355 rc_cache.cache_repo_longterm.max_size = 10000
355 rc_cache.cache_repo_longterm.max_size = 10000
356
356
357
357
358 ####################################
358 ####################################
359 ### BEAKER SESSION ####
359 ### BEAKER SESSION ####
360 ####################################
360 ####################################
361
361
362 ## .session.type is type of storage options for the session, current allowed
362 ## .session.type is type of storage options for the session, current allowed
363 ## types are file, ext:memcached, ext:redis, ext:database, and memory (default).
363 ## types are file, ext:memcached, ext:redis, ext:database, and memory (default).
364 beaker.session.type = file
364 beaker.session.type = file
365 beaker.session.data_dir = %(here)s/data/sessions
365 beaker.session.data_dir = %(here)s/data/sessions
366
366
367 ## db based session, fast, and allows easy management over logged in users
367 ## db based session, fast, and allows easy management over logged in users
368 #beaker.session.type = ext:database
368 #beaker.session.type = ext:database
369 #beaker.session.table_name = db_session
369 #beaker.session.table_name = db_session
370 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
370 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
371 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
371 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
372 #beaker.session.sa.pool_recycle = 3600
372 #beaker.session.sa.pool_recycle = 3600
373 #beaker.session.sa.echo = false
373 #beaker.session.sa.echo = false
374
374
375 beaker.session.key = rhodecode
375 beaker.session.key = rhodecode
376 beaker.session.secret = develop-rc-uytcxaz
376 beaker.session.secret = develop-rc-uytcxaz
377 beaker.session.lock_dir = %(here)s/data/sessions/lock
377 beaker.session.lock_dir = %(here)s/data/sessions/lock
378
378
379 ## Secure encrypted cookie. Requires AES and AES python libraries
379 ## Secure encrypted cookie. Requires AES and AES python libraries
380 ## you must disable beaker.session.secret to use this
380 ## you must disable beaker.session.secret to use this
381 #beaker.session.encrypt_key = key_for_encryption
381 #beaker.session.encrypt_key = key_for_encryption
382 #beaker.session.validate_key = validation_key
382 #beaker.session.validate_key = validation_key
383
383
384 ## sets session as invalid(also logging out user) if it haven not been
384 ## sets session as invalid(also logging out user) if it haven not been
385 ## accessed for given amount of time in seconds
385 ## accessed for given amount of time in seconds
386 beaker.session.timeout = 2592000
386 beaker.session.timeout = 2592000
387 beaker.session.httponly = true
387 beaker.session.httponly = true
388 ## Path to use for the cookie. Set to prefix if you use prefix middleware
388 ## Path to use for the cookie. Set to prefix if you use prefix middleware
389 #beaker.session.cookie_path = /custom_prefix
389 #beaker.session.cookie_path = /custom_prefix
390
390
391 ## uncomment for https secure cookie
391 ## uncomment for https secure cookie
392 beaker.session.secure = false
392 beaker.session.secure = false
393
393
394 ## auto save the session to not to use .save()
394 ## auto save the session to not to use .save()
395 beaker.session.auto = false
395 beaker.session.auto = false
396
396
397 ## default cookie expiration time in seconds, set to `true` to set expire
397 ## default cookie expiration time in seconds, set to `true` to set expire
398 ## at browser close
398 ## at browser close
399 #beaker.session.cookie_expires = 3600
399 #beaker.session.cookie_expires = 3600
400
400
401 ###################################
401 ###################################
402 ## SEARCH INDEXING CONFIGURATION ##
402 ## SEARCH INDEXING CONFIGURATION ##
403 ###################################
403 ###################################
404 ## Full text search indexer is available in rhodecode-tools under
404 ## Full text search indexer is available in rhodecode-tools under
405 ## `rhodecode-tools index` command
405 ## `rhodecode-tools index` command
406
406
407 ## WHOOSH Backend, doesn't require additional services to run
407 ## WHOOSH Backend, doesn't require additional services to run
408 ## it works good with few dozen repos
408 ## it works good with few dozen repos
409 search.module = rhodecode.lib.index.whoosh
409 search.module = rhodecode.lib.index.whoosh
410 search.location = %(here)s/data/index
410 search.location = %(here)s/data/index
411
411
412 ########################################
412 ########################################
413 ### CHANNELSTREAM CONFIG ####
413 ### CHANNELSTREAM CONFIG ####
414 ########################################
414 ########################################
415 ## channelstream enables persistent connections and live notification
415 ## channelstream enables persistent connections and live notification
416 ## in the system. It's also used by the chat system
416 ## in the system. It's also used by the chat system
417 channelstream.enabled = false
417 channelstream.enabled = false
418
418
419 ## server address for channelstream server on the backend
419 ## server address for channelstream server on the backend
420 channelstream.server = 127.0.0.1:9800
420 channelstream.server = 127.0.0.1:9800
421
421
422 ## location of the channelstream server from outside world
422 ## location of the channelstream server from outside world
423 ## use ws:// for http or wss:// for https. This address needs to be handled
423 ## use ws:// for http or wss:// for https. This address needs to be handled
424 ## by external HTTP server such as Nginx or Apache
424 ## by external HTTP server such as Nginx or Apache
425 ## see nginx/apache configuration examples in our docs
425 ## see nginx/apache configuration examples in our docs
426 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
426 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
427 channelstream.secret = secret
427 channelstream.secret = secret
428 channelstream.history.location = %(here)s/channelstream_history
428 channelstream.history.location = %(here)s/channelstream_history
429
429
430 ## Internal application path that Javascript uses to connect into.
430 ## Internal application path that Javascript uses to connect into.
431 ## If you use proxy-prefix the prefix should be added before /_channelstream
431 ## If you use proxy-prefix the prefix should be added before /_channelstream
432 channelstream.proxy_path = /_channelstream
432 channelstream.proxy_path = /_channelstream
433
433
434
434
435 ###################################
435 ###################################
436 ## APPENLIGHT CONFIG ##
436 ## APPENLIGHT CONFIG ##
437 ###################################
437 ###################################
438
438
439 ## Appenlight is tailored to work with RhodeCode, see
439 ## Appenlight is tailored to work with RhodeCode, see
440 ## http://appenlight.com for details how to obtain an account
440 ## http://appenlight.com for details how to obtain an account
441
441
442 ## appenlight integration enabled
442 ## appenlight integration enabled
443 appenlight = false
443 appenlight = false
444
444
445 appenlight.server_url = https://api.appenlight.com
445 appenlight.server_url = https://api.appenlight.com
446 appenlight.api_key = YOUR_API_KEY
446 appenlight.api_key = YOUR_API_KEY
447 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
447 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
448
448
449 # used for JS client
449 # used for JS client
450 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
450 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
451
451
452 ## TWEAK AMOUNT OF INFO SENT HERE
452 ## TWEAK AMOUNT OF INFO SENT HERE
453
453
454 ## enables 404 error logging (default False)
454 ## enables 404 error logging (default False)
455 appenlight.report_404 = false
455 appenlight.report_404 = false
456
456
457 ## time in seconds after request is considered being slow (default 1)
457 ## time in seconds after request is considered being slow (default 1)
458 appenlight.slow_request_time = 1
458 appenlight.slow_request_time = 1
459
459
460 ## record slow requests in application
460 ## record slow requests in application
461 ## (needs to be enabled for slow datastore recording and time tracking)
461 ## (needs to be enabled for slow datastore recording and time tracking)
462 appenlight.slow_requests = true
462 appenlight.slow_requests = true
463
463
464 ## enable hooking to application loggers
464 ## enable hooking to application loggers
465 appenlight.logging = true
465 appenlight.logging = true
466
466
467 ## minimum log level for log capture
467 ## minimum log level for log capture
468 appenlight.logging.level = WARNING
468 appenlight.logging.level = WARNING
469
469
470 ## send logs only from erroneous/slow requests
470 ## send logs only from erroneous/slow requests
471 ## (saves API quota for intensive logging)
471 ## (saves API quota for intensive logging)
472 appenlight.logging_on_error = false
472 appenlight.logging_on_error = false
473
473
474 ## list of additonal keywords that should be grabbed from environ object
474 ## list of additonal keywords that should be grabbed from environ object
475 ## can be string with comma separated list of words in lowercase
475 ## can be string with comma separated list of words in lowercase
476 ## (by default client will always send following info:
476 ## (by default client will always send following info:
477 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
477 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
478 ## start with HTTP* this list be extended with additional keywords here
478 ## start with HTTP* this list be extended with additional keywords here
479 appenlight.environ_keys_whitelist =
479 appenlight.environ_keys_whitelist =
480
480
481 ## list of keywords that should be blanked from request object
481 ## list of keywords that should be blanked from request object
482 ## can be string with comma separated list of words in lowercase
482 ## can be string with comma separated list of words in lowercase
483 ## (by default client will always blank keys that contain following words
483 ## (by default client will always blank keys that contain following words
484 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
484 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
485 ## this list be extended with additional keywords set here
485 ## this list be extended with additional keywords set here
486 appenlight.request_keys_blacklist =
486 appenlight.request_keys_blacklist =
487
487
488 ## list of namespaces that should be ignores when gathering log entries
488 ## list of namespaces that should be ignores when gathering log entries
489 ## can be string with comma separated list of namespaces
489 ## can be string with comma separated list of namespaces
490 ## (by default the client ignores own entries: appenlight_client.client)
490 ## (by default the client ignores own entries: appenlight_client.client)
491 appenlight.log_namespace_blacklist =
491 appenlight.log_namespace_blacklist =
492
492
493
493
494 ################################################################################
494 ################################################################################
495 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
495 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
496 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
496 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
497 ## execute malicious code after an exception is raised. ##
497 ## execute malicious code after an exception is raised. ##
498 ################################################################################
498 ################################################################################
499 #set debug = false
499 #set debug = false
500
500
501 # enable debug style page
501 # enable debug style page
502 debug_style = true
502 debug_style = true
503
503
504 ###########################################
504 ###########################################
505 ### MAIN RHODECODE DATABASE CONFIG ###
505 ### MAIN RHODECODE DATABASE CONFIG ###
506 ###########################################
506 ###########################################
507 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
507 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
508 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
508 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
509 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode
509 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode?charset=utf8
510 # pymysql is an alternative driver for MySQL, use in case of problems with default one
510 # pymysql is an alternative driver for MySQL, use in case of problems with default one
511 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
511 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
512
512
513 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
513 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
514
514
515 # see sqlalchemy docs for other advanced settings
515 # see sqlalchemy docs for other advanced settings
516
516
517 ## print the sql statements to output
517 ## print the sql statements to output
518 sqlalchemy.db1.echo = false
518 sqlalchemy.db1.echo = false
519 ## recycle the connections after this amount of seconds
519 ## recycle the connections after this amount of seconds
520 sqlalchemy.db1.pool_recycle = 3600
520 sqlalchemy.db1.pool_recycle = 3600
521 sqlalchemy.db1.convert_unicode = true
521 sqlalchemy.db1.convert_unicode = true
522
522
523 ## the number of connections to keep open inside the connection pool.
523 ## the number of connections to keep open inside the connection pool.
524 ## 0 indicates no limit
524 ## 0 indicates no limit
525 #sqlalchemy.db1.pool_size = 5
525 #sqlalchemy.db1.pool_size = 5
526
526
527 ## the number of connections to allow in connection pool "overflow", that is
527 ## the number of connections to allow in connection pool "overflow", that is
528 ## connections that can be opened above and beyond the pool_size setting,
528 ## connections that can be opened above and beyond the pool_size setting,
529 ## which defaults to five.
529 ## which defaults to five.
530 #sqlalchemy.db1.max_overflow = 10
530 #sqlalchemy.db1.max_overflow = 10
531
531
532 ## Connection check ping, used to detect broken database connections
532 ## Connection check ping, used to detect broken database connections
533 ## could be enabled to better handle cases if MySQL has gone away errors
533 ## could be enabled to better handle cases if MySQL has gone away errors
534 #sqlalchemy.db1.ping_connection = true
534 #sqlalchemy.db1.ping_connection = true
535
535
536 ##################
536 ##################
537 ### VCS CONFIG ###
537 ### VCS CONFIG ###
538 ##################
538 ##################
539 vcs.server.enable = true
539 vcs.server.enable = true
540 vcs.server = localhost:9900
540 vcs.server = localhost:9900
541
541
542 ## Web server connectivity protocol, responsible for web based VCS operatations
542 ## Web server connectivity protocol, responsible for web based VCS operatations
543 ## Available protocols are:
543 ## Available protocols are:
544 ## `http` - use http-rpc backend (default)
544 ## `http` - use http-rpc backend (default)
545 vcs.server.protocol = http
545 vcs.server.protocol = http
546
546
547 ## Push/Pull operations protocol, available options are:
547 ## Push/Pull operations protocol, available options are:
548 ## `http` - use http-rpc backend (default)
548 ## `http` - use http-rpc backend (default)
549 vcs.scm_app_implementation = http
549 vcs.scm_app_implementation = http
550
550
551 ## Push/Pull operations hooks protocol, available options are:
551 ## Push/Pull operations hooks protocol, available options are:
552 ## `http` - use http-rpc backend (default)
552 ## `http` - use http-rpc backend (default)
553 vcs.hooks.protocol = http
553 vcs.hooks.protocol = http
554
554
555 ## Host on which this instance is listening for hooks. If vcsserver is in other location
555 ## Host on which this instance is listening for hooks. If vcsserver is in other location
556 ## this should be adjusted.
556 ## this should be adjusted.
557 vcs.hooks.host = 127.0.0.1
557 vcs.hooks.host = 127.0.0.1
558
558
559 vcs.server.log_level = debug
559 vcs.server.log_level = debug
560 ## Start VCSServer with this instance as a subprocess, useful for development
560 ## Start VCSServer with this instance as a subprocess, useful for development
561 vcs.start_server = false
561 vcs.start_server = false
562
562
563 ## List of enabled VCS backends, available options are:
563 ## List of enabled VCS backends, available options are:
564 ## `hg` - mercurial
564 ## `hg` - mercurial
565 ## `git` - git
565 ## `git` - git
566 ## `svn` - subversion
566 ## `svn` - subversion
567 vcs.backends = hg, git, svn
567 vcs.backends = hg, git, svn
568
568
569 vcs.connection_timeout = 3600
569 vcs.connection_timeout = 3600
570 ## Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
570 ## Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
571 ## Available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
571 ## Available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
572 #vcs.svn.compatible_version = pre-1.8-compatible
572 #vcs.svn.compatible_version = pre-1.8-compatible
573
573
574
574
575 ############################################################
575 ############################################################
576 ### Subversion proxy support (mod_dav_svn) ###
576 ### Subversion proxy support (mod_dav_svn) ###
577 ### Maps RhodeCode repo groups into SVN paths for Apache ###
577 ### Maps RhodeCode repo groups into SVN paths for Apache ###
578 ############################################################
578 ############################################################
579 ## Enable or disable the config file generation.
579 ## Enable or disable the config file generation.
580 svn.proxy.generate_config = false
580 svn.proxy.generate_config = false
581 ## Generate config file with `SVNListParentPath` set to `On`.
581 ## Generate config file with `SVNListParentPath` set to `On`.
582 svn.proxy.list_parent_path = true
582 svn.proxy.list_parent_path = true
583 ## Set location and file name of generated config file.
583 ## Set location and file name of generated config file.
584 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
584 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
585 ## alternative mod_dav config template. This needs to be a mako template
585 ## alternative mod_dav config template. This needs to be a mako template
586 #svn.proxy.config_template = ~/.rccontrol/enterprise-1/custom_svn_conf.mako
586 #svn.proxy.config_template = ~/.rccontrol/enterprise-1/custom_svn_conf.mako
587 ## Used as a prefix to the `Location` block in the generated config file.
587 ## Used as a prefix to the `Location` block in the generated config file.
588 ## In most cases it should be set to `/`.
588 ## In most cases it should be set to `/`.
589 svn.proxy.location_root = /
589 svn.proxy.location_root = /
590 ## Command to reload the mod dav svn configuration on change.
590 ## Command to reload the mod dav svn configuration on change.
591 ## Example: `/etc/init.d/apache2 reload`
591 ## Example: `/etc/init.d/apache2 reload`
592 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
592 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
593 ## If the timeout expires before the reload command finishes, the command will
593 ## If the timeout expires before the reload command finishes, the command will
594 ## be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
594 ## be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
595 #svn.proxy.reload_timeout = 10
595 #svn.proxy.reload_timeout = 10
596
596
597 ############################################################
597 ############################################################
598 ### SSH Support Settings ###
598 ### SSH Support Settings ###
599 ############################################################
599 ############################################################
600
600
601 ## Defines if a custom authorized_keys file should be created and written on
601 ## Defines if a custom authorized_keys file should be created and written on
602 ## any change user ssh keys. Setting this to false also disables posibility
602 ## any change user ssh keys. Setting this to false also disables posibility
603 ## of adding SSH keys by users from web interface. Super admins can still
603 ## of adding SSH keys by users from web interface. Super admins can still
604 ## manage SSH Keys.
604 ## manage SSH Keys.
605 ssh.generate_authorized_keyfile = false
605 ssh.generate_authorized_keyfile = false
606
606
607 ## Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
607 ## Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
608 # ssh.authorized_keys_ssh_opts =
608 # ssh.authorized_keys_ssh_opts =
609
609
610 ## Path to the authrozied_keys file where the generate entries are placed.
610 ## Path to the authrozied_keys file where the generate entries are placed.
611 ## It is possible to have multiple key files specified in `sshd_config` e.g.
611 ## It is possible to have multiple key files specified in `sshd_config` e.g.
612 ## AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
612 ## AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
613 ssh.authorized_keys_file_path = ~/.ssh/authorized_keys_rhodecode
613 ssh.authorized_keys_file_path = ~/.ssh/authorized_keys_rhodecode
614
614
615 ## Command to execute the SSH wrapper. The binary is available in the
615 ## Command to execute the SSH wrapper. The binary is available in the
616 ## rhodecode installation directory.
616 ## rhodecode installation directory.
617 ## e.g ~/.rccontrol/community-1/profile/bin/rc-ssh-wrapper
617 ## e.g ~/.rccontrol/community-1/profile/bin/rc-ssh-wrapper
618 ssh.wrapper_cmd = ~/.rccontrol/community-1/rc-ssh-wrapper
618 ssh.wrapper_cmd = ~/.rccontrol/community-1/rc-ssh-wrapper
619
619
620 ## Allow shell when executing the ssh-wrapper command
620 ## Allow shell when executing the ssh-wrapper command
621 ssh.wrapper_cmd_allow_shell = false
621 ssh.wrapper_cmd_allow_shell = false
622
622
623 ## Enables logging, and detailed output send back to the client during SSH
623 ## Enables logging, and detailed output send back to the client during SSH
624 ## operations. Usefull for debugging, shouldn't be used in production.
624 ## operations. Usefull for debugging, shouldn't be used in production.
625 ssh.enable_debug_logging = true
625 ssh.enable_debug_logging = true
626
626
627 ## Paths to binary executable, by default they are the names, but we can
627 ## Paths to binary executable, by default they are the names, but we can
628 ## override them if we want to use a custom one
628 ## override them if we want to use a custom one
629 ssh.executable.hg = ~/.rccontrol/vcsserver-1/profile/bin/hg
629 ssh.executable.hg = ~/.rccontrol/vcsserver-1/profile/bin/hg
630 ssh.executable.git = ~/.rccontrol/vcsserver-1/profile/bin/git
630 ssh.executable.git = ~/.rccontrol/vcsserver-1/profile/bin/git
631 ssh.executable.svn = ~/.rccontrol/vcsserver-1/profile/bin/svnserve
631 ssh.executable.svn = ~/.rccontrol/vcsserver-1/profile/bin/svnserve
632
632
633
633
634 ## Dummy marker to add new entries after.
634 ## Dummy marker to add new entries after.
635 ## Add any custom entries below. Please don't remove.
635 ## Add any custom entries below. Please don't remove.
636 custom.conf = 1
636 custom.conf = 1
637
637
638
638
639 ################################
639 ################################
640 ### LOGGING CONFIGURATION ####
640 ### LOGGING CONFIGURATION ####
641 ################################
641 ################################
642 [loggers]
642 [loggers]
643 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
643 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
644
644
645 [handlers]
645 [handlers]
646 keys = console, console_sql
646 keys = console, console_sql
647
647
648 [formatters]
648 [formatters]
649 keys = generic, color_formatter, color_formatter_sql
649 keys = generic, color_formatter, color_formatter_sql
650
650
651 #############
651 #############
652 ## LOGGERS ##
652 ## LOGGERS ##
653 #############
653 #############
654 [logger_root]
654 [logger_root]
655 level = NOTSET
655 level = NOTSET
656 handlers = console
656 handlers = console
657
657
658 [logger_sqlalchemy]
658 [logger_sqlalchemy]
659 level = INFO
659 level = INFO
660 handlers = console_sql
660 handlers = console_sql
661 qualname = sqlalchemy.engine
661 qualname = sqlalchemy.engine
662 propagate = 0
662 propagate = 0
663
663
664 [logger_beaker]
664 [logger_beaker]
665 level = DEBUG
665 level = DEBUG
666 handlers =
666 handlers =
667 qualname = beaker.container
667 qualname = beaker.container
668 propagate = 1
668 propagate = 1
669
669
670 [logger_rhodecode]
670 [logger_rhodecode]
671 level = DEBUG
671 level = DEBUG
672 handlers =
672 handlers =
673 qualname = rhodecode
673 qualname = rhodecode
674 propagate = 1
674 propagate = 1
675
675
676 [logger_ssh_wrapper]
676 [logger_ssh_wrapper]
677 level = DEBUG
677 level = DEBUG
678 handlers =
678 handlers =
679 qualname = ssh_wrapper
679 qualname = ssh_wrapper
680 propagate = 1
680 propagate = 1
681
681
682 [logger_celery]
682 [logger_celery]
683 level = DEBUG
683 level = DEBUG
684 handlers =
684 handlers =
685 qualname = celery
685 qualname = celery
686
686
687
687
688 ##############
688 ##############
689 ## HANDLERS ##
689 ## HANDLERS ##
690 ##############
690 ##############
691
691
692 [handler_console]
692 [handler_console]
693 class = StreamHandler
693 class = StreamHandler
694 args = (sys.stderr, )
694 args = (sys.stderr, )
695 level = DEBUG
695 level = DEBUG
696 formatter = color_formatter
696 formatter = color_formatter
697
697
698 [handler_console_sql]
698 [handler_console_sql]
699 # "level = DEBUG" logs SQL queries and results.
699 # "level = DEBUG" logs SQL queries and results.
700 # "level = INFO" logs SQL queries.
700 # "level = INFO" logs SQL queries.
701 # "level = WARN" logs neither. (Recommended for production systems.)
701 # "level = WARN" logs neither. (Recommended for production systems.)
702 class = StreamHandler
702 class = StreamHandler
703 args = (sys.stderr, )
703 args = (sys.stderr, )
704 level = WARN
704 level = WARN
705 formatter = color_formatter_sql
705 formatter = color_formatter_sql
706
706
707 ################
707 ################
708 ## FORMATTERS ##
708 ## FORMATTERS ##
709 ################
709 ################
710
710
711 [formatter_generic]
711 [formatter_generic]
712 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
712 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
713 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
713 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
714 datefmt = %Y-%m-%d %H:%M:%S
714 datefmt = %Y-%m-%d %H:%M:%S
715
715
716 [formatter_color_formatter]
716 [formatter_color_formatter]
717 class = rhodecode.lib.logging_formatter.ColorFormatter
717 class = rhodecode.lib.logging_formatter.ColorFormatter
718 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
718 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
719 datefmt = %Y-%m-%d %H:%M:%S
719 datefmt = %Y-%m-%d %H:%M:%S
720
720
721 [formatter_color_formatter_sql]
721 [formatter_color_formatter_sql]
722 class = rhodecode.lib.logging_formatter.ColorFormatterSql
722 class = rhodecode.lib.logging_formatter.ColorFormatterSql
723 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
723 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
724 datefmt = %Y-%m-%d %H:%M:%S
724 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,697 +1,696 b''
1
1
2
2
3 ################################################################################
3 ################################################################################
4 ## RHODECODE COMMUNITY EDITION CONFIGURATION ##
4 ## RHODECODE COMMUNITY EDITION CONFIGURATION ##
5 ################################################################################
5 ################################################################################
6
6
7 [DEFAULT]
7 [DEFAULT]
8 debug = true
8 debug = true
9
9
10 ################################################################################
10 ################################################################################
11 ## EMAIL CONFIGURATION ##
11 ## EMAIL CONFIGURATION ##
12 ## Uncomment and replace with the email address which should receive ##
12 ## Uncomment and replace with the email address which should receive ##
13 ## any error reports after an application crash ##
13 ## any error reports after an application crash ##
14 ## Additionally these settings will be used by the RhodeCode mailing system ##
14 ## Additionally these settings will be used by the RhodeCode mailing system ##
15 ################################################################################
15 ################################################################################
16
16
17 ## prefix all emails subjects with given prefix, helps filtering out emails
17 ## prefix all emails subjects with given prefix, helps filtering out emails
18 #email_prefix = [RhodeCode]
18 #email_prefix = [RhodeCode]
19
19
20 ## email FROM address all mails will be sent
20 ## email FROM address all mails will be sent
21 #app_email_from = rhodecode-noreply@localhost
21 #app_email_from = rhodecode-noreply@localhost
22
22
23 #smtp_server = mail.server.com
23 #smtp_server = mail.server.com
24 #smtp_username =
24 #smtp_username =
25 #smtp_password =
25 #smtp_password =
26 #smtp_port =
26 #smtp_port =
27 #smtp_use_tls = false
27 #smtp_use_tls = false
28 #smtp_use_ssl = true
28 #smtp_use_ssl = true
29 ## Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
30 #smtp_auth =
31
29
32 [server:main]
30 [server:main]
33 ## COMMON ##
31 ## COMMON ##
34 host = 127.0.0.1
32 host = 127.0.0.1
35 port = 5000
33 port = 5000
36
34
37 ###########################################################
35 ###########################################################
38 ## WAITRESS WSGI SERVER - Recommended for Development ####
36 ## WAITRESS WSGI SERVER - Recommended for Development ####
39 ###########################################################
37 ###########################################################
40
38
41 #use = egg:waitress#main
39 #use = egg:waitress#main
42 ## number of worker threads
40 ## number of worker threads
43 #threads = 5
41 #threads = 5
44 ## MAX BODY SIZE 100GB
42 ## MAX BODY SIZE 100GB
45 #max_request_body_size = 107374182400
43 #max_request_body_size = 107374182400
46 ## Use poll instead of select, fixes file descriptors limits problems.
44 ## Use poll instead of select, fixes file descriptors limits problems.
47 ## May not work on old windows systems.
45 ## May not work on old windows systems.
48 #asyncore_use_poll = true
46 #asyncore_use_poll = true
49
47
50
48
51 ##########################
49 ##########################
52 ## GUNICORN WSGI SERVER ##
50 ## GUNICORN WSGI SERVER ##
53 ##########################
51 ##########################
54 ## run with gunicorn --log-config rhodecode.ini --paste rhodecode.ini
52 ## run with gunicorn --log-config rhodecode.ini --paste rhodecode.ini
55
53
56 use = egg:gunicorn#main
54 use = egg:gunicorn#main
57 ## Sets the number of process workers. More workers means more concurent connections
55 ## Sets the number of process workers. More workers means more concurent connections
58 ## RhodeCode can handle at the same time. Each additional worker also it increases
56 ## RhodeCode can handle at the same time. Each additional worker also it increases
59 ## memory usage as each has it's own set of caches.
57 ## memory usage as each has it's own set of caches.
60 ## Recommended value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers, but no more
58 ## Recommended value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers, but no more
61 ## than 8-10 unless for really big deployments .e.g 700-1000 users.
59 ## than 8-10 unless for really big deployments .e.g 700-1000 users.
62 ## `instance_id = *` must be set in the [app:main] section below (which is the default)
60 ## `instance_id = *` must be set in the [app:main] section below (which is the default)
63 ## when using more than 1 worker.
61 ## when using more than 1 worker.
64 workers = 2
62 workers = 2
65 ## process name visible in process list
63 ## process name visible in process list
66 proc_name = rhodecode
64 proc_name = rhodecode
67 ## type of worker class, one of sync, gevent
65 ## type of worker class, one of sync, gevent
68 ## recommended for bigger setup is using of of other than sync one
66 ## recommended for bigger setup is using of of other than sync one
69 worker_class = gevent
67 worker_class = gevent
70 ## The maximum number of simultaneous clients. Valid only for Gevent
68 ## The maximum number of simultaneous clients. Valid only for Gevent
71 worker_connections = 10
69 worker_connections = 10
72 ## max number of requests that worker will handle before being gracefully
70 ## max number of requests that worker will handle before being gracefully
73 ## restarted, could prevent memory leaks
71 ## restarted, could prevent memory leaks
74 max_requests = 1000
72 max_requests = 1000
75 max_requests_jitter = 30
73 max_requests_jitter = 30
76 ## amount of time a worker can spend with handling a request before it
74 ## amount of time a worker can spend with handling a request before it
77 ## gets killed and restarted. Set to 6hrs
75 ## gets killed and restarted. Set to 6hrs
78 timeout = 21600
76 timeout = 21600
79
77
80
78
81 ## prefix middleware for RhodeCode.
79 ## prefix middleware for RhodeCode.
82 ## recommended when using proxy setup.
80 ## recommended when using proxy setup.
83 ## allows to set RhodeCode under a prefix in server.
81 ## allows to set RhodeCode under a prefix in server.
84 ## eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
82 ## eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
85 ## And set your prefix like: `prefix = /custom_prefix`
83 ## And set your prefix like: `prefix = /custom_prefix`
86 ## be sure to also set beaker.session.cookie_path = /custom_prefix if you need
84 ## be sure to also set beaker.session.cookie_path = /custom_prefix if you need
87 ## to make your cookies only work on prefix url
85 ## to make your cookies only work on prefix url
88 [filter:proxy-prefix]
86 [filter:proxy-prefix]
89 use = egg:PasteDeploy#prefix
87 use = egg:PasteDeploy#prefix
90 prefix = /
88 prefix = /
91
89
92 [app:main]
90 [app:main]
93 ## The %(here)s variable will be replaced with the absolute path of parent directory
91 ## The %(here)s variable will be replaced with the absolute path of parent directory
94 ## of this file
92 ## of this file
95 ## In addition ENVIRONMENT variables usage is possible, e.g
93 ## In addition ENVIRONMENT variables usage is possible, e.g
96 ## sqlalchemy.db1.url = {ENV_RC_DB_URL}
94 ## sqlalchemy.db1.url = {ENV_RC_DB_URL}
97
95
98 use = egg:rhodecode-enterprise-ce
96 use = egg:rhodecode-enterprise-ce
99
97
100 ## enable proxy prefix middleware, defined above
98 ## enable proxy prefix middleware, defined above
101 #filter-with = proxy-prefix
99 #filter-with = proxy-prefix
102
100
103 ## encryption key used to encrypt social plugin tokens,
101 ## encryption key used to encrypt social plugin tokens,
104 ## remote_urls with credentials etc, if not set it defaults to
102 ## remote_urls with credentials etc, if not set it defaults to
105 ## `beaker.session.secret`
103 ## `beaker.session.secret`
106 #rhodecode.encrypted_values.secret =
104 #rhodecode.encrypted_values.secret =
107
105
108 ## decryption strict mode (enabled by default). It controls if decryption raises
106 ## decryption strict mode (enabled by default). It controls if decryption raises
109 ## `SignatureVerificationError` in case of wrong key, or damaged encryption data.
107 ## `SignatureVerificationError` in case of wrong key, or damaged encryption data.
110 #rhodecode.encrypted_values.strict = false
108 #rhodecode.encrypted_values.strict = false
111
109
112 ## return gzipped responses from Rhodecode (static files/application)
110 ## return gzipped responses from Rhodecode (static files/application)
113 gzip_responses = false
111 gzip_responses = false
114
112
115 ## autogenerate javascript routes file on startup
113 ## autogenerate javascript routes file on startup
116 generate_js_files = false
114 generate_js_files = false
117
115
118 ## System global default language.
116 ## System global default language.
119 ## All available languages: en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
117 ## All available languages: en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
120 lang = en
118 lang = en
121
119
122 ## Perform a full repository scan and import on each server start.
120 ## Perform a full repository scan and import on each server start.
123 ## Settings this to true could lead to very long startup time.
121 ## Settings this to true could lead to very long startup time.
124 startup.import_repos = false
122 startup.import_repos = false
125
123
126 ## Uncomment and set this path to use archive download cache.
124 ## Uncomment and set this path to use archive download cache.
127 ## Once enabled, generated archives will be cached at this location
125 ## Once enabled, generated archives will be cached at this location
128 ## and served from the cache during subsequent requests for the same archive of
126 ## and served from the cache during subsequent requests for the same archive of
129 ## the repository.
127 ## the repository.
130 #archive_cache_dir = /tmp/tarballcache
128 #archive_cache_dir = /tmp/tarballcache
131
129
132 ## URL at which the application is running. This is used for bootstraping
130 ## URL at which the application is running. This is used for bootstraping
133 ## requests in context when no web request is available. Used in ishell, or
131 ## requests in context when no web request is available. Used in ishell, or
134 ## SSH calls. Set this for events to receive proper url for SSH calls.
132 ## SSH calls. Set this for events to receive proper url for SSH calls.
135 app.base_url = http://rhodecode.local
133 app.base_url = http://rhodecode.local
136
134
137 ## Unique application ID. Should be a random unique string for security.
135 ## Unique application ID. Should be a random unique string for security.
138 app_instance_uuid = rc-production
136 app_instance_uuid = rc-production
139
137
140 ## Cut off limit for large diffs (size in bytes). If overall diff size on
138 ## Cut off limit for large diffs (size in bytes). If overall diff size on
141 ## commit, or pull request exceeds this limit this diff will be displayed
139 ## commit, or pull request exceeds this limit this diff will be displayed
142 ## partially. E.g 512000 == 512Kb
140 ## partially. E.g 512000 == 512Kb
143 cut_off_limit_diff = 512000
141 cut_off_limit_diff = 512000
144
142
145 ## Cut off limit for large files inside diffs (size in bytes). Each individual
143 ## Cut off limit for large files inside diffs (size in bytes). Each individual
146 ## file inside diff which exceeds this limit will be displayed partially.
144 ## file inside diff which exceeds this limit will be displayed partially.
147 ## E.g 128000 == 128Kb
145 ## E.g 128000 == 128Kb
148 cut_off_limit_file = 128000
146 cut_off_limit_file = 128000
149
147
150 ## use cached version of vcs repositories everywhere. Recommended to be `true`
148 ## use cached version of vcs repositories everywhere. Recommended to be `true`
151 vcs_full_cache = true
149 vcs_full_cache = true
152
150
153 ## Force https in RhodeCode, fixes https redirects, assumes it's always https.
151 ## Force https in RhodeCode, fixes https redirects, assumes it's always https.
154 ## Normally this is controlled by proper http flags sent from http server
152 ## Normally this is controlled by proper http flags sent from http server
155 force_https = false
153 force_https = false
156
154
157 ## use Strict-Transport-Security headers
155 ## use Strict-Transport-Security headers
158 use_htsts = false
156 use_htsts = false
159
157
160 ## git rev filter option, --all is the default filter, if you need to
158 ## git rev filter option, --all is the default filter, if you need to
161 ## hide all refs in changelog switch this to --branches --tags
159 ## hide all refs in changelog switch this to --branches --tags
162 git_rev_filter = --branches --tags
160 git_rev_filter = --branches --tags
163
161
164 # Set to true if your repos are exposed using the dumb protocol
162 # Set to true if your repos are exposed using the dumb protocol
165 git_update_server_info = false
163 git_update_server_info = false
166
164
167 ## RSS/ATOM feed options
165 ## RSS/ATOM feed options
168 rss_cut_off_limit = 256000
166 rss_cut_off_limit = 256000
169 rss_items_per_page = 10
167 rss_items_per_page = 10
170 rss_include_diff = false
168 rss_include_diff = false
171
169
172 ## gist URL alias, used to create nicer urls for gist. This should be an
170 ## gist URL alias, used to create nicer urls for gist. This should be an
173 ## url that does rewrites to _admin/gists/{gistid}.
171 ## url that does rewrites to _admin/gists/{gistid}.
174 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
172 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
175 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
173 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
176 gist_alias_url =
174 gist_alias_url =
177
175
178 ## List of views (using glob pattern syntax) that AUTH TOKENS could be
176 ## List of views (using glob pattern syntax) that AUTH TOKENS could be
179 ## used for access.
177 ## used for access.
180 ## Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
178 ## Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
181 ## came from the the logged in user who own this authentication token.
179 ## came from the the logged in user who own this authentication token.
182 ## Additionally @TOKEN syntaxt can be used to bound the view to specific
180 ## Additionally @TOKEN syntaxt can be used to bound the view to specific
183 ## authentication token. Such view would be only accessible when used together
181 ## authentication token. Such view would be only accessible when used together
184 ## with this authentication token
182 ## with this authentication token
185 ##
183 ##
186 ## list of all views can be found under `/_admin/permissions/auth_token_access`
184 ## list of all views can be found under `/_admin/permissions/auth_token_access`
187 ## The list should be "," separated and on a single line.
185 ## The list should be "," separated and on a single line.
188 ##
186 ##
189 ## Most common views to enable:
187 ## Most common views to enable:
190 # RepoCommitsView:repo_commit_download
188 # RepoCommitsView:repo_commit_download
191 # RepoCommitsView:repo_commit_patch
189 # RepoCommitsView:repo_commit_patch
192 # RepoCommitsView:repo_commit_raw
190 # RepoCommitsView:repo_commit_raw
193 # RepoCommitsView:repo_commit_raw@TOKEN
191 # RepoCommitsView:repo_commit_raw@TOKEN
194 # RepoFilesView:repo_files_diff
192 # RepoFilesView:repo_files_diff
195 # RepoFilesView:repo_archivefile
193 # RepoFilesView:repo_archivefile
196 # RepoFilesView:repo_file_raw
194 # RepoFilesView:repo_file_raw
197 # GistView:*
195 # GistView:*
198 api_access_controllers_whitelist =
196 api_access_controllers_whitelist =
199
197
200 ## Default encoding used to convert from and to unicode
198 ## Default encoding used to convert from and to unicode
201 ## can be also a comma separated list of encoding in case of mixed encodings
199 ## can be also a comma separated list of encoding in case of mixed encodings
202 default_encoding = UTF-8
200 default_encoding = UTF-8
203
201
204 ## instance-id prefix
202 ## instance-id prefix
205 ## a prefix key for this instance used for cache invalidation when running
203 ## a prefix key for this instance used for cache invalidation when running
206 ## multiple instances of rhodecode, make sure it's globally unique for
204 ## multiple instances of rhodecode, make sure it's globally unique for
207 ## all running rhodecode instances. Leave empty if you don't use it
205 ## all running rhodecode instances. Leave empty if you don't use it
208 instance_id =
206 instance_id =
209
207
210 ## Fallback authentication plugin. Set this to a plugin ID to force the usage
208 ## Fallback authentication plugin. Set this to a plugin ID to force the usage
211 ## of an authentication plugin also if it is disabled by it's settings.
209 ## of an authentication plugin also if it is disabled by it's settings.
212 ## This could be useful if you are unable to log in to the system due to broken
210 ## This could be useful if you are unable to log in to the system due to broken
213 ## authentication settings. Then you can enable e.g. the internal rhodecode auth
211 ## authentication settings. Then you can enable e.g. the internal rhodecode auth
214 ## module to log in again and fix the settings.
212 ## module to log in again and fix the settings.
215 ##
213 ##
216 ## Available builtin plugin IDs (hash is part of the ID):
214 ## Available builtin plugin IDs (hash is part of the ID):
217 ## egg:rhodecode-enterprise-ce#rhodecode
215 ## egg:rhodecode-enterprise-ce#rhodecode
218 ## egg:rhodecode-enterprise-ce#pam
216 ## egg:rhodecode-enterprise-ce#pam
219 ## egg:rhodecode-enterprise-ce#ldap
217 ## egg:rhodecode-enterprise-ce#ldap
220 ## egg:rhodecode-enterprise-ce#jasig_cas
218 ## egg:rhodecode-enterprise-ce#jasig_cas
221 ## egg:rhodecode-enterprise-ce#headers
219 ## egg:rhodecode-enterprise-ce#headers
222 ## egg:rhodecode-enterprise-ce#crowd
220 ## egg:rhodecode-enterprise-ce#crowd
223 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
221 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
224
222
225 ## alternative return HTTP header for failed authentication. Default HTTP
223 ## alternative return HTTP header for failed authentication. Default HTTP
226 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
224 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
227 ## handling that causing a series of failed authentication calls.
225 ## handling that causing a series of failed authentication calls.
228 ## Set this variable to 403 to return HTTPForbidden, or any other HTTP code
226 ## Set this variable to 403 to return HTTPForbidden, or any other HTTP code
229 ## This will be served instead of default 401 on bad authnetication
227 ## This will be served instead of default 401 on bad authnetication
230 auth_ret_code =
228 auth_ret_code =
231
229
232 ## use special detection method when serving auth_ret_code, instead of serving
230 ## use special detection method when serving auth_ret_code, instead of serving
233 ## ret_code directly, use 401 initially (Which triggers credentials prompt)
231 ## ret_code directly, use 401 initially (Which triggers credentials prompt)
234 ## and then serve auth_ret_code to clients
232 ## and then serve auth_ret_code to clients
235 auth_ret_code_detection = false
233 auth_ret_code_detection = false
236
234
237 ## locking return code. When repository is locked return this HTTP code. 2XX
235 ## locking return code. When repository is locked return this HTTP code. 2XX
238 ## codes don't break the transactions while 4XX codes do
236 ## codes don't break the transactions while 4XX codes do
239 lock_ret_code = 423
237 lock_ret_code = 423
240
238
241 ## allows to change the repository location in settings page
239 ## allows to change the repository location in settings page
242 allow_repo_location_change = true
240 allow_repo_location_change = true
243
241
244 ## allows to setup custom hooks in settings page
242 ## allows to setup custom hooks in settings page
245 allow_custom_hooks_settings = true
243 allow_custom_hooks_settings = true
246
244
247 ## Generated license token required for EE edition license.
245 ## Generated license token required for EE edition license.
248 ## New generated token value can be found in Admin > settings > license page.
246 ## New generated token value can be found in Admin > settings > license page.
249 license_token =
247 license_token =
250
248
251 ## supervisor connection uri, for managing supervisor and logs.
249 ## supervisor connection uri, for managing supervisor and logs.
252 supervisor.uri =
250 supervisor.uri =
253 ## supervisord group name/id we only want this RC instance to handle
251 ## supervisord group name/id we only want this RC instance to handle
254 supervisor.group_id = prod
252 supervisor.group_id = prod
255
253
256 ## Display extended labs settings
254 ## Display extended labs settings
257 labs_settings_active = true
255 labs_settings_active = true
258
256
259 ## custom exception store path, defaults to TMPDIR
257 ## Custom exception store path, defaults to TMPDIR
260 exception_tracker.store_path =
258 ## This is used to store exception from RhodeCode in shared directory
259 #exception_tracker.store_path =
261
260
262
261
263 ####################################
262 ####################################
264 ### CELERY CONFIG ####
263 ### CELERY CONFIG ####
265 ####################################
264 ####################################
266 ## run: /path/to/celery worker \
265 ## run: /path/to/celery worker \
267 ## -E --beat --app rhodecode.lib.celerylib.loader \
266 ## -E --beat --app rhodecode.lib.celerylib.loader \
268 ## --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler \
267 ## --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler \
269 ## --loglevel DEBUG --ini /path/to/rhodecode.ini
268 ## --loglevel DEBUG --ini /path/to/rhodecode.ini
270
269
271 use_celery = false
270 use_celery = false
272
271
273 ## connection url to the message broker (default rabbitmq)
272 ## connection url to the message broker (default rabbitmq)
274 celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
273 celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
275
274
276 ## maximum tasks to execute before worker restart
275 ## maximum tasks to execute before worker restart
277 celery.max_tasks_per_child = 100
276 celery.max_tasks_per_child = 100
278
277
279 ## tasks will never be sent to the queue, but executed locally instead.
278 ## tasks will never be sent to the queue, but executed locally instead.
280 celery.task_always_eager = false
279 celery.task_always_eager = false
281
280
282 #####################################
281 #####################################
283 ### DOGPILE CACHE ####
282 ### DOGPILE CACHE ####
284 #####################################
283 #####################################
285 ## Default cache dir for caches. Putting this into a ramdisk
284 ## Default cache dir for caches. Putting this into a ramdisk
286 ## can boost performance, eg. /tmpfs/data_ramdisk, however this directory might require
285 ## can boost performance, eg. /tmpfs/data_ramdisk, however this directory might require
287 ## large amount of space
286 ## large amount of space
288 cache_dir = %(here)s/data
287 cache_dir = %(here)s/data
289
288
290 ## `cache_perms` cache settings for permission tree, auth TTL.
289 ## `cache_perms` cache settings for permission tree, auth TTL.
291 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
290 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
292 rc_cache.cache_perms.expiration_time = 300
291 rc_cache.cache_perms.expiration_time = 300
293
292
294 ## alternative `cache_perms` redis backend with distributed lock
293 ## alternative `cache_perms` redis backend with distributed lock
295 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
294 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
296 #rc_cache.cache_perms.expiration_time = 300
295 #rc_cache.cache_perms.expiration_time = 300
297 ## redis_expiration_time needs to be greater then expiration_time
296 ## redis_expiration_time needs to be greater then expiration_time
298 #rc_cache.cache_perms.arguments.redis_expiration_time = 7200
297 #rc_cache.cache_perms.arguments.redis_expiration_time = 7200
299 #rc_cache.cache_perms.arguments.socket_timeout = 30
298 #rc_cache.cache_perms.arguments.socket_timeout = 30
300 #rc_cache.cache_perms.arguments.host = localhost
299 #rc_cache.cache_perms.arguments.host = localhost
301 #rc_cache.cache_perms.arguments.port = 6379
300 #rc_cache.cache_perms.arguments.port = 6379
302 #rc_cache.cache_perms.arguments.db = 0
301 #rc_cache.cache_perms.arguments.db = 0
303 #rc_cache.cache_perms.arguments.distributed_lock = true
302 #rc_cache.cache_perms.arguments.distributed_lock = true
304
303
305 ## `cache_repo` cache settings for FileTree, Readme, RSS FEEDS
304 ## `cache_repo` cache settings for FileTree, Readme, RSS FEEDS
306 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
305 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
307 rc_cache.cache_repo.expiration_time = 2592000
306 rc_cache.cache_repo.expiration_time = 2592000
308
307
309 ## alternative `cache_repo` redis backend with distributed lock
308 ## alternative `cache_repo` redis backend with distributed lock
310 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
309 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
311 #rc_cache.cache_repo.expiration_time = 2592000
310 #rc_cache.cache_repo.expiration_time = 2592000
312 ## redis_expiration_time needs to be greater then expiration_time
311 ## redis_expiration_time needs to be greater then expiration_time
313 #rc_cache.cache_repo.arguments.redis_expiration_time = 2678400
312 #rc_cache.cache_repo.arguments.redis_expiration_time = 2678400
314 #rc_cache.cache_repo.arguments.socket_timeout = 30
313 #rc_cache.cache_repo.arguments.socket_timeout = 30
315 #rc_cache.cache_repo.arguments.host = localhost
314 #rc_cache.cache_repo.arguments.host = localhost
316 #rc_cache.cache_repo.arguments.port = 6379
315 #rc_cache.cache_repo.arguments.port = 6379
317 #rc_cache.cache_repo.arguments.db = 1
316 #rc_cache.cache_repo.arguments.db = 1
318 #rc_cache.cache_repo.arguments.distributed_lock = true
317 #rc_cache.cache_repo.arguments.distributed_lock = true
319
318
320 ## cache settings for SQL queries, this needs to use memory type backend
319 ## cache settings for SQL queries, this needs to use memory type backend
321 rc_cache.sql_cache_short.backend = dogpile.cache.rc.memory_lru
320 rc_cache.sql_cache_short.backend = dogpile.cache.rc.memory_lru
322 rc_cache.sql_cache_short.expiration_time = 30
321 rc_cache.sql_cache_short.expiration_time = 30
323
322
324 ## `cache_repo_longterm` cache for repo object instances, this needs to use memory
323 ## `cache_repo_longterm` cache for repo object instances, this needs to use memory
325 ## type backend as the objects kept are not pickle serializable
324 ## type backend as the objects kept are not pickle serializable
326 rc_cache.cache_repo_longterm.backend = dogpile.cache.rc.memory_lru
325 rc_cache.cache_repo_longterm.backend = dogpile.cache.rc.memory_lru
327 ## by default we use 96H, this is using invalidation on push anyway
326 ## by default we use 96H, this is using invalidation on push anyway
328 rc_cache.cache_repo_longterm.expiration_time = 345600
327 rc_cache.cache_repo_longterm.expiration_time = 345600
329 ## max items in LRU cache, reduce this number to save memory, and expire last used
328 ## max items in LRU cache, reduce this number to save memory, and expire last used
330 ## cached objects
329 ## cached objects
331 rc_cache.cache_repo_longterm.max_size = 10000
330 rc_cache.cache_repo_longterm.max_size = 10000
332
331
333
332
334 ####################################
333 ####################################
335 ### BEAKER SESSION ####
334 ### BEAKER SESSION ####
336 ####################################
335 ####################################
337
336
338 ## .session.type is type of storage options for the session, current allowed
337 ## .session.type is type of storage options for the session, current allowed
339 ## types are file, ext:memcached, ext:redis, ext:database, and memory (default).
338 ## types are file, ext:memcached, ext:redis, ext:database, and memory (default).
340 beaker.session.type = file
339 beaker.session.type = file
341 beaker.session.data_dir = %(here)s/data/sessions
340 beaker.session.data_dir = %(here)s/data/sessions
342
341
343 ## db based session, fast, and allows easy management over logged in users
342 ## db based session, fast, and allows easy management over logged in users
344 #beaker.session.type = ext:database
343 #beaker.session.type = ext:database
345 #beaker.session.table_name = db_session
344 #beaker.session.table_name = db_session
346 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
345 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
347 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
346 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
348 #beaker.session.sa.pool_recycle = 3600
347 #beaker.session.sa.pool_recycle = 3600
349 #beaker.session.sa.echo = false
348 #beaker.session.sa.echo = false
350
349
351 beaker.session.key = rhodecode
350 beaker.session.key = rhodecode
352 beaker.session.secret = production-rc-uytcxaz
351 beaker.session.secret = production-rc-uytcxaz
353 beaker.session.lock_dir = %(here)s/data/sessions/lock
352 beaker.session.lock_dir = %(here)s/data/sessions/lock
354
353
355 ## Secure encrypted cookie. Requires AES and AES python libraries
354 ## Secure encrypted cookie. Requires AES and AES python libraries
356 ## you must disable beaker.session.secret to use this
355 ## you must disable beaker.session.secret to use this
357 #beaker.session.encrypt_key = key_for_encryption
356 #beaker.session.encrypt_key = key_for_encryption
358 #beaker.session.validate_key = validation_key
357 #beaker.session.validate_key = validation_key
359
358
360 ## sets session as invalid(also logging out user) if it haven not been
359 ## sets session as invalid(also logging out user) if it haven not been
361 ## accessed for given amount of time in seconds
360 ## accessed for given amount of time in seconds
362 beaker.session.timeout = 2592000
361 beaker.session.timeout = 2592000
363 beaker.session.httponly = true
362 beaker.session.httponly = true
364 ## Path to use for the cookie. Set to prefix if you use prefix middleware
363 ## Path to use for the cookie. Set to prefix if you use prefix middleware
365 #beaker.session.cookie_path = /custom_prefix
364 #beaker.session.cookie_path = /custom_prefix
366
365
367 ## uncomment for https secure cookie
366 ## uncomment for https secure cookie
368 beaker.session.secure = false
367 beaker.session.secure = false
369
368
370 ## auto save the session to not to use .save()
369 ## auto save the session to not to use .save()
371 beaker.session.auto = false
370 beaker.session.auto = false
372
371
373 ## default cookie expiration time in seconds, set to `true` to set expire
372 ## default cookie expiration time in seconds, set to `true` to set expire
374 ## at browser close
373 ## at browser close
375 #beaker.session.cookie_expires = 3600
374 #beaker.session.cookie_expires = 3600
376
375
377 ###################################
376 ###################################
378 ## SEARCH INDEXING CONFIGURATION ##
377 ## SEARCH INDEXING CONFIGURATION ##
379 ###################################
378 ###################################
380 ## Full text search indexer is available in rhodecode-tools under
379 ## Full text search indexer is available in rhodecode-tools under
381 ## `rhodecode-tools index` command
380 ## `rhodecode-tools index` command
382
381
383 ## WHOOSH Backend, doesn't require additional services to run
382 ## WHOOSH Backend, doesn't require additional services to run
384 ## it works good with few dozen repos
383 ## it works good with few dozen repos
385 search.module = rhodecode.lib.index.whoosh
384 search.module = rhodecode.lib.index.whoosh
386 search.location = %(here)s/data/index
385 search.location = %(here)s/data/index
387
386
388 ########################################
387 ########################################
389 ### CHANNELSTREAM CONFIG ####
388 ### CHANNELSTREAM CONFIG ####
390 ########################################
389 ########################################
391 ## channelstream enables persistent connections and live notification
390 ## channelstream enables persistent connections and live notification
392 ## in the system. It's also used by the chat system
391 ## in the system. It's also used by the chat system
393 channelstream.enabled = false
392 channelstream.enabled = false
394
393
395 ## server address for channelstream server on the backend
394 ## server address for channelstream server on the backend
396 channelstream.server = 127.0.0.1:9800
395 channelstream.server = 127.0.0.1:9800
397
396
398 ## location of the channelstream server from outside world
397 ## location of the channelstream server from outside world
399 ## use ws:// for http or wss:// for https. This address needs to be handled
398 ## use ws:// for http or wss:// for https. This address needs to be handled
400 ## by external HTTP server such as Nginx or Apache
399 ## by external HTTP server such as Nginx or Apache
401 ## see nginx/apache configuration examples in our docs
400 ## see nginx/apache configuration examples in our docs
402 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
401 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
403 channelstream.secret = secret
402 channelstream.secret = secret
404 channelstream.history.location = %(here)s/channelstream_history
403 channelstream.history.location = %(here)s/channelstream_history
405
404
406 ## Internal application path that Javascript uses to connect into.
405 ## Internal application path that Javascript uses to connect into.
407 ## If you use proxy-prefix the prefix should be added before /_channelstream
406 ## If you use proxy-prefix the prefix should be added before /_channelstream
408 channelstream.proxy_path = /_channelstream
407 channelstream.proxy_path = /_channelstream
409
408
410
409
411 ###################################
410 ###################################
412 ## APPENLIGHT CONFIG ##
411 ## APPENLIGHT CONFIG ##
413 ###################################
412 ###################################
414
413
415 ## Appenlight is tailored to work with RhodeCode, see
414 ## Appenlight is tailored to work with RhodeCode, see
416 ## http://appenlight.com for details how to obtain an account
415 ## http://appenlight.com for details how to obtain an account
417
416
418 ## appenlight integration enabled
417 ## appenlight integration enabled
419 appenlight = false
418 appenlight = false
420
419
421 appenlight.server_url = https://api.appenlight.com
420 appenlight.server_url = https://api.appenlight.com
422 appenlight.api_key = YOUR_API_KEY
421 appenlight.api_key = YOUR_API_KEY
423 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
422 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
424
423
425 # used for JS client
424 # used for JS client
426 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
425 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
427
426
428 ## TWEAK AMOUNT OF INFO SENT HERE
427 ## TWEAK AMOUNT OF INFO SENT HERE
429
428
430 ## enables 404 error logging (default False)
429 ## enables 404 error logging (default False)
431 appenlight.report_404 = false
430 appenlight.report_404 = false
432
431
433 ## time in seconds after request is considered being slow (default 1)
432 ## time in seconds after request is considered being slow (default 1)
434 appenlight.slow_request_time = 1
433 appenlight.slow_request_time = 1
435
434
436 ## record slow requests in application
435 ## record slow requests in application
437 ## (needs to be enabled for slow datastore recording and time tracking)
436 ## (needs to be enabled for slow datastore recording and time tracking)
438 appenlight.slow_requests = true
437 appenlight.slow_requests = true
439
438
440 ## enable hooking to application loggers
439 ## enable hooking to application loggers
441 appenlight.logging = true
440 appenlight.logging = true
442
441
443 ## minimum log level for log capture
442 ## minimum log level for log capture
444 appenlight.logging.level = WARNING
443 appenlight.logging.level = WARNING
445
444
446 ## send logs only from erroneous/slow requests
445 ## send logs only from erroneous/slow requests
447 ## (saves API quota for intensive logging)
446 ## (saves API quota for intensive logging)
448 appenlight.logging_on_error = false
447 appenlight.logging_on_error = false
449
448
450 ## list of additonal keywords that should be grabbed from environ object
449 ## list of additonal keywords that should be grabbed from environ object
451 ## can be string with comma separated list of words in lowercase
450 ## can be string with comma separated list of words in lowercase
452 ## (by default client will always send following info:
451 ## (by default client will always send following info:
453 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
452 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
454 ## start with HTTP* this list be extended with additional keywords here
453 ## start with HTTP* this list be extended with additional keywords here
455 appenlight.environ_keys_whitelist =
454 appenlight.environ_keys_whitelist =
456
455
457 ## list of keywords that should be blanked from request object
456 ## list of keywords that should be blanked from request object
458 ## can be string with comma separated list of words in lowercase
457 ## can be string with comma separated list of words in lowercase
459 ## (by default client will always blank keys that contain following words
458 ## (by default client will always blank keys that contain following words
460 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
459 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
461 ## this list be extended with additional keywords set here
460 ## this list be extended with additional keywords set here
462 appenlight.request_keys_blacklist =
461 appenlight.request_keys_blacklist =
463
462
464 ## list of namespaces that should be ignores when gathering log entries
463 ## list of namespaces that should be ignores when gathering log entries
465 ## can be string with comma separated list of namespaces
464 ## can be string with comma separated list of namespaces
466 ## (by default the client ignores own entries: appenlight_client.client)
465 ## (by default the client ignores own entries: appenlight_client.client)
467 appenlight.log_namespace_blacklist =
466 appenlight.log_namespace_blacklist =
468
467
469
468
470 ################################################################################
469 ################################################################################
471 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
470 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
472 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
471 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
473 ## execute malicious code after an exception is raised. ##
472 ## execute malicious code after an exception is raised. ##
474 ################################################################################
473 ################################################################################
475 set debug = false
474 set debug = false
476
475
477
476
478 ###########################################
477 ###########################################
479 ### MAIN RHODECODE DATABASE CONFIG ###
478 ### MAIN RHODECODE DATABASE CONFIG ###
480 ###########################################
479 ###########################################
481 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
480 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
482 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
481 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
483 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode
482 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode?charset=utf8
484 # pymysql is an alternative driver for MySQL, use in case of problems with default one
483 # pymysql is an alternative driver for MySQL, use in case of problems with default one
485 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
484 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
486
485
487 sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
486 sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
488
487
489 # see sqlalchemy docs for other advanced settings
488 # see sqlalchemy docs for other advanced settings
490
489
491 ## print the sql statements to output
490 ## print the sql statements to output
492 sqlalchemy.db1.echo = false
491 sqlalchemy.db1.echo = false
493 ## recycle the connections after this amount of seconds
492 ## recycle the connections after this amount of seconds
494 sqlalchemy.db1.pool_recycle = 3600
493 sqlalchemy.db1.pool_recycle = 3600
495 sqlalchemy.db1.convert_unicode = true
494 sqlalchemy.db1.convert_unicode = true
496
495
497 ## the number of connections to keep open inside the connection pool.
496 ## the number of connections to keep open inside the connection pool.
498 ## 0 indicates no limit
497 ## 0 indicates no limit
499 #sqlalchemy.db1.pool_size = 5
498 #sqlalchemy.db1.pool_size = 5
500
499
501 ## the number of connections to allow in connection pool "overflow", that is
500 ## the number of connections to allow in connection pool "overflow", that is
502 ## connections that can be opened above and beyond the pool_size setting,
501 ## connections that can be opened above and beyond the pool_size setting,
503 ## which defaults to five.
502 ## which defaults to five.
504 #sqlalchemy.db1.max_overflow = 10
503 #sqlalchemy.db1.max_overflow = 10
505
504
506 ## Connection check ping, used to detect broken database connections
505 ## Connection check ping, used to detect broken database connections
507 ## could be enabled to better handle cases if MySQL has gone away errors
506 ## could be enabled to better handle cases if MySQL has gone away errors
508 #sqlalchemy.db1.ping_connection = true
507 #sqlalchemy.db1.ping_connection = true
509
508
510 ##################
509 ##################
511 ### VCS CONFIG ###
510 ### VCS CONFIG ###
512 ##################
511 ##################
513 vcs.server.enable = true
512 vcs.server.enable = true
514 vcs.server = localhost:9900
513 vcs.server = localhost:9900
515
514
516 ## Web server connectivity protocol, responsible for web based VCS operatations
515 ## Web server connectivity protocol, responsible for web based VCS operatations
517 ## Available protocols are:
516 ## Available protocols are:
518 ## `http` - use http-rpc backend (default)
517 ## `http` - use http-rpc backend (default)
519 vcs.server.protocol = http
518 vcs.server.protocol = http
520
519
521 ## Push/Pull operations protocol, available options are:
520 ## Push/Pull operations protocol, available options are:
522 ## `http` - use http-rpc backend (default)
521 ## `http` - use http-rpc backend (default)
523 vcs.scm_app_implementation = http
522 vcs.scm_app_implementation = http
524
523
525 ## Push/Pull operations hooks protocol, available options are:
524 ## Push/Pull operations hooks protocol, available options are:
526 ## `http` - use http-rpc backend (default)
525 ## `http` - use http-rpc backend (default)
527 vcs.hooks.protocol = http
526 vcs.hooks.protocol = http
528 ## Host on which this instance is listening for hooks. If vcsserver is in other location
527 ## Host on which this instance is listening for hooks. If vcsserver is in other location
529 ## this should be adjusted.
528 ## this should be adjusted.
530 vcs.hooks.host = 127.0.0.1
529 vcs.hooks.host = 127.0.0.1
531
530
532 vcs.server.log_level = info
531 vcs.server.log_level = info
533 ## Start VCSServer with this instance as a subprocess, useful for development
532 ## Start VCSServer with this instance as a subprocess, useful for development
534 vcs.start_server = false
533 vcs.start_server = false
535
534
536 ## List of enabled VCS backends, available options are:
535 ## List of enabled VCS backends, available options are:
537 ## `hg` - mercurial
536 ## `hg` - mercurial
538 ## `git` - git
537 ## `git` - git
539 ## `svn` - subversion
538 ## `svn` - subversion
540 vcs.backends = hg, git, svn
539 vcs.backends = hg, git, svn
541
540
542 vcs.connection_timeout = 3600
541 vcs.connection_timeout = 3600
543 ## Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
542 ## Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
544 ## Available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
543 ## Available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
545 #vcs.svn.compatible_version = pre-1.8-compatible
544 #vcs.svn.compatible_version = pre-1.8-compatible
546
545
547
546
548 ############################################################
547 ############################################################
549 ### Subversion proxy support (mod_dav_svn) ###
548 ### Subversion proxy support (mod_dav_svn) ###
550 ### Maps RhodeCode repo groups into SVN paths for Apache ###
549 ### Maps RhodeCode repo groups into SVN paths for Apache ###
551 ############################################################
550 ############################################################
552 ## Enable or disable the config file generation.
551 ## Enable or disable the config file generation.
553 svn.proxy.generate_config = false
552 svn.proxy.generate_config = false
554 ## Generate config file with `SVNListParentPath` set to `On`.
553 ## Generate config file with `SVNListParentPath` set to `On`.
555 svn.proxy.list_parent_path = true
554 svn.proxy.list_parent_path = true
556 ## Set location and file name of generated config file.
555 ## Set location and file name of generated config file.
557 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
556 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
558 ## alternative mod_dav config template. This needs to be a mako template
557 ## alternative mod_dav config template. This needs to be a mako template
559 #svn.proxy.config_template = ~/.rccontrol/enterprise-1/custom_svn_conf.mako
558 #svn.proxy.config_template = ~/.rccontrol/enterprise-1/custom_svn_conf.mako
560 ## Used as a prefix to the `Location` block in the generated config file.
559 ## Used as a prefix to the `Location` block in the generated config file.
561 ## In most cases it should be set to `/`.
560 ## In most cases it should be set to `/`.
562 svn.proxy.location_root = /
561 svn.proxy.location_root = /
563 ## Command to reload the mod dav svn configuration on change.
562 ## Command to reload the mod dav svn configuration on change.
564 ## Example: `/etc/init.d/apache2 reload`
563 ## Example: `/etc/init.d/apache2 reload`
565 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
564 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
566 ## If the timeout expires before the reload command finishes, the command will
565 ## If the timeout expires before the reload command finishes, the command will
567 ## be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
566 ## be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
568 #svn.proxy.reload_timeout = 10
567 #svn.proxy.reload_timeout = 10
569
568
570 ############################################################
569 ############################################################
571 ### SSH Support Settings ###
570 ### SSH Support Settings ###
572 ############################################################
571 ############################################################
573
572
574 ## Defines if a custom authorized_keys file should be created and written on
573 ## Defines if a custom authorized_keys file should be created and written on
575 ## any change user ssh keys. Setting this to false also disables posibility
574 ## any change user ssh keys. Setting this to false also disables posibility
576 ## of adding SSH keys by users from web interface. Super admins can still
575 ## of adding SSH keys by users from web interface. Super admins can still
577 ## manage SSH Keys.
576 ## manage SSH Keys.
578 ssh.generate_authorized_keyfile = false
577 ssh.generate_authorized_keyfile = false
579
578
580 ## Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
579 ## Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
581 # ssh.authorized_keys_ssh_opts =
580 # ssh.authorized_keys_ssh_opts =
582
581
583 ## Path to the authrozied_keys file where the generate entries are placed.
582 ## Path to the authrozied_keys file where the generate entries are placed.
584 ## It is possible to have multiple key files specified in `sshd_config` e.g.
583 ## It is possible to have multiple key files specified in `sshd_config` e.g.
585 ## AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
584 ## AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
586 ssh.authorized_keys_file_path = ~/.ssh/authorized_keys_rhodecode
585 ssh.authorized_keys_file_path = ~/.ssh/authorized_keys_rhodecode
587
586
588 ## Command to execute the SSH wrapper. The binary is available in the
587 ## Command to execute the SSH wrapper. The binary is available in the
589 ## rhodecode installation directory.
588 ## rhodecode installation directory.
590 ## e.g ~/.rccontrol/community-1/profile/bin/rc-ssh-wrapper
589 ## e.g ~/.rccontrol/community-1/profile/bin/rc-ssh-wrapper
591 ssh.wrapper_cmd = ~/.rccontrol/community-1/rc-ssh-wrapper
590 ssh.wrapper_cmd = ~/.rccontrol/community-1/rc-ssh-wrapper
592
591
593 ## Allow shell when executing the ssh-wrapper command
592 ## Allow shell when executing the ssh-wrapper command
594 ssh.wrapper_cmd_allow_shell = false
593 ssh.wrapper_cmd_allow_shell = false
595
594
596 ## Enables logging, and detailed output send back to the client during SSH
595 ## Enables logging, and detailed output send back to the client during SSH
597 ## operations. Usefull for debugging, shouldn't be used in production.
596 ## operations. Usefull for debugging, shouldn't be used in production.
598 ssh.enable_debug_logging = false
597 ssh.enable_debug_logging = false
599
598
600 ## Paths to binary executable, by default they are the names, but we can
599 ## Paths to binary executable, by default they are the names, but we can
601 ## override them if we want to use a custom one
600 ## override them if we want to use a custom one
602 ssh.executable.hg = ~/.rccontrol/vcsserver-1/profile/bin/hg
601 ssh.executable.hg = ~/.rccontrol/vcsserver-1/profile/bin/hg
603 ssh.executable.git = ~/.rccontrol/vcsserver-1/profile/bin/git
602 ssh.executable.git = ~/.rccontrol/vcsserver-1/profile/bin/git
604 ssh.executable.svn = ~/.rccontrol/vcsserver-1/profile/bin/svnserve
603 ssh.executable.svn = ~/.rccontrol/vcsserver-1/profile/bin/svnserve
605
604
606
605
607 ## Dummy marker to add new entries after.
606 ## Dummy marker to add new entries after.
608 ## Add any custom entries below. Please don't remove.
607 ## Add any custom entries below. Please don't remove.
609 custom.conf = 1
608 custom.conf = 1
610
609
611
610
612 ################################
611 ################################
613 ### LOGGING CONFIGURATION ####
612 ### LOGGING CONFIGURATION ####
614 ################################
613 ################################
615 [loggers]
614 [loggers]
616 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
615 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
617
616
618 [handlers]
617 [handlers]
619 keys = console, console_sql
618 keys = console, console_sql
620
619
621 [formatters]
620 [formatters]
622 keys = generic, color_formatter, color_formatter_sql
621 keys = generic, color_formatter, color_formatter_sql
623
622
624 #############
623 #############
625 ## LOGGERS ##
624 ## LOGGERS ##
626 #############
625 #############
627 [logger_root]
626 [logger_root]
628 level = NOTSET
627 level = NOTSET
629 handlers = console
628 handlers = console
630
629
631 [logger_sqlalchemy]
630 [logger_sqlalchemy]
632 level = INFO
631 level = INFO
633 handlers = console_sql
632 handlers = console_sql
634 qualname = sqlalchemy.engine
633 qualname = sqlalchemy.engine
635 propagate = 0
634 propagate = 0
636
635
637 [logger_beaker]
636 [logger_beaker]
638 level = DEBUG
637 level = DEBUG
639 handlers =
638 handlers =
640 qualname = beaker.container
639 qualname = beaker.container
641 propagate = 1
640 propagate = 1
642
641
643 [logger_rhodecode]
642 [logger_rhodecode]
644 level = DEBUG
643 level = DEBUG
645 handlers =
644 handlers =
646 qualname = rhodecode
645 qualname = rhodecode
647 propagate = 1
646 propagate = 1
648
647
649 [logger_ssh_wrapper]
648 [logger_ssh_wrapper]
650 level = DEBUG
649 level = DEBUG
651 handlers =
650 handlers =
652 qualname = ssh_wrapper
651 qualname = ssh_wrapper
653 propagate = 1
652 propagate = 1
654
653
655 [logger_celery]
654 [logger_celery]
656 level = DEBUG
655 level = DEBUG
657 handlers =
656 handlers =
658 qualname = celery
657 qualname = celery
659
658
660
659
661 ##############
660 ##############
662 ## HANDLERS ##
661 ## HANDLERS ##
663 ##############
662 ##############
664
663
665 [handler_console]
664 [handler_console]
666 class = StreamHandler
665 class = StreamHandler
667 args = (sys.stderr, )
666 args = (sys.stderr, )
668 level = INFO
667 level = INFO
669 formatter = generic
668 formatter = generic
670
669
671 [handler_console_sql]
670 [handler_console_sql]
672 # "level = DEBUG" logs SQL queries and results.
671 # "level = DEBUG" logs SQL queries and results.
673 # "level = INFO" logs SQL queries.
672 # "level = INFO" logs SQL queries.
674 # "level = WARN" logs neither. (Recommended for production systems.)
673 # "level = WARN" logs neither. (Recommended for production systems.)
675 class = StreamHandler
674 class = StreamHandler
676 args = (sys.stderr, )
675 args = (sys.stderr, )
677 level = WARN
676 level = WARN
678 formatter = generic
677 formatter = generic
679
678
680 ################
679 ################
681 ## FORMATTERS ##
680 ## FORMATTERS ##
682 ################
681 ################
683
682
684 [formatter_generic]
683 [formatter_generic]
685 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
684 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
686 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
685 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
687 datefmt = %Y-%m-%d %H:%M:%S
686 datefmt = %Y-%m-%d %H:%M:%S
688
687
689 [formatter_color_formatter]
688 [formatter_color_formatter]
690 class = rhodecode.lib.logging_formatter.ColorFormatter
689 class = rhodecode.lib.logging_formatter.ColorFormatter
691 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
690 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
692 datefmt = %Y-%m-%d %H:%M:%S
691 datefmt = %Y-%m-%d %H:%M:%S
693
692
694 [formatter_color_formatter_sql]
693 [formatter_color_formatter_sql]
695 class = rhodecode.lib.logging_formatter.ColorFormatterSql
694 class = rhodecode.lib.logging_formatter.ColorFormatterSql
696 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
695 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
697 datefmt = %Y-%m-%d %H:%M:%S
696 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,258 +1,294 b''
1 # Nix environment for the community edition
1 # Nix environment for the community edition
2 #
2 #
3 # This shall be as lean as possible, just producing the enterprise-ce
3 # This shall be as lean as possible, just producing the enterprise-ce
4 # derivation. For advanced tweaks to pimp up the development environment we use
4 # derivation. For advanced tweaks to pimp up the development environment we use
5 # "shell.nix" so that it does not have to clutter this file.
5 # "shell.nix" so that it does not have to clutter this file.
6 #
6 #
7 # Configuration, set values in "~/.nixpkgs/config.nix".
7 # Configuration, set values in "~/.nixpkgs/config.nix".
8 # example
8 # example
9 # {
9 # {
10 # # Thoughts on how to configure the dev environment
10 # # Thoughts on how to configure the dev environment
11 # rc = {
11 # rc = {
12 # codeInternalUrl = "https://usr:token@internal-code.rhodecode.com";
12 # codeInternalUrl = "https://usr:token@code.rhodecode.com/internal";
13 # sources = {
13 # sources = {
14 # rhodecode-vcsserver = "/home/user/work/rhodecode-vcsserver";
14 # rhodecode-vcsserver = "/home/user/work/rhodecode-vcsserver";
15 # rhodecode-enterprise-ce = "/home/user/work/rhodecode-enterprise-ce";
15 # rhodecode-enterprise-ce = "/home/user/work/rhodecode-enterprise-ce";
16 # rhodecode-enterprise-ee = "/home/user/work/rhodecode-enterprise-ee";
16 # rhodecode-enterprise-ee = "/home/user/work/rhodecode-enterprise-ee";
17 # };
17 # };
18 # };
18 # };
19 # }
19 # }
20
20
21 args@
21 args@
22 { pythonPackages ? "python27Packages"
22 { pythonPackages ? "python27Packages"
23 , pythonExternalOverrides ? self: super: {}
23 , pythonExternalOverrides ? self: super: {}
24 , doCheck ? false
24 , doCheck ? false
25 , ...
25 , ...
26 }:
26 }:
27
27
28 let
28 let
29 # Use nixpkgs from args or import them. We use this indirect approach
29 pkgs_ = (import <nixpkgs> {});
30 # through args to be able to use the name `pkgs` for our customized packages.
30 in
31 # Otherwise we will end up with an infinite recursion.
31
32 pkgs = args.pkgs or (import <nixpkgs> { });
32 let
33 pkgs = import <nixpkgs> {
34 overlays = [
35 (import ./pkgs/overlays.nix)
36 ];
37 inherit
38 (pkgs_)
39 system;
40 };
33
41
34 # Works with the new python-packages, still can fallback to the old
42 # Works with the new python-packages, still can fallback to the old
35 # variant.
43 # variant.
36 basePythonPackagesUnfix = basePythonPackages.__unfix__ or (
44 basePythonPackagesUnfix = basePythonPackages.__unfix__ or (
37 self: basePythonPackages.override (a: { inherit self; }));
45 self: basePythonPackages.override (a: { inherit self; }));
38
46
39 # Evaluates to the last segment of a file system path.
47 # Evaluates to the last segment of a file system path.
40 basename = path: with pkgs.lib; last (splitString "/" path);
48 basename = path: with pkgs.lib; last (splitString "/" path);
41
49
42 # source code filter used as arugment to builtins.filterSource.
50 # source code filter used as arugment to builtins.filterSource.
43 src-filter = path: type: with pkgs.lib;
51 src-filter = path: type: with pkgs.lib;
44 let
52 let
45 ext = last (splitString "." path);
53 ext = last (splitString "." path);
46 in
54 in
47 !builtins.elem (basename path) [
55 !builtins.elem (basename path) [
48 ".git" ".hg" "__pycache__" ".eggs" ".idea" ".dev"
56 ".git" ".hg" "__pycache__" ".eggs" ".idea" ".dev"
49 "bower_components" "node_modules"
57 "node_modules" "node_binaries"
50 "build" "data" "result" "tmp"] &&
58 "build" "data" "result" "tmp"] &&
51 !builtins.elem ext ["egg-info" "pyc"] &&
59 !builtins.elem ext ["egg-info" "pyc"] &&
52 # TODO: johbo: This check is wrong, since "path" contains an absolute path,
60 # TODO: johbo: This check is wrong, since "path" contains an absolute path,
53 # it would still be good to restore it since we want to ignore "result-*".
61 # it would still be good to restore it since we want to ignore "result-*".
54 !hasPrefix "result" path;
62 !hasPrefix "result" path;
55
63
56 sources =
64 sources =
57 let
65 let
58 inherit (pkgs.lib) all isString attrValues;
66 inherit
67 (pkgs.lib)
68 all
69 isString
70 attrValues;
59 sourcesConfig = pkgs.config.rc.sources or {};
71 sourcesConfig = pkgs.config.rc.sources or {};
60 in
72 in
61 # Ensure that sources are configured as strings. Using a path
73 # Ensure that sources are configured as strings. Using a path
62 # would result in a copy into the nix store.
74 # would result in a copy into the nix store.
63 assert all isString (attrValues sourcesConfig);
75 assert all isString (attrValues sourcesConfig);
64 sourcesConfig;
76 sourcesConfig;
65
77
66 version = builtins.readFile "${rhodecode-enterprise-ce-src}/rhodecode/VERSION";
78 version = builtins.readFile "${rhodecode-enterprise-ce-src}/rhodecode/VERSION";
67 rhodecode-enterprise-ce-src = builtins.filterSource src-filter ./.;
79 rhodecode-enterprise-ce-src = builtins.filterSource src-filter ./.;
68
80
69 buildBowerComponents = pkgs.buildBowerComponents;
70 nodeEnv = import ./pkgs/node-default.nix {
81 nodeEnv = import ./pkgs/node-default.nix {
71 inherit pkgs;
82 inherit
83 pkgs;
72 };
84 };
73 nodeDependencies = nodeEnv.shell.nodeDependencies;
85 nodeDependencies = nodeEnv.shell.nodeDependencies;
74
86
75 bowerComponents = buildBowerComponents {
76 name = "enterprise-ce-${version}";
77 generated = ./pkgs/bower-packages.nix;
78 src = rhodecode-enterprise-ce-src;
79 };
80
81 rhodecode-testdata-src = sources.rhodecode-testdata or (
87 rhodecode-testdata-src = sources.rhodecode-testdata or (
82 pkgs.fetchhg {
88 pkgs.fetchhg {
83 url = "https://code.rhodecode.com/upstream/rc_testdata";
89 url = "https://code.rhodecode.com/upstream/rc_testdata";
84 rev = "v0.10.0";
90 rev = "v0.10.0";
85 sha256 = "0zn9swwvx4vgw4qn8q3ri26vvzgrxn15x6xnjrysi1bwmz01qjl0";
91 sha256 = "0zn9swwvx4vgw4qn8q3ri26vvzgrxn15x6xnjrysi1bwmz01qjl0";
86 });
92 });
87
93
88 rhodecode-testdata = import "${rhodecode-testdata-src}/default.nix" {
94 rhodecode-testdata = import "${rhodecode-testdata-src}/default.nix" {
89 inherit
95 inherit
90 doCheck
96 doCheck
91 pkgs
97 pkgs
92 pythonPackages;
98 pythonPackages;
93 };
99 };
94
100
95 pythonLocalOverrides = self: super: {
101 pythonLocalOverrides = self: super: {
96 rhodecode-enterprise-ce =
102 rhodecode-enterprise-ce =
97 let
103 let
98 linkNodeAndBowerPackages = ''
104 linkNodePackages = ''
99 export RHODECODE_CE_PATH=${rhodecode-enterprise-ce-src}
105 export RHODECODE_CE_PATH=${rhodecode-enterprise-ce-src}
100
106
101 echo "[BEGIN]: Link node packages"
107 echo "[BEGIN]: Link node packages and binaries"
102 rm -fr node_modules
103 mkdir node_modules
104 # johbo: Linking individual packages allows us to run "npm install"
108 # johbo: Linking individual packages allows us to run "npm install"
105 # inside of a shell to try things out. Re-entering the shell will
109 # inside of a shell to try things out. Re-entering the shell will
106 # restore a clean environment.
110 # restore a clean environment.
111 rm -fr node_modules
112 mkdir node_modules
107 ln -s ${nodeDependencies}/lib/node_modules/* node_modules/
113 ln -s ${nodeDependencies}/lib/node_modules/* node_modules/
108 echo "[DONE]: Link node packages"
114 export NODE_PATH=./node_modules
109
115
110 echo "[BEGIN]: Link bower packages"
116 rm -fr node_binaries
111 rm -fr bower_components
117 mkdir node_binaries
112 mkdir bower_components
118 ln -s ${nodeDependencies}/bin/* node_binaries/
113 ln -s ${bowerComponents}/bower_components/* bower_components/
119 echo "[DONE ]: Link node packages and binaries"
114 echo "[DONE]: Link bower packages"
115 '';
120 '';
116
121
117 releaseName = "RhodeCodeEnterpriseCE-${version}";
122 releaseName = "RhodeCodeEnterpriseCE-${version}";
118 in super.rhodecode-enterprise-ce.override (attrs: {
123 in super.rhodecode-enterprise-ce.override (attrs: {
119 inherit
124 inherit
120 doCheck
125 doCheck
121 version;
126 version;
122
127
123 name = "rhodecode-enterprise-ce-${version}";
128 name = "rhodecode-enterprise-ce-${version}";
124 releaseName = releaseName;
129 releaseName = releaseName;
125 src = rhodecode-enterprise-ce-src;
130 src = rhodecode-enterprise-ce-src;
126 dontStrip = true; # prevent strip, we don't need it.
131 dontStrip = true; # prevent strip, we don't need it.
127
132
128 # expose following attributed outside
133 # expose following attributed outside
129 passthru = {
134 passthru = {
130 inherit
135 inherit
131 rhodecode-testdata
136 rhodecode-testdata
132 bowerComponents
137 linkNodePackages
133 linkNodeAndBowerPackages
134 myPythonPackagesUnfix
138 myPythonPackagesUnfix
135 pythonLocalOverrides
139 pythonLocalOverrides
136 pythonCommunityOverrides;
140 pythonCommunityOverrides;
137
141
138 pythonPackages = self;
142 pythonPackages = self;
139 };
143 };
140
144
141 buildInputs =
145 buildInputs =
142 attrs.buildInputs or [] ++ [
146 attrs.buildInputs or [] ++ [
143 rhodecode-testdata
147 rhodecode-testdata
144 pkgs.nodePackages.bower
145 pkgs.nodePackages.grunt-cli
146 ];
148 ];
147
149
148 #NOTE: option to inject additional propagatedBuildInputs
150 #NOTE: option to inject additional propagatedBuildInputs
149 propagatedBuildInputs =
151 propagatedBuildInputs =
150 attrs.propagatedBuildInputs or [] ++ [
152 attrs.propagatedBuildInputs or [] ++ [
151
153
152 ];
154 ];
153
155
154 LC_ALL = "en_US.UTF-8";
156 LC_ALL = "en_US.UTF-8";
155 LOCALE_ARCHIVE =
157 LOCALE_ARCHIVE =
156 if pkgs.stdenv.isLinux
158 if pkgs.stdenv.isLinux
157 then "${pkgs.glibcLocales}/lib/locale/locale-archive"
159 then "${pkgs.glibcLocales}/lib/locale/locale-archive"
158 else "";
160 else "";
159
161
160 # Add bin directory to path so that tests can find 'rhodecode'.
162 # Add bin directory to path so that tests can find 'rhodecode'.
161 preCheck = ''
163 preCheck = ''
162 export PATH="$out/bin:$PATH"
164 export PATH="$out/bin:$PATH"
163 '';
165 '';
164
166
165 # custom check phase for testing
167 # custom check phase for testing
166 checkPhase = ''
168 checkPhase = ''
167 runHook preCheck
169 runHook preCheck
168 PYTHONHASHSEED=random py.test -vv -p no:sugar -r xw --cov-config=.coveragerc --cov=rhodecode --cov-report=term-missing rhodecode
170 PYTHONHASHSEED=random py.test -vv -p no:sugar -r xw --cov-config=.coveragerc --cov=rhodecode --cov-report=term-missing rhodecode
169 runHook postCheck
171 runHook postCheck
170 '';
172 '';
171
173
172 postCheck = ''
174 postCheck = ''
173 echo "Cleanup of rhodecode/tests"
175 echo "Cleanup of rhodecode/tests"
174 rm -rf $out/lib/${self.python.libPrefix}/site-packages/rhodecode/tests
176 rm -rf $out/lib/${self.python.libPrefix}/site-packages/rhodecode/tests
175 '';
177 '';
176
178
177 preBuild = ''
179 preBuild = ''
178
180 echo "[BEGIN]: Building frontend assets"
179 echo "Building frontend assets"
181 ${linkNodePackages}
180 ${linkNodeAndBowerPackages}
182 make web-build
181 grunt
182 rm -fr node_modules
183 rm -fr node_modules
184 rm -fr node_binaries
185 echo "[DONE ]: Building frontend assets"
183 '';
186 '';
184
187
185 postInstall = ''
188 postInstall = ''
189 # check required files
190 STATIC_CHECK="/robots.txt /502.html
191 /js/scripts.js /js/rhodecode-components.js
192 /css/style.css /css/style-polymer.css"
193
194 for file in $STATIC_CHECK;
195 do
196 if [ ! -f rhodecode/public/$file ]; then
197 echo "Missing $file"
198 exit 1
199 fi
200 done
201
186 echo "Writing enterprise-ce meta information for rccontrol to nix-support/rccontrol"
202 echo "Writing enterprise-ce meta information for rccontrol to nix-support/rccontrol"
187 mkdir -p $out/nix-support/rccontrol
203 mkdir -p $out/nix-support/rccontrol
188 cp -v rhodecode/VERSION $out/nix-support/rccontrol/version
204 cp -v rhodecode/VERSION $out/nix-support/rccontrol/version
189 echo "[DONE]: enterprise-ce meta information for rccontrol written"
205 echo "[DONE ]: enterprise-ce meta information for rccontrol written"
190
206
191 mkdir -p $out/etc
207 mkdir -p $out/etc
192 cp configs/production.ini $out/etc
208 cp configs/production.ini $out/etc
193 echo "[DONE]: saved enterprise-ce production.ini into $out/etc"
209 echo "[DONE ]: saved enterprise-ce production.ini into $out/etc"
194
210
211 cp -Rf rhodecode/config/rcextensions $out/etc/rcextensions.tmpl
212 echo "[DONE ]: saved enterprise-ce rcextensions into $out/etc/rcextensions.tmpl"
213
195 # python based programs need to be wrapped
214 # python based programs need to be wrapped
196 mkdir -p $out/bin
215 mkdir -p $out/bin
197 # rhodecode-tools
198 ln -s ${self.rhodecode-tools}/bin/rhodecode-* $out/bin/
199
216
200 # required binaries from dependencies
217 # required binaries from dependencies
201 #ln -s ${self.python}/bin/python $out/bin
218 ln -s ${self.supervisor}/bin/supervisorctl $out/bin/
202 ln -s ${self.pyramid}/bin/* $out/bin/
219 ln -s ${self.supervisor}/bin/supervisord $out/bin/
203 ln -s ${self.gunicorn}/bin/gunicorn $out/bin/
204 ln -s ${self.supervisor}/bin/supervisor* $out/bin/
205 ln -s ${self.pastescript}/bin/paster $out/bin/
220 ln -s ${self.pastescript}/bin/paster $out/bin/
206 ln -s ${self.channelstream}/bin/channelstream $out/bin/
221 ln -s ${self.channelstream}/bin/channelstream $out/bin/
207 ln -s ${self.celery}/bin/celery $out/bin/
222 ln -s ${self.celery}/bin/celery $out/bin/
208 echo "[DONE]: created symlinks into $out/bin"
223 ln -s ${self.gunicorn}/bin/gunicorn $out/bin/
224 ln -s ${self.pyramid}/bin/prequest $out/bin/
225 ln -s ${self.pyramid}/bin/pserve $out/bin/
209
226
210 for file in $out/bin/*;
227 echo "[DONE ]: created symlinks into $out/bin"
228 DEPS="$out/bin/supervisorctl \
229 $out/bin/supervisord \
230 $out/bin/paster \
231 $out/bin/channelstream \
232 $out/bin/celery \
233 $out/bin/gunicorn \
234 $out/bin/prequest \
235 $out/bin/pserve"
236
237 # wrap only dependency scripts, they require to have full PYTHONPATH set
238 # to be able to import all packages
239 for file in $DEPS;
211 do
240 do
212 wrapProgram $file \
241 wrapProgram $file \
213 --prefix PATH : $PATH \
242 --prefix PATH : $PATH \
214 --prefix PYTHONPATH : $PYTHONPATH \
243 --prefix PYTHONPATH : $PYTHONPATH \
215 --set PYTHONHASHSEED random
244 --set PYTHONHASHSEED random
216 done
245 done
217
246
218 echo "[DONE]: enterprise-ce binary wrapping"
247 echo "[DONE ]: enterprise-ce binary wrapping"
219
248
220 if [ ! -f rhodecode/public/js/scripts.js ]; then
249 # rhodecode-tools don't need wrapping
221 echo "Missing scripts.js"
250 ln -s ${self.rhodecode-tools}/bin/rhodecode-* $out/bin/
222 exit 1
251
223 fi
252 # expose sources of CE
224 if [ ! -f rhodecode/public/css/style.css ]; then
253 ln -s $out $out/etc/rhodecode_enterprise_ce_source
225 echo "Missing style.css"
254
226 exit 1
255 # expose static files folder
227 fi
256 cp -Rf $out/lib/${self.python.libPrefix}/site-packages/rhodecode/public/ $out/etc/static
257 chmod 755 -R $out/etc/static
258
228 '';
259 '';
229 });
260 });
230
261
231 };
262 };
232
263
233 basePythonPackages = with builtins;
264 basePythonPackages = with builtins;
234 if isAttrs pythonPackages then
265 if isAttrs pythonPackages then
235 pythonPackages
266 pythonPackages
236 else
267 else
237 getAttr pythonPackages pkgs;
268 getAttr pythonPackages pkgs;
238
269
239 pythonGeneratedPackages = import ./pkgs/python-packages.nix {
270 pythonGeneratedPackages = import ./pkgs/python-packages.nix {
240 inherit pkgs;
271 inherit
241 inherit (pkgs) fetchurl fetchgit fetchhg;
272 pkgs;
273 inherit
274 (pkgs)
275 fetchurl
276 fetchgit
277 fetchhg;
242 };
278 };
243
279
244 pythonCommunityOverrides = import ./pkgs/python-packages-overrides.nix {
280 pythonCommunityOverrides = import ./pkgs/python-packages-overrides.nix {
245 inherit pkgs basePythonPackages;
281 inherit pkgs basePythonPackages;
246 };
282 };
247
283
248 # Apply all overrides and fix the final package set
284 # Apply all overrides and fix the final package set
249 myPythonPackagesUnfix = with pkgs.lib;
285 myPythonPackagesUnfix = with pkgs.lib;
250 (extends pythonExternalOverrides
286 (extends pythonExternalOverrides
251 (extends pythonLocalOverrides
287 (extends pythonLocalOverrides
252 (extends pythonCommunityOverrides
288 (extends pythonCommunityOverrides
253 (extends pythonGeneratedPackages
289 (extends pythonGeneratedPackages
254 basePythonPackagesUnfix))));
290 basePythonPackagesUnfix))));
255
291
256 myPythonPackages = (pkgs.lib.fix myPythonPackagesUnfix);
292 myPythonPackages = (pkgs.lib.fix myPythonPackagesUnfix);
257
293
258 in myPythonPackages.rhodecode-enterprise-ce
294 in myPythonPackages.rhodecode-enterprise-ce
@@ -1,240 +1,241 b''
1 .. _admin-tricks:
1 .. _admin-tricks:
2
2
3 One-time Admin Tasks
3 One-time Admin Tasks
4 --------------------
4 --------------------
5
5
6 * :ref:`web-analytics`
6 * :ref:`web-analytics`
7 * :ref:`admin-tricks-license`
7 * :ref:`admin-tricks-license`
8 * :ref:`announcements`
8 * :ref:`announcements`
9 * :ref:`md-rst`
9 * :ref:`md-rst`
10 * :ref:`repo-stats`
10 * :ref:`repo-stats`
11 * :ref:`server-side-merge`
11 * :ref:`server-side-merge`
12 * :ref:`remap-rescan`
12 * :ref:`remap-rescan`
13 * :ref:`custom-hooks`
13 * :ref:`custom-hooks`
14 * :ref:`clear-repo-cache`
14 * :ref:`clear-repo-cache`
15 * :ref:`set-repo-pub`
15 * :ref:`set-repo-pub`
16 * :ref:`ping`
16 * :ref:`ping`
17
17
18 .. _web-analytics:
18 .. _web-analytics:
19
19
20 Adding Web Analytics
20 Adding Web Analytics
21 ^^^^^^^^^^^^^^^^^^^^
21 ^^^^^^^^^^^^^^^^^^^^
22
22
23 If you wish to add a Google Analytics, or any other kind of tracker to your
23 If you wish to add a Google Analytics, or any other kind of tracker to your
24 |RCE| instance you can add the necessary codes to the header or footer
24 |RCE| instance you can add the necessary codes to the header or footer
25 section of each instance using the following steps:
25 section of each instance using the following steps:
26
26
27 1. From the |RCE| interface, select
27 1. From the |RCE| interface, select
28 :menuselection:`Admin --> Settings --> Global`
28 :menuselection:`Admin --> Settings --> Global`
29 2. To add a tracking code to you instance, enter it in the header or footer
29 2. To add a tracking code to you instance, enter it in the header or footer
30 section and select **Save**
30 section and select **Save**
31
31
32 Use the example templates in the drop-down menu to set up your configuration.
32 Use the example templates in the drop-down menu to set up your configuration.
33
33
34 .. _admin-tricks-license:
34 .. _admin-tricks-license:
35
35
36 Licence Key Management
36 Licence Key Management
37 ^^^^^^^^^^^^^^^^^^^^^^
37 ^^^^^^^^^^^^^^^^^^^^^^
38
38
39 To manage your license key, go to
39 To manage your license key, go to
40 :menuselection:`Admin --> Settings --> License`.
40 :menuselection:`Admin --> Settings --> License`.
41 On this page you can see the license key details. If you need a new license,
41 On this page you can see the license key details. If you need a new license,
42 or have questions about your current one, contact support@rhodecode.com
42 or have questions about your current one, contact support@rhodecode.com
43
43
44 .. _announcements:
44 .. _announcements:
45
45
46 Server-wide Announcements
46 Server-wide Announcements
47 ^^^^^^^^^^^^^^^^^^^^^^^^^
47 ^^^^^^^^^^^^^^^^^^^^^^^^^
48
48
49 If you need to make a server-wide announcement to all users,
49 If you need to make a server-wide announcement to all users,
50 you can add a message to be displayed using the following steps:
50 you can add a message to be displayed using the following steps:
51
51
52 1. From the |RCE| interface, select
52 1. From the |RCE| interface, select
53 :menuselection:`Admin --> Settings --> Global`
53 :menuselection:`Admin --> Settings --> Global`
54 2. To add a message that will be displayed to all users,
54 2. To add a message that will be displayed to all users,
55 select :guilabel:`Server Announcement` from the drop-down menu and
55 select :guilabel:`Server Announcement` from the drop-down menu and
56 change the ``var message = "TYPE YOUR MESSAGE HERE";`` example line.
56 change the ``var message = "TYPE YOUR MESSAGE HERE";`` example line.
57 3. Select :guilabel:`Save`, and you will see the message once your page
57 3. Select :guilabel:`Save`, and you will see the message once your page
58 refreshes.
58 refreshes.
59
59
60 .. image:: ../images/server-wide-announcement.png
60 .. image:: ../images/server-wide-announcement.png
61 :alt: Server Wide Announcement
61 :alt: Server Wide Announcement
62
62
63 .. _md-rst:
63 .. _md-rst:
64
64
65
65
66 Suppress license warnings or errors
66 Suppress license warnings or errors
67 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
67 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
68
68
69 In case you're running on maximum allowed users, RhodeCode will display a
69 In case you're running on maximum allowed users, RhodeCode will display a
70 warning message on pages that you're close to the license limits.
70 warning message on pages that you're close to the license limits.
71 It's often not desired to show that all the time. Here's how you can suppress
71 It's often not desired to show that all the time. Here's how you can suppress
72 the license messages.
72 the license messages.
73
73
74 1. From the |RCE| interface, select
74 1. From the |RCE| interface, select
75 :menuselection:`Admin --> Settings --> Global`
75 :menuselection:`Admin --> Settings --> Global`
76 2. Select :guilabel:`Flash message filtering` from the drop-down menu.
76 2. Select :guilabel:`Flash message filtering` from the drop-down menu.
77 3. Select :guilabel:`Save`, and you will no longer see the license message
77 3. Select :guilabel:`Save`, and you will no longer see the license message
78 once your page refreshes.
78 once your page refreshes.
79
79
80 .. _admin-tricks-suppress-license-messages:
80 .. _admin-tricks-suppress-license-messages:
81
81
82
82
83 Markdown or RST Rendering
83 Markdown or RST Rendering
84 ^^^^^^^^^^^^^^^^^^^^^^^^^
84 ^^^^^^^^^^^^^^^^^^^^^^^^^
85
85
86 |RCE| can use `Markdown`_ or `reStructured Text`_ in commit message,
86 |RCE| can use `Markdown`_ or `reStructured Text`_ in commit message,
87 code review messages, and inline comments. To set the default to either,
87 code review messages, and inline comments. To set the default to either,
88 select your preference from the drop-down menu on the
88 select your preference from the drop-down menu on the
89 :menuselection:`Admin --> Settings --> Visual` page and select
89 :menuselection:`Admin --> Settings --> Visual` page and select
90 :guilabel:`Save settings`.
90 :guilabel:`Save settings`.
91
91
92 .. _repo-stats:
92 .. _repo-stats:
93
93
94 Enabling Repository Statistics
94 Enabling Repository Statistics
95 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
95 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
96
96
97 To enable |repo| statistics, use the following steps:
97 To enable |repo| statistics, use the following steps:
98
98
99 1. From the |RCE| interface, open
99 1. From the |RCE| interface, open
100 :menuselection:`Admin --> Repositories` and select
100 :menuselection:`Admin --> Repositories` and select
101 :guilabel:`Edit` beside the |repo| for which you wish to enable statistics.
101 :guilabel:`Edit` beside the |repo| for which you wish to enable statistics.
102 2. Check the :guilabel:`Enable statistics` box, and select :guilabel:`Save`
102 2. Check the :guilabel:`Enable statistics` box, and select :guilabel:`Save`
103
103
104 .. _server-side-merge:
104 .. _server-side-merge:
105
105
106 Enabling Server-side Merging
106 Enabling Server-side Merging
107 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
107 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
108
108
109 To enable server-side merging, use the following steps:
109 To enable server-side merging, use the following steps:
110
110
111 1. From the |RCE| interface, open :menuselection:`Admin --> Settings --> VCS`
111 1. From the |RCE| interface, open :menuselection:`Admin --> Settings --> VCS`
112 2. Check the :guilabel:`Server-side merge` box, and select
112 2. Check the :guilabel:`Server-side merge` box, and select
113 :guilabel:`Save Settings`
113 :guilabel:`Save Settings`
114
114
115 If you encounter slow performance with server-side merging enabled, check the
115 If you encounter slow performance with server-side merging enabled, check the
116 speed at which your server is performing actions. When server-side merging is
116 speed at which your server is performing actions. When server-side merging is
117 enabled, the following actions occurs on the server.
117 enabled, the following actions occurs on the server.
118
118
119 * A |pr| is created in the database.
119 * A |pr| is created in the database.
120 * A shadow |repo| is created as a working environment for the |pr|.
120 * A shadow |repo| is created as a working environment for the |pr|.
121 * On display, |RCE| checks if the |pr| can be merged.
121 * On display, |RCE| checks if the |pr| can be merged.
122
122
123 To check how fast the shadow |repo| creation is occurring on your server, use
123 To check how fast the shadow |repo| creation is occurring on your server, use
124 the following steps:
124 the following steps:
125
125
126 1. Log into your server and create a directory in your |repos| folder.
126 1. Log into your server and create a directory in your |repos| folder.
127 2. Clone a |repo| that is showing slow performance and time the action.
127 2. Clone a |repo| that is showing slow performance and time the action.
128
128
129 .. code-block:: bash
129 .. code-block:: bash
130
130
131 # One option is to use the time command
131 # One option is to use the time command
132 $ time hg clone SOURCE_REPO TARGET
132 $ time hg clone SOURCE_REPO TARGET
133
133
134 .. _remap-rescan:
134 .. _remap-rescan:
135
135
136 Remap and Rescan Repositories
136 Remap and Rescan Repositories
137 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
137 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
138
138
139 You may want to Remap and rescan the |repos| that |RCE| is managing to ensure
139 You may want to Remap and rescan the |repos| that |RCE| is managing to ensure
140 the system is always up-to-date. This is useful after importing, deleting,
140 the system is always up-to-date. This is useful after importing, deleting,
141 or carrying out general cleaning up operations. To do this use the
141 or carrying out general cleaning up operations. To do this use the
142 following steps:
142 following steps:
143
143
144 1. From the |RCE|, open
144 1. From the |RCE|, open
145 :menuselection:`Admin --> Settings --> Remap and rescan`
145 :menuselection:`Admin --> Settings --> Remap and rescan`
146 2. Click :guilabel:`Rescan Repositories`
146 2. Click :guilabel:`Rescan Repositories`
147
147
148 Check the additional options if needed:
148 Check the additional options if needed:
149
149
150 * :guilabel:`Destroy old data`: Useful for purging deleted repository
150 * :guilabel:`Destroy old data`: Useful for purging deleted repository
151 information from the database.
151 information from the database.
152 * :guilabel:`Invalidate cache for all repositories`: Use this to completely
152 * :guilabel:`Invalidate cache for all repositories`: Use this to completely
153 remap all |repos|. Useful when importing or migrating |repos| to ensure all
153 remap all |repos|. Useful when importing or migrating |repos| to ensure all
154 new information is picked up.
154 new information is picked up.
155
155
156 .. _custom-hooks:
156 .. _custom-hooks:
157
157
158 Adding Custom Hooks
158 Adding Custom Hooks
159 ^^^^^^^^^^^^^^^^^^^
159 ^^^^^^^^^^^^^^^^^^^
160
160
161 To add custom hooks to your instance, use the following steps:
161 To add custom hooks to your instance, use the following steps:
162
162
163 1. Open :menuselection:`Admin --> Settings --> Hooks`
163 1. Open :menuselection:`Admin --> Settings --> Hooks`
164 2. Add your custom hook details, you can use a file path to specify custom
164 2. Add your custom hook details, you can use a file path to specify custom
165 hook scripts, for example: ``python:/path/to/custom_hook.py``
165 hook scripts, for example:
166 ``pretxnchangegroup.example`` with value ``python:/path/to/custom_hook.py:my_func_name``
166 3. Select :guilabel:`Save`
167 3. Select :guilabel:`Save`
167
168
168 Also, see the |RC| Extensions section of the :ref:`rc-tools` guide. |RC|
169 Also, see the |RC| Extensions section of the :ref:`rc-tools` guide. |RC|
169 Extensions can be used to add additional hooks to your instance and comes
170 Extensions can be used to add additional hooks to your instance and comes
170 with a number of pre-built plugins if you chose to install them.
171 with a number of pre-built plugins if you chose to install them.
171
172
172 .. _clear-repo-cache:
173 .. _clear-repo-cache:
173
174
174 Clearing |repo| cache
175 Clearing |repo| cache
175 ^^^^^^^^^^^^^^^^^^^^^
176 ^^^^^^^^^^^^^^^^^^^^^
176
177
177 If you need to clear the cache for a particular |repo|, use the following steps:
178 If you need to clear the cache for a particular |repo|, use the following steps:
178
179
179 1. Open :menuselection:`Admin --> Repositories` and select :guilabel:`Edit`
180 1. Open :menuselection:`Admin --> Repositories` and select :guilabel:`Edit`
180 beside the |repo| whose cache you wish to clear.
181 beside the |repo| whose cache you wish to clear.
181 2. On the |repo| settings page, go to the :guilabel:`Caches` tab and select
182 2. On the |repo| settings page, go to the :guilabel:`Caches` tab and select
182 :guilabel:`Invalidate repository cache`.
183 :guilabel:`Invalidate repository cache`.
183
184
184 .. _set-lang:
185 .. _set-lang:
185
186
186 Changing Default Language
187 Changing Default Language
187 ^^^^^^^^^^^^^^^^^^^^^^^^^
188 ^^^^^^^^^^^^^^^^^^^^^^^^^
188
189
189 To change the default language of a |RCE| instance, change the language code
190 To change the default language of a |RCE| instance, change the language code
190 in the :file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini` file. To
191 in the :file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini` file. To
191 do this, use the following steps.
192 do this, use the following steps.
192
193
193 1. Open the :file:`rhodecode.ini` file and set the required language code.
194 1. Open the :file:`rhodecode.ini` file and set the required language code.
194
195
195 .. code-block:: ini
196 .. code-block:: ini
196
197
197 ## Optional Languages
198 ## Optional Languages
198 ## en(default), de, fr, it, ja, pl, pt, ru, zh
199 ## en(default), de, fr, it, ja, pl, pt, ru, zh
199 lang = de
200 lang = de
200
201
201 2. Restart the |RCE| instance and check that the language has been updated.
202 2. Restart the |RCE| instance and check that the language has been updated.
202
203
203 .. code-block:: bash
204 .. code-block:: bash
204
205
205 $ rccontrol restart enterprise-2
206 $ rccontrol restart enterprise-2
206 Instance "enterprise-2" successfully stopped.
207 Instance "enterprise-2" successfully stopped.
207 Instance "enterprise-2" successfully started.
208 Instance "enterprise-2" successfully started.
208
209
209 .. image:: ../images/language.png
210 .. image:: ../images/language.png
210
211
211 .. _set-repo-pub:
212 .. _set-repo-pub:
212
213
213 Setting Repositories to Publish
214 Setting Repositories to Publish
214 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
215 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
215
216
216 To automatically promote your local |repos| to public after pushing to |RCE|,
217 To automatically promote your local |repos| to public after pushing to |RCE|,
217 enable the :guilabel:`Set repositories as publishing` option on the
218 enable the :guilabel:`Set repositories as publishing` option on the
218 :menuselection:`Admin --> Settings --> VCS` page.
219 :menuselection:`Admin --> Settings --> VCS` page.
219
220
220 .. note::
221 .. note::
221
222
222 This option is enabled by default on most |RCE| versions, but if upgrading
223 This option is enabled by default on most |RCE| versions, but if upgrading
223 from a 1.7.x version it could be disabled on upgrade due to inheriting
224 from a 1.7.x version it could be disabled on upgrade due to inheriting
224 older default settings.
225 older default settings.
225
226
226 .. _ping:
227 .. _ping:
227
228
228 Pinging the |RCE| Server
229 Pinging the |RCE| Server
229 ^^^^^^^^^^^^^^^^^^^^^^^^
230 ^^^^^^^^^^^^^^^^^^^^^^^^
230
231
231 You can check the IP Address of your |RCE| instance using the
232 You can check the IP Address of your |RCE| instance using the
232 following URL: ``{instance-URL}/_admin/ping``.
233 following URL: ``{instance-URL}/_admin/ping``.
233
234
234 .. code-block:: bash
235 .. code-block:: bash
235
236
236 $ curl https://your.rhodecode.url/_admin/ping
237 $ curl https://your.rhodecode.url/_admin/ping
237 pong[rce-7880] => 203.0.113.23
238 pong[rce-7880] => 203.0.113.23
238
239
239 .. _Markdown: http://daringfireball.net/projects/markdown/
240 .. _Markdown: http://daringfireball.net/projects/markdown/
240 .. _reStructured Text: http://docutils.sourceforge.net/docs/index.html
241 .. _reStructured Text: http://docutils.sourceforge.net/docs/index.html
@@ -1,167 +1,200 b''
1 .. _svn-http:
1 .. _svn-http:
2
2
3 |svn| With Write Over HTTP
3 |svn| With Write Over HTTP
4 ^^^^^^^^^^^^^^^^^^^^^^^^^^
4 ^^^^^^^^^^^^^^^^^^^^^^^^^^
5
5
6 To use |svn| with read/write support over the |svn| HTTP protocol, you have to
6 To use |svn| with read/write support over the |svn| HTTP protocol, you have to
7 configure the HTTP |svn| backend.
7 configure the HTTP |svn| backend.
8
8
9 Prerequisites
9 Prerequisites
10 =============
10 =============
11
11
12 - Enable HTTP support inside the admin VCS settings on your |RCE| instance
12 - Enable HTTP support inside the admin VCS settings on your |RCE| instance
13 - You need to install the following tools on the machine that is running an
13 - You need to install the following tools on the machine that is running an
14 instance of |RCE|:
14 instance of |RCE|:
15 ``Apache HTTP Server`` and ``mod_dav_svn``.
15 ``Apache HTTP Server`` and ``mod_dav_svn``.
16
16
17
17
18 .. tip::
18 .. tip::
19
19
20 We recommend using Wandisco repositories which provide latest SVN versions
20 We recommend using Wandisco repositories which provide latest SVN versions
21 for most platforms. Below is example how to add the wandisco repositories
21 for most platforms.
22 for Ubuntu.
22 Here is an example how to add the Wandisco repositories for Ubuntu.
23
23
24 .. code-block:: bash
24 .. code-block:: bash
25
25
26 $ sudo sh -c 'echo "deb http://opensource.wandisco.com/ubuntu `lsb_release -cs` svn19" >> /etc/apt/sources.list.d/subversion19.list'
26 $ sudo sh -c 'echo "deb http://opensource.wandisco.com/ubuntu `lsb_release -cs` svn19" >> /etc/apt/sources.list.d/subversion19.list'
27 $ sudo wget -q http://opensource.wandisco.com/wandisco-debian.gpg -O- | sudo apt-key add -
27 $ sudo wget -q http://opensource.wandisco.com/wandisco-debian.gpg -O- | sudo apt-key add -
28 $ sudo apt-get update
28 $ sudo apt-get update
29
29
30
30 Here is an example how to add the Wandisco repositories for Centos/Redhat. Using
31 Using Ubuntu 14.04/16.04 Distribution as an example execute the following to
31 a yum config
32 install required components:
33
32
34 .. code-block:: bash
33 .. code-block:: bash
35
34
36 $ sudo apt-get install apache2 libapache2-mod-svn
35 [wandisco-Git]
36 name=CentOS-6 - Wandisco Git
37 baseurl=http://opensource.wandisco.com/centos/6/git/$basearch/
38 enabled=1
39 gpgcheck=1
40 gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
41
42
37
43
38 Once installed you need to enable ``dav_svn``:
44 Example installation of required components for Ubuntu platform:
45
46 .. code-block:: bash
47
48 $ sudo apt-get install apache2
49 $ sudo apt-get install libapache2-mod-svn
50
51 Once installed you need to enable ``dav_svn`` on Ubuntu:
39
52
40 .. code-block:: bash
53 .. code-block:: bash
41
54
42 $ sudo a2enmod dav_svn
55 $ sudo a2enmod dav_svn
43 $ sudo a2enmod headers
56 $ sudo a2enmod headers
44 $ sudo a2enmod authn_anon
57 $ sudo a2enmod authn_anon
45
58
46
59
60 Example installation of required components for RedHat/CentOS platform:
61
62 .. code-block:: bash
63
64 $ sudo yum install httpd
65 $ sudo yum install subversion mod_dav_svn
66
67
68 Once installed you need to enable ``dav_svn`` on RedHat/CentOS:
69
70 .. code-block:: bash
71
72 sudo vi /etc/httpd/conf.modules.d/10-subversion.conf
73 ## The file should read:
74
75 LoadModule dav_svn_module modules/mod_dav_svn.so
76 LoadModule headers_module modules/mod_headers.so
77 LoadModule authn_anon_module modules/mod_authn_anon.so
78
79
47 Configuring Apache Setup
80 Configuring Apache Setup
48 ========================
81 ========================
49
82
50 .. tip::
83 .. tip::
51
84
52 It is recommended to run Apache on a port other than 80, due to possible
85 It is recommended to run Apache on a port other than 80, due to possible
53 conflicts with other HTTP servers like nginx. To do this, set the
86 conflicts with other HTTP servers like nginx. To do this, set the
54 ``Listen`` parameter in the ``/etc/apache2/ports.conf`` file, for example
87 ``Listen`` parameter in the ``/etc/apache2/ports.conf`` file, for example
55 ``Listen 8090``.
88 ``Listen 8090``.
56
89
57
90
58 .. warning::
91 .. warning::
59
92
60 Make sure your Apache instance which runs the mod_dav_svn module is
93 Make sure your Apache instance which runs the mod_dav_svn module is
61 only accessible by |RCE|. Otherwise everyone is able to browse
94 only accessible by |RCE|. Otherwise everyone is able to browse
62 the repositories or run subversion operations (checkout/commit/etc.).
95 the repositories or run subversion operations (checkout/commit/etc.).
63
96
64 It is also recommended to run apache as the same user as |RCE|, otherwise
97 It is also recommended to run apache as the same user as |RCE|, otherwise
65 permission issues could occur. To do this edit the ``/etc/apache2/envvars``
98 permission issues could occur. To do this edit the ``/etc/apache2/envvars``
66
99
67 .. code-block:: apache
100 .. code-block:: apache
68
101
69 export APACHE_RUN_USER=rhodecode
102 export APACHE_RUN_USER=rhodecode
70 export APACHE_RUN_GROUP=rhodecode
103 export APACHE_RUN_GROUP=rhodecode
71
104
72 1. To configure Apache, create and edit a virtual hosts file, for example
105 1. To configure Apache, create and edit a virtual hosts file, for example
73 :file:`/etc/apache2/sites-enabled/default.conf`. Below is an example
106 :file:`/etc/apache2/sites-enabled/default.conf`. Below is an example
74 how to use one with auto-generated config ```mod_dav_svn.conf```
107 how to use one with auto-generated config ```mod_dav_svn.conf```
75 from configured |RCE| instance.
108 from configured |RCE| instance.
76
109
77 .. code-block:: apache
110 .. code-block:: apache
78
111
79 <VirtualHost *:8090>
112 <VirtualHost *:8090>
80 ServerAdmin rhodecode-admin@localhost
113 ServerAdmin rhodecode-admin@localhost
81 DocumentRoot /var/www/html
114 DocumentRoot /var/www/html
82 ErrorLog ${'${APACHE_LOG_DIR}'}/error.log
115 ErrorLog ${'${APACHE_LOG_DIR}'}/error.log
83 CustomLog ${'${APACHE_LOG_DIR}'}/access.log combined
116 CustomLog ${'${APACHE_LOG_DIR}'}/access.log combined
84 LogLevel info
117 LogLevel info
85 # allows custom host names, prevents 400 errors on checkout
118 # allows custom host names, prevents 400 errors on checkout
86 HttpProtocolOptions Unsafe
119 HttpProtocolOptions Unsafe
87 Include /home/user/.rccontrol/enterprise-1/mod_dav_svn.conf
120 Include /home/user/.rccontrol/enterprise-1/mod_dav_svn.conf
88 </VirtualHost>
121 </VirtualHost>
89
122
90
123
91 2. Go to the :menuselection:`Admin --> Settings --> VCS` page, and
124 2. Go to the :menuselection:`Admin --> Settings --> VCS` page, and
92 enable :guilabel:`Proxy Subversion HTTP requests`, and specify the
125 enable :guilabel:`Proxy Subversion HTTP requests`, and specify the
93 :guilabel:`Subversion HTTP Server URL`.
126 :guilabel:`Subversion HTTP Server URL`.
94
127
95 3. Open the |RCE| configuration file,
128 3. Open the |RCE| configuration file,
96 :file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini`
129 :file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini`
97
130
98 4. Add the following configuration option in the ``[app:main]``
131 4. Add the following configuration option in the ``[app:main]``
99 section if you don't have it yet.
132 section if you don't have it yet.
100
133
101 This enables mapping of the created |RCE| repo groups into special
134 This enables mapping of the created |RCE| repo groups into special
102 |svn| paths. Each time a new repository group is created, the system will
135 |svn| paths. Each time a new repository group is created, the system will
103 update the template file and create new mapping. Apache web server needs to
136 update the template file and create new mapping. Apache web server needs to
104 be reloaded to pick up the changes on this file.
137 be reloaded to pick up the changes on this file.
105 To do this, simply configure `svn.proxy.reload_cmd` inside the .ini file.
138 To do this, simply configure `svn.proxy.reload_cmd` inside the .ini file.
106 Example configuration:
139 Example configuration:
107
140
108
141
109 .. code-block:: ini
142 .. code-block:: ini
110
143
111 ############################################################
144 ############################################################
112 ### Subversion proxy support (mod_dav_svn) ###
145 ### Subversion proxy support (mod_dav_svn) ###
113 ### Maps RhodeCode repo groups into SVN paths for Apache ###
146 ### Maps RhodeCode repo groups into SVN paths for Apache ###
114 ############################################################
147 ############################################################
115 ## Enable or disable the config file generation.
148 ## Enable or disable the config file generation.
116 svn.proxy.generate_config = true
149 svn.proxy.generate_config = true
117 ## Generate config file with `SVNListParentPath` set to `On`.
150 ## Generate config file with `SVNListParentPath` set to `On`.
118 svn.proxy.list_parent_path = true
151 svn.proxy.list_parent_path = true
119 ## Set location and file name of generated config file.
152 ## Set location and file name of generated config file.
120 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
153 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
121 ## Used as a prefix to the <Location> block in the generated config file.
154 ## Used as a prefix to the <Location> block in the generated config file.
122 ## In most cases it should be set to `/`.
155 ## In most cases it should be set to `/`.
123 svn.proxy.location_root = /
156 svn.proxy.location_root = /
124 ## Command to reload the mod dav svn configuration on change.
157 ## Command to reload the mod dav svn configuration on change.
125 ## Example: `/etc/init.d/apache2 reload`
158 ## Example: `/etc/init.d/apache2 reload`
126 svn.proxy.reload_cmd = /etc/init.d/apache2 reload
159 svn.proxy.reload_cmd = /etc/init.d/apache2 reload
127 ## If the timeout expires before the reload command finishes, the command will
160 ## If the timeout expires before the reload command finishes, the command will
128 ## be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
161 ## be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
129 #svn.proxy.reload_timeout = 10
162 #svn.proxy.reload_timeout = 10
130
163
131
164
132 This would create a special template file called ```mod_dav_svn.conf```. We
165 This would create a special template file called ```mod_dav_svn.conf```. We
133 used that file path in the apache config above inside the Include statement.
166 used that file path in the apache config above inside the Include statement.
134 It's also possible to manually generate the config from the
167 It's also possible to manually generate the config from the
135 :menuselection:`Admin --> Settings --> VCS` page by clicking a
168 :menuselection:`Admin --> Settings --> VCS` page by clicking a
136 `Generate Apache Config` button.
169 `Generate Apache Config` button.
137
170
138 5. Now only things left is to enable svn support, and generate the initial
171 5. Now only things left is to enable svn support, and generate the initial
139 configuration.
172 configuration.
140
173
141 - Select `Proxy subversion HTTP requests` checkbox
174 - Select `Proxy subversion HTTP requests` checkbox
142 - Enter http://localhost:8090 into `Subversion HTTP Server URL`
175 - Enter http://localhost:8090 into `Subversion HTTP Server URL`
143 - Click the `Generate Apache Config` button.
176 - Click the `Generate Apache Config` button.
144
177
145 This config will be automatically re-generated once an user-groups is added
178 This config will be automatically re-generated once an user-groups is added
146 to properly map the additional paths generated.
179 to properly map the additional paths generated.
147
180
148
181
149
182
150 Using |svn|
183 Using |svn|
151 ===========
184 ===========
152
185
153 Once |svn| has been enabled on your instance, you can use it with the
186 Once |svn| has been enabled on your instance, you can use it with the
154 following examples. For more |svn| information, see the `Subversion Red Book`_
187 following examples. For more |svn| information, see the `Subversion Red Book`_
155
188
156 .. code-block:: bash
189 .. code-block:: bash
157
190
158 # To clone a repository
191 # To clone a repository
159 svn checkout http://my-svn-server.example.com/my-svn-repo
192 svn checkout http://my-svn-server.example.com/my-svn-repo
160
193
161 # svn commit
194 # svn commit
162 svn commit
195 svn commit
163
196
164
197
165 .. _Subversion Red Book: http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.ref.svn
198 .. _Subversion Red Book: http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.ref.svn
166
199
167 .. _Ask Ubuntu: http://askubuntu.com/questions/162391/how-do-i-fix-my-locale-issue No newline at end of file
200 .. _Ask Ubuntu: http://askubuntu.com/questions/162391/how-do-i-fix-my-locale-issue
@@ -1,60 +1,16 b''
1
1
2 =======================
2 =======================
3 Dependency management
3 Dependency management
4 =======================
4 =======================
5
5
6
6
7 Overview
7 Overview
8 ========
8 ========
9
9
10 We use the Nix package manager to handle our dependencies. In general we use the
10 We use the Nix package manager to handle our dependencies. In general we use the
11 packages out of the package collection `nixpkgs`. For frequently changing
11 packages out of the package collection `nixpkgs`. For frequently changing
12 dependencies for Python and JavaScript we use the tools which are described in
12 dependencies for Python and JavaScript we use the tools which are described in
13 this section to generate the needed Nix derivations.
13 this section to generate the needed Nix derivations.
14
14
15
15
16 Python dependencies
16 Please check pkgs/README.rst file for mor information on how to build the packages.
17 ===================
18
19 We use the tool `pip2nix` to generate the Nix derivations for our Python
20 dependencies.
21
22 Generating the dependencies should be done with the following command:
23
24 .. code:: shell
25
26 pip2nix generate --license
27
28
29 .. note::
30
31 License extraction support is still experimental, use the version from the
32 following pull request: https://github.com/ktosiek/pip2nix/pull/30
33
34
35
36 Node dependencies
37 =================
38
39 After adding new dependencies via ``npm install --save``, use `node2nix` to
40 update the corresponding Nix derivations:
41
42 .. code:: shell
43
44 cd pkgs
45 node2nix --input ../package.json \
46 -o node-packages.nix \
47 -e node-env.nix \
48 -c node-default.nix \
49 -d --flatten
50
51
52 Bower dependencies
53 ==================
54
55 Frontend dependencies are managed based on `bower`, with `bower2nix` a tool
56 exists which can generate the needed Nix derivations:
57
58 .. code:: shell
59
60 bower2nix bower.json pkgs/bower-packages.nix
@@ -1,25 +1,36 b''
1 .. _extensions-hooks-ref:
1 .. _extensions-hooks-ref:
2
2
3 Extensions & Hooks
3 Extensions & Hooks
4 ==================
4 ==================
5
5
6 The extensions & hooks section references three concepts regularly,
6 The extensions & hooks section references three concepts regularly,
7 so to clarify what is meant each time, read the following definitions:
7 so to clarify what is meant each time, read the following definitions:
8
8
9 * **Plugin**: A Plugin is software that adds a specific feature to
9 * **Plugin**: A Plugin is software that adds a specific feature to
10 an existing software application.
10 an existing software application.
11 * **Extension**: An extension extends the capabilities of,
11 * **Extension**: An extension extends the capabilities of,
12 or the data available to, an existing software application.
12 or the data available to, an existing software application.
13 * **Hook**: A hook intercepts function calls, messages, or events passed
13 * **Hook**: A hook intercepts function calls, messages, or events passed
14 between software components and can be used to trigger plugins, or their
14 between software components and can be used to trigger plugins, or their
15 extensions.
15 extensions.
16
16
17 .. toctree::
17
18 Hooks
19 -----
20
21 Within |RCM| there are two types of supported hooks.
18
22
19 rcx
23 * **Internal built-in hooks**: The internal |hg|, |git| or |svn| hooks are
20 install-ext
24 triggered by different VCS operations, like push, pull,
21 config-ext
25 or clone and are non-configurable, but you can add your own VCS hooks,
22 extensions
26 see :ref:`custom-hooks`.
23 hooks
27 * **Custom rcextensions hooks**: User defined hooks centre around the lifecycle of
24 full-blown-example
28 certain actions such are |repo| creation, user creation etc. The actions
25 int-slack
29 these hooks trigger can be rejected based on the API permissions of the
30 user calling them.
31
32 On instructions how to use the custom `rcextensions`
33 see :ref:`integrations-rcextensions` section.
34
35
36
@@ -1,34 +1,30 b''
1 .. _set-up-mail:
1 .. _set-up-mail:
2
2
3 Set up Email
3 Set up Email
4 ------------
4 ------------
5
5
6 To setup email with your |RCM| instance, open the default
6 To setup email with your |RCM| instance, open the default
7 :file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini`
7 :file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini`
8 file and uncomment and configure the email section. If it is not there,
8 file and uncomment and configure the email section. If it is not there,
9 use the below example to insert it.
9 use the below example to insert it.
10
10
11 Once configured you can check the settings for your |RCM| instance on the
11 Once configured you can check the settings for your |RCM| instance on the
12 :menuselection:`Admin --> Settings --> Email` page.
12 :menuselection:`Admin --> Settings --> Email` page.
13
13
14 .. code-block:: ini
14 .. code-block:: ini
15
15
16 ################################################################################
16 ################################################################################
17 ## Uncomment and replace with the email address which should receive ##
17 ## Uncomment and replace with the email address which should receive ##
18 ## any error reports after an application crash ##
18 ## any error reports after an application crash ##
19 ## Additionally these settings will be used by the RhodeCode mailing system ##
19 ## Additionally these settings will be used by the RhodeCode mailing system ##
20 ################################################################################
20 ################################################################################
21 #email_to = admin@localhost
21 #email_to = admin@localhost
22 #error_email_from = paste_error@localhost
23 #app_email_from = rhodecode-noreply@localhost
22 #app_email_from = rhodecode-noreply@localhost
24 #error_message =
25 #email_prefix = [RhodeCode]
23 #email_prefix = [RhodeCode]
26
24
27 #smtp_server = mail.server.com
25 #smtp_server = mail.server.com
28 #smtp_username =
26 #smtp_username =
29 #smtp_password =
27 #smtp_password =
30 #smtp_port =
28 #smtp_port =
31 #smtp_use_tls = false
29 #smtp_use_tls = false
32 #smtp_use_ssl = true
30 #smtp_use_ssl = true
33 ## Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
34 #smtp_auth =
@@ -1,57 +1,60 b''
1 .. _integrations:
1 .. _integrations:
2
2
3 Integrations
3 Integrations
4 ------------
4 ------------
5
5
6 Rhodecode supports integrations with external services for various events,
6 |RCE| supports integrations with external services for various events,
7 such as commit pushes and pull requests. Multiple integrations of the same type
7 such as commit pushes and pull requests. Multiple integrations of the same type
8 can be added at the same time; this is useful for posting different events to
8 can be added at the same time; this is useful for posting different events to
9 different Slack channels, for example.
9 different Slack channels, for example.
10
10
11 Supported integrations
11 Supported integrations
12 ^^^^^^^^^^^^^^^^^^^^^^
12 ^^^^^^^^^^^^^^^^^^^^^^
13
13
14 ============================ ============ =====================================
14 ================================ ============ ========================================
15 Type/Name |RC| Edition Description
15 Type/Name |RC| Edition Description
16 ============================ ============ =====================================
16 ================================ ============ ========================================
17 :ref:`integrations-slack` |RCCEshort| https://slack.com/
17 :ref:`integrations-webhook` |RCCEshort| Trigger events as `json` to a custom url
18 :ref:`integrations-hipchat` |RCCEshort| https://www.hipchat.com/
18 :ref:`integrations-slack` |RCCEshort| Integrate with https://slack.com/
19 :ref:`integrations-webhook` |RCCEshort| POST events as `json` to a custom url
19 :ref:`integrations-hipchat` |RCCEshort| Integrate with https://www.hipchat.com/
20 :ref:`integrations-email` |RCCEshort| Send repo push commits by email
20 :ref:`integrations-ci` |RCCEshort| Trigger Builds for Common CI Systems
21 :ref:`integrations-ci` |RCCEshort| Trigger Builds for Common CI Systems
21 :ref:`integrations-email` |RCCEshort| Send repo push commits by email
22 :ref:`integrations-rcextensions` |RCCEshort| Advanced low-level integration framework
23
22 :ref:`integrations-jenkins` |RCEEshort| Trigger Builds for Jenkins CI System
24 :ref:`integrations-jenkins` |RCEEshort| Trigger Builds for Jenkins CI System
23 :ref:`integrations-redmine` |RCEEshort| Close/Resolve/Reference Redmine issues
25 :ref:`integrations-redmine` |RCEEshort| Close/Resolve/Reference Redmine issues
24 :ref:`integrations-jira` |RCEEshort| Close/Resolve/Reference JIRA issues
26 :ref:`integrations-jira` |RCEEshort| Close/Resolve/Reference JIRA issues
25 ============================ ============ =====================================
27 ================================ ============ ========================================
26
28
27 .. _creating-integrations:
29 .. _creating-integrations:
28
30
29 Creating an Integration
31 Creating an Integration
30 ^^^^^^^^^^^^^^^^^^^^^^^
32 ^^^^^^^^^^^^^^^^^^^^^^^
31
33
32 Integrations can be added globally via the admin UI:
34 Integrations can be added globally via the admin UI:
33
35
34 :menuselection:`Admin --> Integrations`
36 :menuselection:`Admin --> Integrations`
35
37
36 or per repository in each repository's settings:
38 or per repository in each repository's settings:
37
39
38 :menuselection:`Admin --> Repositories --> Edit --> Integrations`
40 :menuselection:`Admin --> Repositories --> Edit --> Integrations`
39
41
40 To create an integration, select the type from the list in the *Create New
42 To create an integration, select the type from the list in the *Create New
41 Integration* section.
43 Integration* section.
42
44
43 The *Current Integrations* section shows existing integrations that have been
45 The *Current Integrations* section shows existing integrations that have been
44 created along with their type (eg. Slack) and enabled status.
46 created along with their type (eg. Slack) and enabled status.
45
47
46 See pages specific to each type of integration for more instructions:
48 See pages specific to each type of integration for more instructions:
47
49
48 .. toctree::
50 .. toctree::
49
51
50 slack
52 slack
51 hipchat
53 hipchat
52 redmine
54 redmine
53 jira
55 jira
54 webhook
56 webhook
55 email
57 email
56 ci
58 ci
57 jenkins
59 jenkins
60 integrations-rcextensions
@@ -1,123 +1,124 b''
1 .. _rhodecode-release-notes-ref:
1 .. _rhodecode-release-notes-ref:
2
2
3 Release Notes
3 Release Notes
4 =============
4 =============
5
5
6 |RCE| 4.x Versions
6 |RCE| 4.x Versions
7 ------------------
7 ------------------
8
8
9 .. toctree::
9 .. toctree::
10 :maxdepth: 1
10 :maxdepth: 1
11
11
12 release-notes-4.14.0.rst
12 release-notes-4.13.3.rst
13 release-notes-4.13.3.rst
13 release-notes-4.13.2.rst
14 release-notes-4.13.2.rst
14 release-notes-4.13.1.rst
15 release-notes-4.13.1.rst
15 release-notes-4.13.0.rst
16 release-notes-4.13.0.rst
16 release-notes-4.12.4.rst
17 release-notes-4.12.4.rst
17 release-notes-4.12.3.rst
18 release-notes-4.12.3.rst
18 release-notes-4.12.2.rst
19 release-notes-4.12.2.rst
19 release-notes-4.12.1.rst
20 release-notes-4.12.1.rst
20 release-notes-4.12.0.rst
21 release-notes-4.12.0.rst
21 release-notes-4.11.6.rst
22 release-notes-4.11.6.rst
22 release-notes-4.11.5.rst
23 release-notes-4.11.5.rst
23 release-notes-4.11.4.rst
24 release-notes-4.11.4.rst
24 release-notes-4.11.3.rst
25 release-notes-4.11.3.rst
25 release-notes-4.11.2.rst
26 release-notes-4.11.2.rst
26 release-notes-4.11.1.rst
27 release-notes-4.11.1.rst
27 release-notes-4.11.0.rst
28 release-notes-4.11.0.rst
28 release-notes-4.10.6.rst
29 release-notes-4.10.6.rst
29 release-notes-4.10.5.rst
30 release-notes-4.10.5.rst
30 release-notes-4.10.4.rst
31 release-notes-4.10.4.rst
31 release-notes-4.10.3.rst
32 release-notes-4.10.3.rst
32 release-notes-4.10.2.rst
33 release-notes-4.10.2.rst
33 release-notes-4.10.1.rst
34 release-notes-4.10.1.rst
34 release-notes-4.10.0.rst
35 release-notes-4.10.0.rst
35 release-notes-4.9.1.rst
36 release-notes-4.9.1.rst
36 release-notes-4.9.0.rst
37 release-notes-4.9.0.rst
37 release-notes-4.8.0.rst
38 release-notes-4.8.0.rst
38 release-notes-4.7.2.rst
39 release-notes-4.7.2.rst
39 release-notes-4.7.1.rst
40 release-notes-4.7.1.rst
40 release-notes-4.7.0.rst
41 release-notes-4.7.0.rst
41 release-notes-4.6.1.rst
42 release-notes-4.6.1.rst
42 release-notes-4.6.0.rst
43 release-notes-4.6.0.rst
43 release-notes-4.5.2.rst
44 release-notes-4.5.2.rst
44 release-notes-4.5.1.rst
45 release-notes-4.5.1.rst
45 release-notes-4.5.0.rst
46 release-notes-4.5.0.rst
46 release-notes-4.4.2.rst
47 release-notes-4.4.2.rst
47 release-notes-4.4.1.rst
48 release-notes-4.4.1.rst
48 release-notes-4.4.0.rst
49 release-notes-4.4.0.rst
49 release-notes-4.3.1.rst
50 release-notes-4.3.1.rst
50 release-notes-4.3.0.rst
51 release-notes-4.3.0.rst
51 release-notes-4.2.1.rst
52 release-notes-4.2.1.rst
52 release-notes-4.2.0.rst
53 release-notes-4.2.0.rst
53 release-notes-4.1.2.rst
54 release-notes-4.1.2.rst
54 release-notes-4.1.1.rst
55 release-notes-4.1.1.rst
55 release-notes-4.1.0.rst
56 release-notes-4.1.0.rst
56 release-notes-4.0.1.rst
57 release-notes-4.0.1.rst
57 release-notes-4.0.0.rst
58 release-notes-4.0.0.rst
58
59
59 |RCE| 3.x Versions
60 |RCE| 3.x Versions
60 ------------------
61 ------------------
61
62
62 .. toctree::
63 .. toctree::
63 :maxdepth: 1
64 :maxdepth: 1
64
65
65 release-notes-3.8.4.rst
66 release-notes-3.8.4.rst
66 release-notes-3.8.3.rst
67 release-notes-3.8.3.rst
67 release-notes-3.8.2.rst
68 release-notes-3.8.2.rst
68 release-notes-3.8.1.rst
69 release-notes-3.8.1.rst
69 release-notes-3.8.0.rst
70 release-notes-3.8.0.rst
70 release-notes-3.7.1.rst
71 release-notes-3.7.1.rst
71 release-notes-3.7.0.rst
72 release-notes-3.7.0.rst
72 release-notes-3.6.1.rst
73 release-notes-3.6.1.rst
73 release-notes-3.6.0.rst
74 release-notes-3.6.0.rst
74 release-notes-3.5.2.rst
75 release-notes-3.5.2.rst
75 release-notes-3.5.1.rst
76 release-notes-3.5.1.rst
76 release-notes-3.5.0.rst
77 release-notes-3.5.0.rst
77 release-notes-3.4.1.rst
78 release-notes-3.4.1.rst
78 release-notes-3.4.0.rst
79 release-notes-3.4.0.rst
79 release-notes-3.3.4.rst
80 release-notes-3.3.4.rst
80 release-notes-3.3.3.rst
81 release-notes-3.3.3.rst
81 release-notes-3.3.2.rst
82 release-notes-3.3.2.rst
82 release-notes-3.3.1.rst
83 release-notes-3.3.1.rst
83 release-notes-3.3.0.rst
84 release-notes-3.3.0.rst
84 release-notes-3.2.3.rst
85 release-notes-3.2.3.rst
85 release-notes-3.2.2.rst
86 release-notes-3.2.2.rst
86 release-notes-3.2.1.rst
87 release-notes-3.2.1.rst
87 release-notes-3.2.0.rst
88 release-notes-3.2.0.rst
88 release-notes-3.1.1.rst
89 release-notes-3.1.1.rst
89 release-notes-3.1.0.rst
90 release-notes-3.1.0.rst
90 release-notes-3.0.2.rst
91 release-notes-3.0.2.rst
91 release-notes-3.0.1.rst
92 release-notes-3.0.1.rst
92 release-notes-3.0.0.rst
93 release-notes-3.0.0.rst
93
94
94 |RCE| 2.x Versions
95 |RCE| 2.x Versions
95 ------------------
96 ------------------
96
97
97 .. toctree::
98 .. toctree::
98 :maxdepth: 1
99 :maxdepth: 1
99
100
100 release-notes-2.2.8.rst
101 release-notes-2.2.8.rst
101 release-notes-2.2.7.rst
102 release-notes-2.2.7.rst
102 release-notes-2.2.6.rst
103 release-notes-2.2.6.rst
103 release-notes-2.2.5.rst
104 release-notes-2.2.5.rst
104 release-notes-2.2.4.rst
105 release-notes-2.2.4.rst
105 release-notes-2.2.3.rst
106 release-notes-2.2.3.rst
106 release-notes-2.2.2.rst
107 release-notes-2.2.2.rst
107 release-notes-2.2.1.rst
108 release-notes-2.2.1.rst
108 release-notes-2.2.0.rst
109 release-notes-2.2.0.rst
109 release-notes-2.1.0.rst
110 release-notes-2.1.0.rst
110 release-notes-2.0.2.rst
111 release-notes-2.0.2.rst
111 release-notes-2.0.1.rst
112 release-notes-2.0.1.rst
112 release-notes-2.0.0.rst
113 release-notes-2.0.0.rst
113
114
114 |RCE| 1.x Versions
115 |RCE| 1.x Versions
115 ------------------
116 ------------------
116
117
117 .. toctree::
118 .. toctree::
118 :maxdepth: 1
119 :maxdepth: 1
119
120
120 release-notes-1.7.2.rst
121 release-notes-1.7.2.rst
121 release-notes-1.7.1.rst
122 release-notes-1.7.1.rst
122 release-notes-1.7.0.rst
123 release-notes-1.7.0.rst
123 release-notes-1.6.0.rst
124 release-notes-1.6.0.rst
@@ -1,13 +1,13 b''
1 .menuselection, .guilabel {
1 .menuselection, .guilabel {
2 font-size: .90em;
2 font-size: .90em;
3 font-family: "proximanovaregular", "Proxima Nova Regular", "Proxima Nova", sans-serif;
3 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
4 font-style: oblique;
4 font-style: oblique;
5 }
5 }
6
6
7 .version{
7 .version {
8 display: none;
8 display: none;
9 }
9 }
10
10
11 .pre{
11 .pre {
12 color:#000
12 color: #000
13 }
13 }
@@ -1,677 +1,578 b''
1 .. _tools-cli:
1 .. _tools-cli:
2
2
3 |RCT| CLI
3 |RCT| CLI
4 ---------
4 ---------
5
5
6 The commands available with |RCT| can be split into three categories:
6 The commands available with |RCT| can be split into three categories:
7
7
8 - Remotely executable commands that can be run from your local machine once you
8 - Remotely executable commands that can be run from your local machine once you
9 have your connection details to |RCE| configured.
9 have your connection details to |RCE| configured.
10 - Locally executable commands the can be run on the server to carry out
10 - Locally executable commands the can be run on the server to carry out
11 general maintenance.
11 general maintenance.
12 - Local configuration commands used to help set up your |RCT| configuration.
12 - Local configuration commands used to help set up your |RCT| configuration.
13
13
14
14
15 rhodecode-tools
15 rhodecode-tools
16 ---------------
16 ---------------
17
17
18 Use |RCT| to setup automation, run the indexer, and install extensions for
18 Use |RCT| to setup automation, run the indexer, and install extensions for
19 your |RCM| instances. Options:
19 your |RCM| instances. Options:
20
20
21 .. rst-class:: dl-horizontal
21 .. rst-class:: dl-horizontal
22
22
23 \ - -apihost <api_host>
23 \ - -apihost <api_host>
24 Set the API host value.
24 Set the API host value.
25
25
26 \ - -apikey <apikey_value>
26 \ - -apikey <apikey_value>
27 Set the API key value.
27 Set the API key value.
28
28
29 \-c, - -config <config_file>
29 \-c, - -config <config_file>
30 Create a configuration file. The default file is created
30 Create a configuration file. The default file is created
31 in ``~/.rhoderc``
31 in ``~/.rhoderc``
32
32
33 \ - -save-config
33 \ - -save-config
34 Save the configuration file.
34 Save the configuration file.
35
35
36 \ - -show-config
36 \ - -show-config
37 Show the current configuration values.
37 Show the current configuration values.
38
38
39 \ - -format {json,pretty}
39 \ - -format {json,pretty}
40 Set the formatted representation.
40 Set the formatted representation.
41
41
42 Example usage:
42 Example usage:
43
43
44 .. code-block:: bash
44 .. code-block:: bash
45
45
46 $ rhodecode-tools --apikey=key --apihost=http://rhodecode.server \
46 $ rhodecode-tools --apikey=key --apihost=http://rhodecode.server \
47 --save-config
47 --save-config
48
48
49 rhodecode-api
49 rhodecode-api
50 -------------
50 -------------
51
51
52 The |RC| API lets you connect to |RCE| and carry out management tasks from a
52 The |RC| API lets you connect to |RCE| and carry out management tasks from a
53 remote machine, for more information about the API, see the :ref:`api`. To
53 remote machine, for more information about the API, see the :ref:`api`. To
54 pass arguments on the command-line use the ``method:option`` syntax.
54 pass arguments on the command-line use the ``method:option`` syntax.
55
55
56 Example usage:
56 Example usage:
57
57
58 .. code-block:: bash
58 .. code-block:: bash
59
59
60 # Run the get_repos API call and sample output
60 # Run the get_repos API call and sample output
61 $ rhodecode-api --instance-name=enterprise-1 create_repo \
61 $ rhodecode-api --instance-name=enterprise-1 create_repo \
62 repo_name:brand-new repo_type:hg description:repo-desc
62 repo_name:brand-new repo_type:hg description:repo-desc
63
63
64 {
64 {
65 "error": null,
65 "error": null,
66 "id": 1110,
66 "id": 1110,
67 "result": {
67 "result": {
68 "msg": "Created new repository `brand-new`",
68 "msg": "Created new repository `brand-new`",
69 "success": true,
69 "success": true,
70 "task": null
70 "task": null
71 }
71 }
72 }
72 }
73
73
74 Options:
74 Options:
75
75
76 .. rst-class:: dl-horizontal
76 .. rst-class:: dl-horizontal
77
77
78 \ - -api-cache-only
78 \ - -api-cache-only
79 Requires a cache to be present when running this call
79 Requires a cache to be present when running this call
80
80
81 \ - -api-cache-rebuild
81 \ - -api-cache-rebuild
82 Replaces existing cached values with new ones from server
82 Replaces existing cached values with new ones from server
83
83
84 \ - -api-cache <PATH>
84 \ - -api-cache <PATH>
85 Use a special cache dir to read responses from instead of the server
85 Use a special cache dir to read responses from instead of the server
86
86
87 \ - -api-cert-verify
87 \ - -api-cert-verify
88 Verify the endpoint ssl certificate
88 Verify the endpoint ssl certificate
89
89
90 \ - -api-cert <PATH>
90 \ - -api-cert <PATH>
91 Path to alternate CA bundle.
91 Path to alternate CA bundle.
92
92
93 \ - -apihost <api_host>
93 \ - -apihost <api_host>
94 Set the API host value.
94 Set the API host value.
95
95
96 \ - -apikey <apikey_value>
96 \ - -apikey <apikey_value>
97 Set the API key value.
97 Set the API key value.
98
98
99 \ - -instance-name <instance-id>
99 \ - -instance-name <instance-id>
100 Set the instance name
100 Set the instance name
101
101
102 \-I, - -install-dir <DIR>
102 \-I, - -install-dir <DIR>
103 Location of application instances
103 Location of application instances
104
104
105 \-c, - -config <.rhoderc-file>
105 \-c, - -config <.rhoderc-file>
106 Location of the :file:`.rhoderc`
106 Location of the :file:`.rhoderc`
107
107
108 \-F, - -format {json,pretty}
108 \-F, - -format {json,pretty}
109 Set the formatted representation.
109 Set the formatted representation.
110
110
111 \-h, - -help
111 \-h, - -help
112 Show help messages.
112 Show help messages.
113
113
114 \-v, - -verbose
114 \-v, - -verbose
115 Enable verbose messaging
115 Enable verbose messaging
116
116
117 rhodecode-cleanup-gists
117 rhodecode-cleanup-gists
118 -----------------------
118 -----------------------
119
119
120 Use this to delete gists within |RCM|. Options:
120 Use this to delete gists within |RCM|. Options:
121
121
122 .. rst-class:: dl-horizontal
122 .. rst-class:: dl-horizontal
123
123
124 \-c, - -config <config_file>
124 \-c, - -config <config_file>
125 Set the file path to the configuration file. The default file is
125 Set the file path to the configuration file. The default file is
126 :file:`/home/{user}/.rhoderc`
126 :file:`/home/{user}/.rhoderc`
127
127
128 \ - -corrupted
128 \ - -corrupted
129 Remove gists with corrupted metadata.
129 Remove gists with corrupted metadata.
130
130
131 \ - -dont-ask
131 \ - -dont-ask
132 Remove gists without asking for confirmation.
132 Remove gists without asking for confirmation.
133
133
134 \-h, - -help
134 \-h, - -help
135 Show help messages. current configuration values.
135 Show help messages. current configuration values.
136
136
137 \ - -instance-name <instance-id>
137 \ - -instance-name <instance-id>
138 Set the instance name.
138 Set the instance name.
139
139
140 \-R, - -repo-dir
140 \-R, - -repo-dir
141 Set the repository file path.
141 Set the repository file path.
142
142
143 \ - -version
143 \ - -version
144 Display your |RCT| version.
144 Display your |RCT| version.
145
145
146 Example usage:
146 Example usage:
147
147
148 .. code-block:: bash
148 .. code-block:: bash
149
149
150 # Clean up gists related to an instance
150 # Clean up gists related to an instance
151 $ rhodecode-cleanup-gists --instance-name=enterprise-1
151 $ rhodecode-cleanup-gists --instance-name=enterprise-1
152 Scanning for gists in /home/brian/repos/.rc_gist_store...
152 Scanning for gists in /home/brian/repos/.rc_gist_store...
153 preparing to remove [3] found gists
153 preparing to remove [3] found gists
154
154
155 # Clean up corrupted gists in an instance
155 # Clean up corrupted gists in an instance
156 $ rhodecode-cleanup-gists --instance-name=enterprise-1 --corrupted
156 $ rhodecode-cleanup-gists --instance-name=enterprise-1 --corrupted
157 Scanning for gists in /home/brian/repos/.rc_gist_store...
157 Scanning for gists in /home/brian/repos/.rc_gist_store...
158 preparing to remove [2] found gists
158 preparing to remove [2] found gists
159 the following gists will be archived:
159 the following gists will be archived:
160 * EXPIRED: BAD METADATA | /home/brian/repos/.rc_gist_store/5
160 * EXPIRED: BAD METADATA | /home/brian/repos/.rc_gist_store/5
161 * EXPIRED: BAD METADATA | /home/brian/repos/.rc_gist_store/8FtC
161 * EXPIRED: BAD METADATA | /home/brian/repos/.rc_gist_store/8FtC
162 are you sure you want to archive them? [y/N]: y
162 are you sure you want to archive them? [y/N]: y
163 removing gist /home/brian/repos/.rc_gist_store/5
163 removing gist /home/brian/repos/.rc_gist_store/5
164 removing gist /home/brian/repos/.rc_gist_store/8FtCKdcbRKmEvRzTVsEt
164 removing gist /home/brian/repos/.rc_gist_store/8FtCKdcbRKmEvRzTVsEt
165
165
166 rhodecode-cleanup-repos
166 rhodecode-cleanup-repos
167 -----------------------
167 -----------------------
168
168
169 Use this to manage |repos| and |repo| groups within |RCM|. Options:
169 Use this to manage |repos| and |repo| groups within |RCM|. Options:
170
170
171 .. rst-class:: dl-horizontal
171 .. rst-class:: dl-horizontal
172
172
173 \-c, - -config <config_file>
173 \-c, - -config <config_file>
174 Set the file path to the configuration file. The default file is
174 Set the file path to the configuration file. The default file is
175 :file:`/home/{user}/.rhoderc`.
175 :file:`/home/{user}/.rhoderc`.
176
176
177 \-h, - -help
177 \-h, - -help
178 Show help messages. current configuration values.
178 Show help messages. current configuration values.
179
179
180 \ - -interactive
180 \ - -interactive
181 Enable an interactive prompt for each repository when deleting.
181 Enable an interactive prompt for each repository when deleting.
182
182
183 \ - -include-groups
183 \ - -include-groups
184 Remove repository groups.
184 Remove repository groups.
185
185
186 \ - -instance-name <instance-id>
186 \ - -instance-name <instance-id>
187 Set the instance name.
187 Set the instance name.
188
188
189 \ - -list-only
189 \ - -list-only
190 Display repositories selected for deletion.
190 Display repositories selected for deletion.
191
191
192 \ - -older-than <str>
192 \ - -older-than <str>
193 Delete repositories older that a specified time.
193 Delete repositories older that a specified time.
194 You can use the following suffixes; d for days, h for hours,
194 You can use the following suffixes; d for days, h for hours,
195 m for minutes, s for seconds.
195 m for minutes, s for seconds.
196
196
197 \-R, - -repo-dir
197 \-R, - -repo-dir
198 Set the repository file path
198 Set the repository file path
199
199
200 Example usage:
200 Example usage:
201
201
202 .. code-block:: bash
202 .. code-block:: bash
203
203
204 # Cleaning up repos using tools installed with RCE 350 and above
204 # Cleaning up repos using tools installed with RCE 350 and above
205 $ ~/.rccontrol/enterprise-4/profile/bin/rhodecode-cleanup-repos \
205 $ ~/.rccontrol/enterprise-4/profile/bin/rhodecode-cleanup-repos \
206 --instance-name=enterprise-4 --older-than=1d
206 --instance-name=enterprise-4 --older-than=1d
207 Scanning for repositories in /home/brian/repos...
207 Scanning for repositories in /home/brian/repos...
208 preparing to remove [2] found repositories older than 1 day, 0:00:00 (1d)
208 preparing to remove [2] found repositories older than 1 day, 0:00:00 (1d)
209
209
210 the following repositories will be deleted completely:
210 the following repositories will be deleted completely:
211 * REMOVED: 2015-08-05 00:23:18 | /home/brian/repos/rm__20150805_002318_831
211 * REMOVED: 2015-08-05 00:23:18 | /home/brian/repos/rm__20150805_002318_831
212 * REMOVED: 2015-08-04 01:22:10 | /home/brian/repos/rm__20150804_012210_336
212 * REMOVED: 2015-08-04 01:22:10 | /home/brian/repos/rm__20150804_012210_336
213 are you sure you want to remove them? [y/N]:
213 are you sure you want to remove them? [y/N]:
214
214
215 # Clean up repos older than 1 year
215 # Clean up repos older than 1 year
216 # If using virtualenv and pre RCE 350 tools installation
216 # If using virtualenv and pre RCE 350 tools installation
217 (venv)$ rhodecode-cleanup-repos --instance-name=enterprise-1 \
217 (venv)$ rhodecode-cleanup-repos --instance-name=enterprise-1 \
218 --older-than=365d
218 --older-than=365d
219
219
220 Scanning for repositories in /home/brian/repos...
220 Scanning for repositories in /home/brian/repos...
221 preparing to remove [343] found repositories older than 365 days
221 preparing to remove [343] found repositories older than 365 days
222
222
223 # clean up repos older than 3 days
223 # clean up repos older than 3 days
224 # If using virtualenv and pre RCE 350 tools installation
224 # If using virtualenv and pre RCE 350 tools installation
225 (venv)$ rhodecode-cleanup-repos --instance-name=enterprise-1 \
225 (venv)$ rhodecode-cleanup-repos --instance-name=enterprise-1 \
226 --older-than=3d
226 --older-than=3d
227 Scanning for repositories in /home/brian/repos...
227 Scanning for repositories in /home/brian/repos...
228 preparing to remove [3] found repositories older than 3 days
228 preparing to remove [3] found repositories older than 3 days
229
229
230 .. _tools-config:
230 .. _tools-config:
231
231
232 rhodecode-config
232 rhodecode-config
233 ----------------
233 ----------------
234
234
235 Use this to create or update a |RCE| configuration file on the local machine.
235 Use this to create or update a |RCE| configuration file on the local machine.
236
236
237 .. rst-class:: dl-horizontal
237 .. rst-class:: dl-horizontal
238
238
239 \- -filename </path/to/config_file>
239 \- -filename </path/to/config_file>
240 Set the file path to the |RCE| configuration file.
240 Set the file path to the |RCE| configuration file.
241
241
242 \- -show-defaults
242 \- -show-defaults
243 Display the defaults set in the |RCE| configuration file.
243 Display the defaults set in the |RCE| configuration file.
244
244
245 \- -update
245 \- -update
246 Update the configuration with the new settings passed on the command
246 Update the configuration with the new settings passed on the command
247 line.
247 line.
248
248
249 .. code-block:: bash
249 .. code-block:: bash
250
250
251 # Create a new config file
251 # Create a new config file
252 $ rhodecode-config --filename=dev.ini
252 $ rhodecode-config --filename=dev.ini
253 Wrote new config file in /Users/user/dev.ini
253 Wrote new config file in /Users/user/dev.ini
254
254
255 # Update config value for given section:
255 # Update config value for given section:
256 $ rhodecode-config --update --filename=prod.ini [handler_console]level=INFO
256 $ rhodecode-config --update --filename=prod.ini [handler_console]level=INFO
257
257
258 $ rhodecode-config --filename=dev.ini --show-defaults
258 $ rhodecode-config --filename=dev.ini --show-defaults
259 lang=en
259 lang=en
260 cpu_number=4
260 cpu_number=4
261 uuid=<function <lambda> at 0x10d86ac08>
261 uuid=<function <lambda> at 0x10d86ac08>
262 license_token=ff1e-aa9c-bb66-11e5
262 license_token=ff1e-aa9c-bb66-11e5
263 host=127.0.0.1
263 host=127.0.0.1
264 here=/Users/brian
264 here=/Users/brian
265 error_aggregation_service=None
265 error_aggregation_service=None
266 database_url=sqlite:///%(here)s/rhodecode.db?timeout=30
266 database_url=sqlite:///%(here)s/rhodecode.db?timeout=30
267 git_path=git
267 git_path=git
268 http_server=waitress
268 http_server=waitress
269 port=5000
269 port=5000
270
270
271 .. _tools-rhodecode-extensions:
271 .. _tools-rhodecode-extensions:
272
272
273 rhodecode-extensions
273 rhodecode-extensions
274 --------------------
274 --------------------
275
275
276 |RCT| adds additional mapping for :ref:`indexing-ref`, statistics, and adds
276 The `rcextensions` since version 4.14 are now shipped together with |RCE| please check
277 additional code for push/pull/create/delete |repo| hooks. These hooks can be
277 the using :ref:`integrations-rcextensions` section.
278 used to send signals to build-bots such as jenkins. Options:
279
280 .. rst-class:: dl-horizontal
281
282 \-c, - -config <config_file>
283 Create a configuration file. The default file is created
284 in ``~/.rhoderc``
285
286 \-h, - -help
287 Show help messages.
288
289 \-F, - -format {json,pretty}
290 Set the formatted representation.
291
292 \-I, - -install-dir <str>
293 Set the location of the |RCE| installation. The default location is
294 :file:`/home/{user}/.rccontrol/`.
295
296 \ - -ini-file <str>
297 Path to the :file:`rhodecode.ini` file for that instance.
298
299 \ - -instance-name <instance-id>
300 Set the instance name.
301
302 \ - -plugins
303 Add plugins to your |RCE| installation. See the
304 :ref:`extensions-hooks-ref` section for more details.
305
306 \ - -version
307 Display your |RCT| version.
308
309
310 Once installed, you will see a :file:`rcextensions` folder in the instance
311 directory, for example :file:`home/{user}/.rccontrol/{instance-id}/rcextensions`
312
313 To install ``rcextensions``, use the following example:
314
315 .. code-block:: bash
316
317 # install extensions on the given instance
318 # If using virtualenv prior to RCE 350
319 (venv)$ rhodecode-extensions --instance-name=enterprise-1 \
320 --ini-file=rhodecode.ini
321 Writen new extensions file to rcextensions
322
323 # install extensions with additional plugins on the given instance
324 (venv)$ rhodecode-extensions --instance-name=enterprise-1 \
325 --ini-file=rhodecode.ini --plugins
326 Writen new extensions file to rcextensions
327
328 # installing extensions from 350 onwards
329 # as they are packaged with RCE
330 $ .rccontrol/enterprise-4/profile/bin/rhodecode-extensions --plugins \
331 --instance-name=enterprise-4 --ini-file=rhodecode.ini
332
333 Writen new extensions file to rcextensions
334
335 See the new extensions inside this directory for more details about the
336 additional hooks available, for example see the ``push_post.py`` file.
337
338 .. code-block:: python
339
340 import urllib
341 import urllib2
342
343 def run(*args, **kwargs):
344 """
345 Extra params
346
347 :param URL: url to send the data to
348 """
349
350 url = kwargs.pop('URL', None)
351 if url:
352 from rhodecode.lib.compat import json
353 from rhodecode.model.db import Repository
354
355 repo = Repository.get_by_repo_name(kwargs['repository'])
356 changesets = []
357 vcs_repo = repo.scm_instance_no_cache()
358 for r in kwargs['pushed_revs']:
359 cs = vcs_repo.get_changeset(r)
360 changesets.append(json.dumps(cs))
361
362 kwargs['pushed_revs'] = changesets
363 headers = {
364 'User-Agent': 'RhodeCode-SCM web hook',
365 'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
366 'Accept': 'text/javascript, text/html, application/xml, '
367 'text/xml, */*',
368 'Accept-Encoding': 'gzip,deflate,sdch',
369 }
370
371 data = kwargs
372 data = urllib.urlencode(data)
373 req = urllib2.Request(url, data, headers)
374 response = urllib2.urlopen(req)
375 response.read()
376 return 0
377
278
378
279
379 rhodecode-gist
280 rhodecode-gist
380 --------------
281 --------------
381
282
382 Use this to create, list, show, or delete gists within |RCM|. Options:
283 Use this to create, list, show, or delete gists within |RCM|. Options:
383
284
384 .. rst-class:: dl-horizontal
285 .. rst-class:: dl-horizontal
385
286
386 \ - -api-cache-only
287 \ - -api-cache-only
387 Requires a cache to be present when running this call
288 Requires a cache to be present when running this call
388
289
389 \ - -api-cache-rebuild
290 \ - -api-cache-rebuild
390 Replaces existing cached values with new ones from server
291 Replaces existing cached values with new ones from server
391
292
392 \ - -api-cache PATH
293 \ - -api-cache PATH
393 Use a special cache dir to read responses from instead of the server
294 Use a special cache dir to read responses from instead of the server
394
295
395 \ - -api-cert-verify
296 \ - -api-cert-verify
396 Verify the endpoint ssl certificate
297 Verify the endpoint ssl certificate
397
298
398 \ - -api-cert PATH
299 \ - -api-cert PATH
399 Path to alternate CA bundle.
300 Path to alternate CA bundle.
400
301
401 \ - -apihost <api_host>
302 \ - -apihost <api_host>
402 Set the API host value.
303 Set the API host value.
403
304
404 \ - -apikey <apikey_value>
305 \ - -apikey <apikey_value>
405 Set the API key value.
306 Set the API key value.
406
307
407 \-c, - -config <config_file>
308 \-c, - -config <config_file>
408 Create a configuration file.
309 Create a configuration file.
409 The default file is created in :file:`~/.rhoderc`
310 The default file is created in :file:`~/.rhoderc`
410
311
411 \ - -create <gistname>
312 \ - -create <gistname>
412 create the gist
313 create the gist
413
314
414 \-d, - -description <str>
315 \-d, - -description <str>
415 Set gist description
316 Set gist description
416
317
417 \ - -delete <gistid>
318 \ - -delete <gistid>
418 Delete the gist
319 Delete the gist
419
320
420 \-f, - -file
321 \-f, - -file
421 Specify the filename The file extension will enable syntax highlighting.
322 Specify the filename The file extension will enable syntax highlighting.
422
323
423 \-F, - -format {json,pretty}
324 \-F, - -format {json,pretty}
424 Set the formatted representation.
325 Set the formatted representation.
425
326
426 \ - -help
327 \ - -help
427 Show help messages.
328 Show help messages.
428
329
429 \-I, - -install-dir <DIR>
330 \-I, - -install-dir <DIR>
430 Location of application instances
331 Location of application instances
431
332
432 \ - -instance-name <instance-id>
333 \ - -instance-name <instance-id>
433 Set the instance name.
334 Set the instance name.
434
335
435 \ - -list
336 \ - -list
436 Display instance gists.
337 Display instance gists.
437
338
438 \-l, --lifetime <minutes>
339 \-l, --lifetime <minutes>
439 Set the gist lifetime. The default value is (-1) forever
340 Set the gist lifetime. The default value is (-1) forever
440
341
441 \ - -show <gistname>
342 \ - -show <gistname>
442 Show the content of the gist
343 Show the content of the gist
443
344
444 \-o, - -open
345 \-o, - -open
445 After creating Gist open it in browser
346 After creating Gist open it in browser
446
347
447 \-p, - -private
348 \-p, - -private
448 Create a private gist
349 Create a private gist
449
350
450 \ - -version
351 \ - -version
451 Display your |RCT| version.
352 Display your |RCT| version.
452
353
453 Example usage:
354 Example usage:
454
355
455 .. code-block:: bash
356 .. code-block:: bash
456
357
457 # List the gists in an instance
358 # List the gists in an instance
458 (venv)brian@ubuntu:~$ rhodecode-gist --instance-name=enterprise-1 list
359 (venv)brian@ubuntu:~$ rhodecode-gist --instance-name=enterprise-1 list
459 {
360 {
460 "error": null,
361 "error": null,
461 "id": 7102,
362 "id": 7102,
462 "result": [
363 "result": [
463 {
364 {
464 "access_id": "2",
365 "access_id": "2",
465 "content": null,
366 "content": null,
466 "created_on": "2015-01-19T12:52:26.494",
367 "created_on": "2015-01-19T12:52:26.494",
467 "description": "A public gust",
368 "description": "A public gust",
468 "expires": -1.0,
369 "expires": -1.0,
469 "gist_id": 2,
370 "gist_id": 2,
470 "type": "public",
371 "type": "public",
471 "url": "http://127.0.0.1:10003/_admin/gists/2"
372 "url": "http://127.0.0.1:10003/_admin/gists/2"
472 },
373 },
473 {
374 {
474 "access_id": "7gs6BsSEC4pKUEPLz5AB",
375 "access_id": "7gs6BsSEC4pKUEPLz5AB",
475 "content": null,
376 "content": null,
476 "created_on": "2015-01-19T11:27:40.812",
377 "created_on": "2015-01-19T11:27:40.812",
477 "description": "Gist testing API",
378 "description": "Gist testing API",
478 "expires": -1.0,
379 "expires": -1.0,
479 "gist_id": 1,
380 "gist_id": 1,
480 "type": "private",
381 "type": "private",
481 "url": "http://127.0.0.1:10003/_admin/gists/7gs6BsSEC4pKUEPLz5AB"
382 "url": "http://127.0.0.1:10003/_admin/gists/7gs6BsSEC4pKUEPLz5AB"
482 }
383 }
483 ]
384 ]
484 }
385 }
485
386
486 # delete a particular gist
387 # delete a particular gist
487 # You use the access_id to specify the gist to delete
388 # You use the access_id to specify the gist to delete
488 (venv)brian@ubuntu:~$ rhodecode-gist delete 2 --instance-name=enterprise-1
389 (venv)brian@ubuntu:~$ rhodecode-gist delete 2 --instance-name=enterprise-1
489 {
390 {
490 "error": null,
391 "error": null,
491 "id": 6284,
392 "id": 6284,
492 "result": {
393 "result": {
493 "gist": null,
394 "gist": null,
494 "msg": "deleted gist ID:2"
395 "msg": "deleted gist ID:2"
495 }
396 }
496 }
397 }
497
398
498 # cat a file and pipe to new gist
399 # cat a file and pipe to new gist
499 # This is if you are using virtualenv
400 # This is if you are using virtualenv
500 (venv)$ cat ~/.rhoderc | rhodecode-gist --instance-name=enterprise-1 \
401 (venv)$ cat ~/.rhoderc | rhodecode-gist --instance-name=enterprise-1 \
501 -d '.rhoderc copy' create
402 -d '.rhoderc copy' create
502
403
503 {
404 {
504 "error": null,
405 "error": null,
505 "id": 5374,
406 "id": 5374,
506 "result": {
407 "result": {
507 "gist": {
408 "gist": {
508 "access_id": "7",
409 "access_id": "7",
509 "content": null,
410 "content": null,
510 "created_on": "2015-01-26T11:31:58.774",
411 "created_on": "2015-01-26T11:31:58.774",
511 "description": ".rhoderc copy",
412 "description": ".rhoderc copy",
512 "expires": -1.0,
413 "expires": -1.0,
513 "gist_id": 7,
414 "gist_id": 7,
514 "type": "public",
415 "type": "public",
515 "url": "http://127.0.0.1:10003/_admin/gists/7"
416 "url": "http://127.0.0.1:10003/_admin/gists/7"
516 },
417 },
517 "msg": "created new gist"
418 "msg": "created new gist"
518 }
419 }
519 }
420 }
520
421
521 # Cat a file and pipe to gist
422 # Cat a file and pipe to gist
522 # in RCE 3.5.0 tools and above
423 # in RCE 3.5.0 tools and above
523 $ cat ~/.rhoderc | ~/.rccontrol/{instance-id}/profile/bin/rhodecode-gist \
424 $ cat ~/.rhoderc | ~/.rccontrol/{instance-id}/profile/bin/rhodecode-gist \
524 --instance-name=enterprise-4 -d '.rhoderc copy' create
425 --instance-name=enterprise-4 -d '.rhoderc copy' create
525 {
426 {
526 "error": null,
427 "error": null,
527 "id": 9253,
428 "id": 9253,
528 "result": {
429 "result": {
529 "gist": {
430 "gist": {
530 "access_id": "4",
431 "access_id": "4",
531 "acl_level": "acl_public",
432 "acl_level": "acl_public",
532 "content": null,
433 "content": null,
533 "created_on": "2015-08-20T05:54:11.250",
434 "created_on": "2015-08-20T05:54:11.250",
534 "description": ".rhoderc copy",
435 "description": ".rhoderc copy",
535 "expires": -1.0,
436 "expires": -1.0,
536 "gist_id": 4,
437 "gist_id": 4,
537 "modified_at": "2015-08-20T05:54:11.250",
438 "modified_at": "2015-08-20T05:54:11.250",
538 "type": "public",
439 "type": "public",
539 "url": "http://127.0.0.1:10000/_admin/gists/4"
440 "url": "http://127.0.0.1:10000/_admin/gists/4"
540 },
441 },
541 "msg": "created new gist"
442 "msg": "created new gist"
542 }
443 }
543 }
444 }
544
445
545
446
546 rhodecode-index
447 rhodecode-index
547 ---------------
448 ---------------
548
449
549 More detailed information regarding setting up the indexer is available in
450 More detailed information regarding setting up the indexer is available in
550 the :ref:`indexing-ref` section. Options:
451 the :ref:`indexing-ref` section. Options:
551
452
552 .. rst-class:: dl-horizontal
453 .. rst-class:: dl-horizontal
553
454
554 \ - -api-cache-only
455 \ - -api-cache-only
555 Requires a cache to be present when running this call
456 Requires a cache to be present when running this call
556
457
557 \ - -api-cache-rebuild
458 \ - -api-cache-rebuild
558 Replaces existing cached values with new ones from server
459 Replaces existing cached values with new ones from server
559
460
560 \ - -api-cache PATH
461 \ - -api-cache PATH
561 Use a special cache dir to read responses from instead of the server
462 Use a special cache dir to read responses from instead of the server
562
463
563 \ - -api-cert-verify
464 \ - -api-cert-verify
564 Verify the endpoint ssl certificate
465 Verify the endpoint ssl certificate
565
466
566 \ - -api-cert PATH
467 \ - -api-cert PATH
567 Path to alternate CA bundle.
468 Path to alternate CA bundle.
568
469
569 \ - -apihost <api_host>
470 \ - -apihost <api_host>
570 Set the API host value.
471 Set the API host value.
571
472
572 \ - -apikey <apikey_value>
473 \ - -apikey <apikey_value>
573 Set the API key value.
474 Set the API key value.
574
475
575 \-c, --config <config_file>
476 \-c, --config <config_file>
576 Create a configuration file.
477 Create a configuration file.
577 The default file is created in :file:`~/.rhoderc`
478 The default file is created in :file:`~/.rhoderc`
578
479
579 \ - -create-mapping <PATH>
480 \ - -create-mapping <PATH>
580 Creates an example mapping configuration for indexer.
481 Creates an example mapping configuration for indexer.
581
482
582 \-F, - -format {json,pretty}
483 \-F, - -format {json,pretty}
583 Set the formatted representation.
484 Set the formatted representation.
584
485
585 \-h, - -help
486 \-h, - -help
586 Show help messages.
487 Show help messages.
587
488
588 \ - -instance-name <instance-id>
489 \ - -instance-name <instance-id>
589 Set the instance name
490 Set the instance name
590
491
591 \-I, - -install-dir <DIR>
492 \-I, - -install-dir <DIR>
592 Location of application instances
493 Location of application instances
593
494
594 \-m, - -mapping <file_name>
495 \-m, - -mapping <file_name>
595 Parse the output to the .ini mapping file.
496 Parse the output to the .ini mapping file.
596
497
597 \ - -optimize
498 \ - -optimize
598 Optimize index for performance by amalgamating multiple index files
499 Optimize index for performance by amalgamating multiple index files
599 into one. Greatly increases incremental indexing speed.
500 into one. Greatly increases incremental indexing speed.
600
501
601 \-R, - -repo-dir <DIRECTORY>
502 \-R, - -repo-dir <DIRECTORY>
602 Location of repositories
503 Location of repositories
603
504
604 \ - -source <PATH>
505 \ - -source <PATH>
605 Use a special source JSON file to feed the indexer
506 Use a special source JSON file to feed the indexer
606
507
607 \ - -version
508 \ - -version
608 Display your |RCT| version.
509 Display your |RCT| version.
609
510
610 Example usage:
511 Example usage:
611
512
612 .. code-block:: bash
513 .. code-block:: bash
613
514
614 # Run the indexer
515 # Run the indexer
615 $ ~/.rccontrol/enterprise-4/profile/bin/rhodecode-index \
516 $ ~/.rccontrol/enterprise-4/profile/bin/rhodecode-index \
616 --instance-name=enterprise-4
517 --instance-name=enterprise-4
617
518
618 # Run indexer based on mapping.ini file
519 # Run indexer based on mapping.ini file
619 # This is using pre-350 virtualenv
520 # This is using pre-350 virtualenv
620 (venv)$ rhodecode-index --instance-name=enterprise-1
521 (venv)$ rhodecode-index --instance-name=enterprise-1
621
522
622 # Index from the command line without creating
523 # Index from the command line without creating
623 # the .rhoderc file
524 # the .rhoderc file
624 $ rhodecode-index --apikey=key --apihost=http://rhodecode.server \
525 $ rhodecode-index --apikey=key --apihost=http://rhodecode.server \
625 --instance-name=enterprise-2 --save-config
526 --instance-name=enterprise-2 --save-config
626
527
627 # Create the indexing mapping file
528 # Create the indexing mapping file
628 $ ~/.rccontrol/enterprise-4/profile/bin/rhodecode-index \
529 $ ~/.rccontrol/enterprise-4/profile/bin/rhodecode-index \
629 --create-mapping mapping.ini --instance-name=enterprise-4
530 --create-mapping mapping.ini --instance-name=enterprise-4
630
531
631 .. _tools-rhodecode-list-instance:
532 .. _tools-rhodecode-list-instance:
632
533
633 rhodecode-list-instances
534 rhodecode-list-instances
634 ------------------------
535 ------------------------
635
536
636 Use this command to list the instance details configured in the
537 Use this command to list the instance details configured in the
637 :file:`~/.rhoderc` file.
538 :file:`~/.rhoderc` file.
638
539
639 .. code-block:: bash
540 .. code-block:: bash
640
541
641 $ .rccontrol/enterprise-1/profile/bin/rhodecode-list-instances
542 $ .rccontrol/enterprise-1/profile/bin/rhodecode-list-instances
642 [instance:production] - Config only
543 [instance:production] - Config only
643 API-HOST: https://some.url.com
544 API-HOST: https://some.url.com
644 API-KEY: some.auth.token
545 API-KEY: some.auth.token
645
546
646 [instance:development] - Config only
547 [instance:development] - Config only
647 API-HOST: http://some.ip.address
548 API-HOST: http://some.ip.address
648 API-KEY: some.auth.token
549 API-KEY: some.auth.token
649
550
650
551
651 .. _tools-setup-config:
552 .. _tools-setup-config:
652
553
653 rhodecode-setup-config
554 rhodecode-setup-config
654 ----------------------
555 ----------------------
655
556
656 Use this command to create the ``~.rhoderc`` file required by |RCT| to access
557 Use this command to create the ``~.rhoderc`` file required by |RCT| to access
657 remote instances.
558 remote instances.
658
559
659 .. rst-class:: dl-horizontal
560 .. rst-class:: dl-horizontal
660
561
661 \- -instance-name <name>
562 \- -instance-name <name>
662 Specify the instance name in the :file:`~/.rhoderc`
563 Specify the instance name in the :file:`~/.rhoderc`
663
564
664 \api_host <hostname>
565 \api_host <hostname>
665 Create a configuration file. The default file is created
566 Create a configuration file. The default file is created
666 in ``~/.rhoderc``
567 in ``~/.rhoderc``
667
568
668 \api_key <auth-token>
569 \api_key <auth-token>
669 Create a configuration file. The default file is created
570 Create a configuration file. The default file is created
670 in ``~/.rhoderc``
571 in ``~/.rhoderc``
671
572
672
573
673 .. code-block:: bash
574 .. code-block:: bash
674
575
675 (venv)$ rhodecode-setup-config --instance-name=tea api_host=URL api_key=xyz
576 (venv)$ rhodecode-setup-config --instance-name=tea api_host=URL api_key=xyz
676 Config not found under /Users/username/.rhoderc, creating a new one
577 Config not found under /Users/username/.rhoderc, creating a new one
677 Wrote new configuration into /Users/username/.rhoderc
578 Wrote new configuration into /Users/username/.rhoderc
@@ -1,76 +1,66 b''
1 .. _tools-overview:
1 .. _tools-overview:
2
2
3 |RCT| Overview
3 |RCT| Overview
4 --------------
4 --------------
5
5
6 To install |RCT| correctly, see the installation steps covered in
6 To install |RCT| correctly, see the installation steps covered in
7 :ref:`install-tools`, and :ref:`config-rhoderc`.
7 :ref:`install-tools`, and :ref:`config-rhoderc`.
8
8
9 Once |RCT| is installed, and the :file:`/home/{user}/.rhoderc` file is
9 Once |RCT| is installed, and the :file:`/home/{user}/.rhoderc` file is
10 configured you can then use |RCT| on each |RCM| instance to carry out admin
10 configured you can then use |RCT| on each |RCM| instance to carry out admin
11 tasks. Use the following example to configure that file,
11 tasks. Use the following example to configure that file,
12 and once configured see the :ref:`tools-cli` for more details.
12 and once configured see the :ref:`tools-cli` for more details.
13
13
14 .. note::
14 .. note::
15
15
16 |RCT| require |PY| 2.7 to run.
16 |RCT| require |PY| 2.7 to run.
17
17
18 .. code-block:: bash
18 .. code-block:: bash
19
19
20 # Get the status of each instance you wish to use with Tools
20 # Get the status of each instance you wish to use with Tools
21 (venv)brian@ubuntu:~$ rccontrol status
21 (venv)brian@ubuntu:~$ rccontrol status
22
22
23 - NAME: momentum-1
23 - NAME: momentum-1
24 - STATUS: RUNNING
24 - STATUS: RUNNING
25 - TYPE: Momentum
25 - TYPE: Momentum
26 - VERSION: 3.0.0-nightly-momentum
26 - VERSION: 3.0.0-nightly-momentum
27 - URL: http://127.0.0.1:10003
27 - URL: http://127.0.0.1:10003
28
28
29 - NAME: momentum-3
29 - NAME: momentum-3
30 - STATUS: RUNNING
30 - STATUS: RUNNING
31 - TYPE: Momentum
31 - TYPE: Momentum
32 - VERSION: 3.0.0-nightly-momentum
32 - VERSION: 3.0.0-nightly-momentum
33 - URL: http://127.0.0.1:10007
33 - URL: http://127.0.0.1:10007
34
34
35 Example :file:`/home/{user}/.rhoderc` file.
35 Example :file:`/home/{user}/.rhoderc` file.
36
36
37 .. code-block:: ini
37 .. code-block:: ini
38
38
39 # Configure the .rhoderc file for each instance
39 # Configure the .rhoderc file for each instance
40 # API keys found in your instance
40 # API keys found in your instance
41 [instance:enterprise-1]
41 [instance:enterprise-1]
42 api_host = http://127.0.0.1:10003/
42 api_host = http://127.0.0.1:10003/
43 api_key = 91fdbdc257289c46633ef5aab274412911de1ba9
43 api_key = 91fdbdc257289c46633ef5aab274412911de1ba9
44 repo_dir = /home/brian/repos
44 repo_dir = /home/brian/repos
45
45
46 [instance:enterprise-3]
46 [instance:enterprise-3]
47 api_host = http://127.0.0.1:10007/
47 api_host = http://127.0.0.1:10007/
48 api_key = 5a925f65438d29f8d6ced8ab8e8c3d305998d1d9
48 api_key = 5a925f65438d29f8d6ced8ab8e8c3d305998d1d9
49 repo_dir = /home/brian/testing-repos/
49 repo_dir = /home/brian/testing-repos/
50
50
51
51
52 Example usage of |RCT| after |RCE| 3.5.0. From this version onwards |RCT| is
52 Example usage of |RCT| after |RCE| 3.5.0. From this version onwards |RCT| is
53 packaged with |RCE| by default.
53 packaged with |RCE| by default.
54
54
55 .. code-block:: bash
55 .. code-block:: bash
56
56
57 $ .rccontrol/enterprise-4/profile/bin/rhodecode-extensions --plugins \
57 $ .rccontrol/enterprise-4/profile/bin/rhodecode-api --instance-name=enterprise-4 get_ip [11:56:57 on 05/10/2018]
58 --instance-name=enterprise-4 --ini-file=rhodecode.ini
59
58
60 Writen new extensions file to rcextensions
59 {
61 Copied hipchat_push_notify.py plugin to rcextensions
60 "error": null,
62 Copied jira_pr_flow.py plugin to rcextensions
61 "id": 1000,
63 Copied default_reviewers.py plugin to rcextensions
62 "result": {
64 Copied extract_commits.py plugin to rcextensions
63 "server_ip_addr": "1.2.3.4",
65 Copied extract_issues.py plugin to rcextensions
64 "user_ips": []
66 Copied redmine_pr_flow.py plugin to rcextensions
65 }
67 Copied extra_fields.py plugin to rcextensions
66 }
68 Copied jira_smart_commits.py plugin to rcextensions
69 Copied http_notify.py plugin to rcextensions
70 Copied slack_push_notify.py plugin to rcextensions
71 Copied slack_message.py plugin to rcextensions
72 Copied extract_jira_issues.py plugin to rcextensions
73 Copied extract_redmine_issues.py plugin to rcextensions
74 Copied redmine_smart_commits.py plugin to rcextensions
75 Copied send_mail.py plugin to rcextensions
76
@@ -1,196 +1,174 b''
1 {
1 {
2 "dirs": {
2 "dirs": {
3 "css": {
3 "css": {
4 "src":"rhodecode/public/css",
4 "src": "rhodecode/public/css",
5 "dest":"rhodecode/public/css"
5 "dest": "rhodecode/public/css"
6 },
6 },
7 "js": {
7 "js": {
8 "src": "rhodecode/public/js/src",
8 "src": "rhodecode/public/js/src",
9 "src_rc": "rhodecode/public/js/rhodecode",
9 "src_rc": "rhodecode/public/js/rhodecode",
10 "dest": "rhodecode/public/js",
10 "dest": "rhodecode/public/js",
11 "bower": "bower_components",
12 "node_modules": "node_modules"
11 "node_modules": "node_modules"
13 }
12 }
14 },
13 },
15 "copy": {
14 "copy": {
16 "main": {
15 "main": {
16 "files": [
17 {
17 "expand": true,
18 "expand": true,
18 "cwd": "bower_components",
19 "cwd": "node_modules/@webcomponents",
19 "src": "webcomponentsjs/webcomponents-lite.js",
20 "src": "webcomponentsjs/*.*",
20 "dest": "<%= dirs.js.dest %>/vendors"
21 "dest": "<%= dirs.js.dest %>/vendors"
22 },
23 {
24 "src": "<%= dirs.css.src %>/style-polymer.css",
25 "dest": "<%= dirs.js.dest %>/src/components/style-polymer.css"
26 }
27 ]
21 }
28 }
22 },
29 },
23 "concat": {
30 "concat": {
24 "polymercss": {
25 "src": [
26 "<%= dirs.js.src %>/components/root-styles-prefix.html",
27 "<%= dirs.css.src %>/style-polymer.css",
28 "<%= dirs.js.src %>/components/root-styles-suffix.html"
29 ],
30 "dest": "<%= dirs.js.dest %>/src/components/root-styles.gen.html",
31 "nonull": true
32 },
33 "dist": {
31 "dist": {
34 "src": [
32 "src": [
35 "<%= dirs.js.node_modules %>/jquery/dist/jquery.min.js",
33 "<%= dirs.js.node_modules %>/jquery/dist/jquery.min.js",
36 "<%= dirs.js.node_modules %>/mousetrap/mousetrap.min.js",
34 "<%= dirs.js.node_modules %>/mousetrap/mousetrap.min.js",
37 "<%= dirs.js.node_modules %>/moment/min/moment.min.js",
35 "<%= dirs.js.node_modules %>/moment/min/moment.min.js",
38 "<%= dirs.js.node_modules %>/clipboard/dist/clipboard.min.js",
36 "<%= dirs.js.node_modules %>/clipboard/dist/clipboard.min.js",
39 "<%= dirs.js.node_modules %>/favico.js/favico-0.3.10.min.js",
37 "<%= dirs.js.node_modules %>/favico.js/favico-0.3.10.min.js",
38 "<%= dirs.js.node_modules %>/sticky-sidebar/dist/sticky-sidebar.min.js",
39 "<%= dirs.js.node_modules %>/sticky-sidebar/dist/jquery.sticky-sidebar.min.js",
40 "<%= dirs.js.node_modules %>/waypoints/lib/noframework.waypoints.min.js",
41 "<%= dirs.js.node_modules %>/waypoints/lib/jquery.waypoints.min.js",
40 "<%= dirs.js.node_modules %>/appenlight-client/appenlight-client.min.js",
42 "<%= dirs.js.node_modules %>/appenlight-client/appenlight-client.min.js",
41 "<%= dirs.js.src %>/logging.js",
43 "<%= dirs.js.src %>/logging.js",
42 "<%= dirs.js.src %>/bootstrap.js",
44 "<%= dirs.js.src %>/bootstrap.js",
43 "<%= dirs.js.src %>/i18n_utils.js",
45 "<%= dirs.js.src %>/i18n_utils.js",
44 "<%= dirs.js.src %>/deform.js",
46 "<%= dirs.js.src %>/deform.js",
45 "<%= dirs.js.src %>/ejs.js",
47 "<%= dirs.js.src %>/ejs.js",
46 "<%= dirs.js.src %>/ejs_templates/utils.js",
48 "<%= dirs.js.src %>/ejs_templates/utils.js",
47 "<%= dirs.js.src %>/plugins/jquery.pjax.js",
49 "<%= dirs.js.src %>/plugins/jquery.pjax.js",
48 "<%= dirs.js.src %>/plugins/jquery.dataTables.js",
50 "<%= dirs.js.src %>/plugins/jquery.dataTables.js",
49 "<%= dirs.js.src %>/plugins/flavoured_checkbox.js",
51 "<%= dirs.js.src %>/plugins/flavoured_checkbox.js",
50 "<%= dirs.js.src %>/plugins/jquery.auto-grow-input.js",
52 "<%= dirs.js.src %>/plugins/jquery.auto-grow-input.js",
51 "<%= dirs.js.src %>/plugins/jquery.autocomplete.js",
53 "<%= dirs.js.src %>/plugins/jquery.autocomplete.js",
52 "<%= dirs.js.src %>/plugins/jquery.debounce.js",
54 "<%= dirs.js.src %>/plugins/jquery.debounce.js",
53 "<%= dirs.js.src %>/plugins/jquery.mark.js",
55 "<%= dirs.js.src %>/plugins/jquery.mark.js",
54 "<%= dirs.js.src %>/plugins/jquery.timeago.js",
56 "<%= dirs.js.src %>/plugins/jquery.timeago.js",
55 "<%= dirs.js.src %>/plugins/jquery.timeago-extension.js",
57 "<%= dirs.js.src %>/plugins/jquery.timeago-extension.js",
56 "<%= dirs.js.src %>/select2/select2.js",
58 "<%= dirs.js.src %>/select2/select2.js",
57 "<%= dirs.js.src %>/codemirror/codemirror.js",
59 "<%= dirs.js.src %>/codemirror/codemirror.js",
58 "<%= dirs.js.src %>/codemirror/codemirror_loadmode.js",
60 "<%= dirs.js.src %>/codemirror/codemirror_loadmode.js",
59 "<%= dirs.js.src %>/codemirror/codemirror_hint.js",
61 "<%= dirs.js.src %>/codemirror/codemirror_hint.js",
60 "<%= dirs.js.src %>/codemirror/codemirror_overlay.js",
62 "<%= dirs.js.src %>/codemirror/codemirror_overlay.js",
61 "<%= dirs.js.src %>/codemirror/codemirror_placeholder.js",
63 "<%= dirs.js.src %>/codemirror/codemirror_placeholder.js",
62 "<%= dirs.js.src %>/codemirror/codemirror_simplemode.js",
64 "<%= dirs.js.src %>/codemirror/codemirror_simplemode.js",
63 "<%= dirs.js.dest %>/mode/meta.js",
65 "<%= dirs.js.dest %>/mode/meta.js",
64 "<%= dirs.js.dest %>/mode/meta_ext.js",
66 "<%= dirs.js.dest %>/mode/meta_ext.js",
65 "<%= dirs.js.src_rc %>/i18n/select2/translations.js",
67 "<%= dirs.js.src_rc %>/i18n/select2/translations.js",
66 "<%= dirs.js.src %>/rhodecode/utils/array.js",
68 "<%= dirs.js.src %>/rhodecode/utils/array.js",
67 "<%= dirs.js.src %>/rhodecode/utils/string.js",
69 "<%= dirs.js.src %>/rhodecode/utils/string.js",
68 "<%= dirs.js.src %>/rhodecode/utils/pyroutes.js",
70 "<%= dirs.js.src %>/rhodecode/utils/pyroutes.js",
69 "<%= dirs.js.src %>/rhodecode/utils/ajax.js",
71 "<%= dirs.js.src %>/rhodecode/utils/ajax.js",
70 "<%= dirs.js.src %>/rhodecode/utils/autocomplete.js",
72 "<%= dirs.js.src %>/rhodecode/utils/autocomplete.js",
71 "<%= dirs.js.src %>/rhodecode/utils/colorgenerator.js",
73 "<%= dirs.js.src %>/rhodecode/utils/colorgenerator.js",
72 "<%= dirs.js.src %>/rhodecode/utils/ie.js",
74 "<%= dirs.js.src %>/rhodecode/utils/ie.js",
73 "<%= dirs.js.src %>/rhodecode/utils/os.js",
75 "<%= dirs.js.src %>/rhodecode/utils/os.js",
74 "<%= dirs.js.src %>/rhodecode/utils/topics.js",
76 "<%= dirs.js.src %>/rhodecode/utils/topics.js",
75 "<%= dirs.js.src %>/rhodecode/init.js",
77 "<%= dirs.js.src %>/rhodecode/init.js",
76 "<%= dirs.js.src %>/rhodecode/changelog.js",
78 "<%= dirs.js.src %>/rhodecode/changelog.js",
77 "<%= dirs.js.src %>/rhodecode/codemirror.js",
79 "<%= dirs.js.src %>/rhodecode/codemirror.js",
78 "<%= dirs.js.src %>/rhodecode/comments.js",
80 "<%= dirs.js.src %>/rhodecode/comments.js",
79 "<%= dirs.js.src %>/rhodecode/constants.js",
81 "<%= dirs.js.src %>/rhodecode/constants.js",
80 "<%= dirs.js.src %>/rhodecode/files.js",
82 "<%= dirs.js.src %>/rhodecode/files.js",
81 "<%= dirs.js.src %>/rhodecode/followers.js",
83 "<%= dirs.js.src %>/rhodecode/followers.js",
82 "<%= dirs.js.src %>/rhodecode/menus.js",
84 "<%= dirs.js.src %>/rhodecode/menus.js",
83 "<%= dirs.js.src %>/rhodecode/notifications.js",
85 "<%= dirs.js.src %>/rhodecode/notifications.js",
84 "<%= dirs.js.src %>/rhodecode/permissions.js",
86 "<%= dirs.js.src %>/rhodecode/permissions.js",
85 "<%= dirs.js.src %>/rhodecode/pjax.js",
87 "<%= dirs.js.src %>/rhodecode/pjax.js",
86 "<%= dirs.js.src %>/rhodecode/pullrequests.js",
88 "<%= dirs.js.src %>/rhodecode/pullrequests.js",
87 "<%= dirs.js.src %>/rhodecode/settings.js",
89 "<%= dirs.js.src %>/rhodecode/settings.js",
88 "<%= dirs.js.src %>/rhodecode/select2_widgets.js",
90 "<%= dirs.js.src %>/rhodecode/select2_widgets.js",
89 "<%= dirs.js.src %>/rhodecode/tooltips.js",
91 "<%= dirs.js.src %>/rhodecode/tooltips.js",
90 "<%= dirs.js.src %>/rhodecode/users.js",
92 "<%= dirs.js.src %>/rhodecode/users.js",
91 "<%= dirs.js.src %>/rhodecode/appenlight.js",
93 "<%= dirs.js.src %>/rhodecode/appenlight.js",
92 "<%= dirs.js.src %>/rhodecode.js"
94 "<%= dirs.js.src %>/rhodecode.js",
95 "<%= dirs.js.dest %>/rhodecode-components.js"
93 ],
96 ],
94 "dest": "<%= dirs.js.dest %>/scripts.js",
97 "dest": "<%= dirs.js.dest %>/scripts.js",
95 "nonull": true
98 "nonull": true
96 }
99 }
97 },
100 },
98 "crisper": {
99 "dist": {
100 "options": {
101 "cleanup": false,
102 "onlySplit": true
103 },
104 "src": "<%= dirs.js.dest %>/rhodecode-components.html",
105 "dest": "<%= dirs.js.dest %>/rhodecode-components.js"
106 }
107 },
108 "less": {
101 "less": {
109 "development": {
102 "development": {
110 "options": {
103 "options": {
111 "compress": false,
104 "compress": false,
112 "yuicompress": false,
105 "yuicompress": false,
113 "optimization": 0
106 "optimization": 0
114 },
107 },
115 "files": {
108 "files": {
116 "<%= dirs.css.dest %>/style.css": "<%= dirs.css.src %>/main.less",
109 "<%= dirs.css.dest %>/style.css": "<%= dirs.css.src %>/main.less",
117 "<%= dirs.css.dest %>/style-polymer.css": "<%= dirs.css.src %>/polymer.less"
110 "<%= dirs.css.dest %>/style-polymer.css": "<%= dirs.css.src %>/polymer.less"
118 }
111 }
119 },
112 },
120 "production": {
113 "production": {
121 "options": {
114 "options": {
122 "compress": true,
115 "compress": true,
123 "yuicompress": true,
116 "yuicompress": true,
124 "optimization": 2
117 "optimization": 2
125 },
118 },
126 "files": {
119 "files": {
127 "<%= dirs.css.dest %>/style.css": "<%= dirs.css.src %>/main.less",
120 "<%= dirs.css.dest %>/style.css": "<%= dirs.css.src %>/main.less",
128 "<%= dirs.css.dest %>/style-polymer.css": "<%= dirs.css.src %>/polymer.less"
121 "<%= dirs.css.dest %>/style-polymer.css": "<%= dirs.css.src %>/polymer.less"
129 }
122 }
130 },
123 },
131 "components": {
124 "components": {
132 "files": [
125 "files": [
133 {
126 {
134 "cwd": "<%= dirs.js.src %>/components/",
127 "cwd": "<%= dirs.js.src %>/components/",
135 "dest": "<%= dirs.js.src %>/components/",
128 "dest": "<%= dirs.js.src %>/components/",
136 "src": [
129 "src": [
137 "**/*.less"
130 "**/*.less"
138 ],
131 ],
139 "expand": true,
132 "expand": true,
140 "ext": ".css"
133 "ext": ".css"
141 }
134 }
142 ]
135 ]
143 }
136 }
144 },
137 },
145 "watch": {
138 "watch": {
146 "less": {
139 "less": {
147 "files": [
140 "files": [
148 "<%= dirs.css.src %>/**/*.less",
141 "<%= dirs.css.src %>/**/*.less",
149 "<%= dirs.js.src %>/components/**/*.less"
142 "<%= dirs.js.src %>/components/**/*.less"
150 ],
143 ],
151 "tasks": [
144 "tasks": [
152 "less:development",
145 "less:development",
153 "less:components",
146 "less:components",
154 "concat:polymercss",
147 "concat:polymercss",
155 "vulcanize",
148 "webpack",
156 "crisper",
157 "concat:dist"
149 "concat:dist"
158 ]
150 ]
159 },
151 },
160 "js": {
152 "js": {
161 "files": [
153 "files": [
162 "!<%= dirs.js.src %>/components/root-styles.gen.html",
154 "!<%= dirs.js.src %>/components/root-styles.gen.html",
163 "<%= dirs.js.src %>/**/*.js",
155 "<%= dirs.js.src %>/**/*.js",
164 "<%= dirs.js.src %>/components/**/*.html"
156 "<%= dirs.js.src %>/components/**/*.html"
165 ],
157 ],
166 "tasks": [
158 "tasks": [
167 "less:components",
159 "less:components",
168 "concat:polymercss",
160 "concat:polymercss",
169 "vulcanize",
161 "webpack",
170 "crisper",
171 "concat:dist"
162 "concat:dist"
172 ]
163 ]
173 }
164 }
174 },
165 },
175 "jshint": {
166 "jshint": {
176 "rhodecode": {
167 "rhodecode": {
177 "src": "<%= dirs.js.src %>/rhodecode/**/*.js",
168 "src": "<%= dirs.js.src %>/rhodecode/**/*.js",
178 "options": {
169 "options": {
179 "jshintrc": ".jshintrc"
170 "jshintrc": ".jshintrc"
180 }
171 }
181 }
172 }
182 },
183 "vulcanize": {
184 "default": {
185 "options": {
186 "abspath": "",
187 "inlineScripts": true,
188 "inlineCss": true,
189 "stripComments": true
190 },
191 "files": {
192 "<%= dirs.js.dest %>/rhodecode-components.html": "<%= dirs.js.src %>/components/shared-components.html"
193 }
173 }
194 }
174 }
195 }
196 }
@@ -1,33 +1,58 b''
1 {
1 {
2 "name": "rhodecode-enterprise",
2 "name": "rhodecode-enterprise",
3 "version": "1.0.0",
3 "version": "2.0.0",
4 "private": true,
4 "private": true,
5 "description" : "RhodeCode JS packaged",
5 "description" : "RhodeCode JS packaged",
6 "license": "SEE LICENSE IN LICENSE.txt",
6 "license": "SEE LICENSE IN LICENSE.txt",
7 "repository" : {
7 "repository" : {
8 "type" : "hg",
8 "type" : "hg",
9 "url" : "https://code.rhodecode.com/rhodecode-enterprise-ce"
9 "url" : "https://code.rhodecode.com/rhodecode-enterprise-ce"
10 },
10 },
11 "devDependencies": {
11 "devDependencies": {
12 "appenlight-client": "git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1",
13 "clipboard": "^2.0.1",
14 "exports-loader": "^0.6.4",
15 "favico.js": "^0.3.10",
12 "grunt": "^0.4.5",
16 "grunt": "^0.4.5",
17 "grunt-cli": "^1.3.1",
18 "grunt-contrib-concat": "^0.5.1",
13 "grunt-contrib-copy": "^1.0.0",
19 "grunt-contrib-copy": "^1.0.0",
14 "grunt-contrib-concat": "^0.5.1",
15 "grunt-contrib-jshint": "^0.12.0",
20 "grunt-contrib-jshint": "^0.12.0",
16 "grunt-contrib-less": "^1.1.0",
21 "grunt-contrib-less": "^1.1.0",
17 "grunt-contrib-watch": "^0.6.1",
22 "grunt-contrib-watch": "^0.6.1",
18 "crisper": "^2.1.1",
23 "grunt-webpack": "^3.1.3",
19 "vulcanize": "^1.16.0",
24 "jquery": "1.11.3",
20 "grunt-crisper": "^1.0.1",
21 "grunt-vulcanize": "^1.0.0",
22 "node2nix": "^1.0.0",
23 "jshint": "^2.9.1-rc3",
25 "jshint": "^2.9.1-rc3",
24 "bower": "^1.8.4",
25 "jquery": "1.11.3",
26 "favico.js": "^0.3.10",
27 "clipboard": "^2.0.1",
28 "qrious": "^4.0.2",
29 "moment": "^2.18.1",
26 "moment": "^2.18.1",
30 "mousetrap": "^1.6.1",
27 "mousetrap": "^1.6.1",
31 "appenlight-client": "git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1"
28 "qrious": "^4.0.2",
29 "sticky-sidebar": "3.3.1",
30 "waypoints": "4.0.1",
31 "webpack": "4.23.1",
32 "webpack-cli": "3.1.2",
33 "babel-core": "^6.26.3",
34 "babel-loader": "^7.1.2",
35 "babel-plugin-transform-object-rest-spread": "^6.26.0",
36 "babel-preset-env": "^1.6.0",
37 "copy-webpack-plugin": "^4.4.2",
38 "css-loader": "^0.28.11",
39 "html-loader": "^0.4.4",
40 "html-webpack-plugin": "^3.2.0",
41 "imports-loader": "^0.7.1",
42 "polymer-webpack-loader": "^2.0.1",
43 "style-loader": "^0.21.0",
44 "webpack-uglify-js-plugin": "^1.1.9",
45 "raw-loader": "1.0.0-beta.0",
46 "ts-loader": "^1.3.3",
47 "@webcomponents/webcomponentsjs": "^2.0.0",
48 "@polymer/polymer": "^3.0.0",
49 "@polymer/paper-button": "^3.0.0",
50 "@polymer/paper-spinner": "^3.0.0",
51 "@polymer/paper-tooltip": "^3.0.0",
52 "@polymer/paper-toast": "^3.0.0",
53 "@polymer/paper-toggle-button": "^3.0.0",
54 "@polymer/iron-ajax": "^3.0.0",
55 "@polymer/iron-autogrow-textarea": "^3.0.0",
56 "@polymer/iron-a11y-keys": "^3.0.0"
32 }
57 }
33 }
58 }
@@ -1,52 +1,57 b''
1
1
2 ==============================
2 ==============================
3 Generate the Nix expressions
3 Generate the Nix expressions
4 ==============================
4 ==============================
5
5
6 Details can be found in the repository of `RhodeCode Enterprise CE`_ inside of
6 Details can be found in the repository of `RhodeCode Enterprise CE`_ inside of
7 the file `docs/contributing/dependencies.rst`.
7 the file `docs/contributing/dependencies.rst`.
8
8
9 Start the environment as follows:
9 Start the environment as follows:
10
10
11 .. code:: shell
11 .. code:: shell
12
12
13 nix-shell pkgs/shell-generate.nix
13 nix-shell pkgs/shell-generate.nix
14
14
15
15
16
16
17 Python dependencies
17 Python dependencies
18 ===================
18 ===================
19
19
20 .. code:: shell
20 .. code:: shell
21
21
22 pip2nix generate --licenses
22 pip2nix generate --licenses
23 # or
23 # or
24 nix-shell pkgs/shell-generate.nix --command "pip2nix generate --licenses"
24 nix-shell pkgs/shell-generate.nix --command "pip2nix generate --licenses"
25
25
26
26
27 NodeJS dependencies
27 NodeJS dependencies
28 ===================
28 ===================
29
29
30 Generate node-packages.nix file with all dependencies from NPM and package.json file
31 This should be run before entering nix-shell.
32
33 The sed at the end fixes a bug with http rewrite of re-generated packages
34
30 .. code:: shell
35 .. code:: shell
31
36
32 rm -rf node_modules
37 rm -rf node_modules &&
33 nix-shell pkgs/shell-generate.nix --command "
38 nix-shell pkgs/shell-generate.nix --command "
34 node2nix --input package.json \
39 node2nix --input package.json \
35 -o pkgs/node-packages.nix \
40 -o pkgs/node-packages.nix \
36 -e pkgs/node-env.nix \
41 -e pkgs/node-env.nix \
37 -c pkgs/node-default.nix \
42 -c pkgs/node-default.nix \
38 -d --flatten --nodejs-6 "
43 -d --flatten --nodejs-8 " &&
44 sed -i -e 's/http:\/\//https:\/\//g' pkgs/node-packages.nix
39
45
40
46
41
47 Generate license data
42 Bower dependencies
48 =====================
43 ==================
44
49
45 .. code:: shell
50 .. code:: shell
46
51
47 nix-shell pkgs/shell-generate.nix --command "bower2nix bower.json pkgs/bower-packages.nix"
52 nix-build pkgs/license-generate.nix -o result-license && cat result-license/licenses.json | python -m json.tool > rhodecode/config/licenses.json
48
53
49
54
50 .. Links
55 .. Links
51
56
52 .. _RhodeCode Enterprise CE: https://code.rhodecode.com/rhodecode-enterprise-ce
57 .. _RhodeCode Enterprise CE: https://code.rhodecode.com/rhodecode-enterprise-ce
@@ -1,160 +1,159 b''
1 # Utility to generate the license information
1 # Utility to generate the license information
2 #
2 #
3 # Usage:
3 # Usage:
4 #
4 #
5 # nix-build -I ~/dev license.nix -A result
5 # nix-build license.nix -o result-license
6 #
6 #
7 # Afterwards ./result will contain the license information as JSON files.
7 # Afterwards ./result-license will contain the license information as JSON files.
8 #
8 #
9 #
9 #
10 # Overview
10 # Overview
11 #
11 #
12 # Uses two steps to get the relevant license information:
12 # Uses two steps to get the relevant license information:
13 #
13 #
14 # 1. Walk down the derivations based on "buildInputs" and
14 # 1. Walk down the derivations based on "buildInputs" and
15 # "propagatedBuildInputs". This results in all dependencies based on the nix
15 # "propagatedBuildInputs". This results in all dependencies based on the nix
16 # declartions.
16 # declartions.
17 #
17 #
18 # 2. Build Enterprise and query nix-store to get a list of runtime
18 # 2. Build Enterprise and query nix-store to get a list of runtime
19 # dependencies. The results from step 1 are then limited to the ones which
19 # dependencies. The results from step 1 are then limited to the ones which
20 # are in this list.
20 # are in this list.
21 #
21 #
22 # The result is then available in ./result/license.json.
22 # The result is then available in ./result-license/license.json.
23 #
23 #
24
24
25
25
26 let
26 let
27
27
28 nixpkgs = import <nixpkgs> {};
28 nixpkgs = import <nixpkgs> {};
29
29
30 stdenv = nixpkgs.stdenv;
30 stdenv = nixpkgs.stdenv;
31
31
32 # Enterprise as simple as possible, goal here is just to identify the runtime
32 # Enterprise as simple as possible, goal here is just to identify the runtime
33 # dependencies. Ideally we could avoid building Enterprise at all and somehow
33 # dependencies. Ideally we could avoid building Enterprise at all and somehow
34 # figure it out without calling into nix-store.
34 # figure it out without calling into nix-store.
35 enterprise = import ./default.nix {
35 enterprise = import ../default.nix {
36 doCheck = false;
36 doCheck = false;
37 };
37 };
38
38
39 # For a given derivation, return the list of all dependencies
39 # For a given derivation, return the list of all dependencies
40 drvToDependencies = drv: nixpkgs.lib.flatten [
40 drvToDependencies = drv: nixpkgs.lib.flatten [
41 drv.nativeBuildInputs or []
41 drv.buildInputs or []
42 drv.propagatedNativeBuildInputs or []
42 drv.propagatedBuildInputs or []
43 ];
43 ];
44
44
45 # Transform the given derivation into the meta information which we need in
45 # Transform the given derivation into the meta information which we need in
46 # the resulting JSON files.
46 # the resulting JSON files.
47 drvToMeta = drv: {
47 drvToMeta = drv: {
48 name = drv.name or "UNNAMED";
48 name = drv.name or drv;
49 license = if drv ? meta.license then drv.meta.license else "UNKNOWN";
49 license = if drv ? meta.license then drv.meta.license else "UNKNOWN";
50 };
50 };
51
51
52 # Walk the tree of buildInputs and propagatedBuildInputs and return it as a
52 # Walk the tree of buildInputs and propagatedBuildInputs and return it as a
53 # flat list. Duplicates are avoided.
53 # flat list. Duplicates are avoided.
54 listDrvDependencies = drv: let
54 listDrvDependencies = drv: let
55 addElement = element: seen:
55 addElement = element: seen:
56 if (builtins.elem element seen)
56 if (builtins.elem element seen)
57 then seen
57 then seen
58 else let
58 else let
59 newSeen = seen ++ [ element ];
59 newSeen = seen ++ [ element ];
60 newDeps = drvToDependencies element;
60 newDeps = drvToDependencies element;
61 in nixpkgs.lib.fold addElement newSeen newDeps;
61 in nixpkgs.lib.fold addElement newSeen newDeps;
62 initialElements = drvToDependencies drv;
62 initialElements = drvToDependencies drv;
63 in nixpkgs.lib.fold addElement [] initialElements;
63 in nixpkgs.lib.fold addElement [] initialElements;
64
64
65 # Reads in a file with store paths and returns a list of derivation names.
65 # Reads in a file with store paths and returns a list of derivation names.
66 #
66 #
67 # Reads the file, splits the lines, then removes the prefix, so that we
67 # Reads the file, splits the lines, then removes the prefix, so that we
68 # end up with a list of derivation names in the end.
68 # end up with a list of derivation names in the end.
69 storePathsToDrvNames = srcPath: let
69 storePathsToDrvNames = srcPath: let
70 rawStorePaths = nixpkgs.lib.removeSuffix "\n" (
70 rawStorePaths = nixpkgs.lib.removeSuffix "\n" (
71 builtins.readFile srcPath);
71 builtins.readFile srcPath);
72 storePaths = nixpkgs.lib.splitString "\n" rawStorePaths;
72 storePaths = nixpkgs.lib.splitString "\n" rawStorePaths;
73 # TODO: johbo: Would be nice to use some sort of utility here to convert
74 # the path to a derivation name.
75 storePathPrefix = (
73 storePathPrefix = (
76 builtins.stringLength "/nix/store/zwy7aavnif9ayw30rya1k6xiacafzzl6-");
74 builtins.stringLength "/nix/store/afafafafafafafafafafafafafafafaf-");
77 storePathToName = path:
75 storePathToName = path:
78 builtins.substring storePathPrefix (builtins.stringLength path) path;
76 builtins.substring storePathPrefix (builtins.stringLength path) path;
79 in (map storePathToName storePaths);
77 in (map storePathToName storePaths);
80
78
81 in rec {
79 in rec {
82
80
83 # Build Enterprise and call nix-store to retrieve the runtime
81 # Build Enterprise and call nix-store to retrieve the runtime
84 # dependencies. The result is available in the nix store.
82 # dependencies. The result is available in the nix store.
85 runtimeDependencies = stdenv.mkDerivation {
83 runtimeDependencies = stdenv.mkDerivation {
86 name = "runtime-dependencies";
84 name = "runtime-dependencies";
87 buildInputs = [
85 buildInputs = [
88 # Needed to query the store
86 # Needed to query the store
89 nixpkgs.nix
87 nixpkgs.nix
90 ];
88 ];
91 unpackPhase = ''
89 unpackPhase = ''
92 echo "Nothing to unpack"
90 echo "Nothing to unpack"
93 '';
91 '';
94 buildPhase = ''
92 buildPhase = ''
95 # Get a list of runtime dependencies
93 # Get a list of runtime dependencies
96 nix-store -q --references ${enterprise} > nix-store-references
94 nix-store -q --references ${enterprise} > nix-store-references
97 '';
95 '';
98 installPhase = ''
96 installPhase = ''
99 mkdir -p $out
97 mkdir -p $out
100 cp -v nix-store-references $out/
98 cp -v nix-store-references $out/
101 '';
99 '';
102 };
100 };
103
101
104 # Produce the license overview files.
102 # Produce the license overview files.
105 result = let
103 result = let
106
104
107 # Dependencies according to the nix-store
105 # Dependencies according to the nix-store
108 runtimeDependencyNames = (
106 runtimeDependencyNames = (
109 storePathsToDrvNames "${runtimeDependencies}/nix-store-references");
107 storePathsToDrvNames "${runtimeDependencies}/nix-store-references");
110
108
111 # Dependencies based on buildInputs and propagatedBuildInputs
109 # Dependencies based on buildInputs and propagatedBuildInputs
112 enterpriseAllDependencies = listDrvDependencies enterprise;
110 enterpriseAllDependencies = listDrvDependencies enterprise;
113 enterpriseRuntimeDependencies = let
111 enterpriseRuntimeDependencies = let
114 elemName = element: element.name or "UNNAMED";
112 elemName = element: element.name or "UNNAMED";
115 isRuntime = element: builtins.elem (elemName element) runtimeDependencyNames;
113 isRuntime = element: builtins.elem (elemName element) runtimeDependencyNames;
116 in builtins.filter isRuntime enterpriseAllDependencies;
114 in builtins.filter isRuntime enterpriseAllDependencies;
117
115
118 # Extract relevant meta information
116 # Extract relevant meta information
119 enterpriseAllLicenses = map drvToMeta enterpriseAllDependencies;
117 enterpriseAllLicenses = map drvToMeta enterpriseAllDependencies;
120 enterpriseRuntimeLicenses = map drvToMeta enterpriseRuntimeDependencies;
118 enterpriseRuntimeLicenses = map drvToMeta enterpriseRuntimeDependencies;
121
119
122 in stdenv.mkDerivation {
120 in stdenv.mkDerivation {
123
121
124 name = "licenses";
122 name = "licenses";
125
123
126 buildInputs = [];
124 buildInputs = [];
127
125
128 unpackPhase = ''
126 unpackPhase = ''
129 echo "Nothing to unpack"
127 echo "Nothing to unpack"
130 '';
128 '';
131
129
132 buildPhase = ''
130 buildPhase = ''
133 mkdir build
131 mkdir build
134
132
135 # Copy list of runtime dependencies for the Python processor
133 # Copy list of runtime dependencies for the Python processor
136 cp "${runtimeDependencies}/nix-store-references" ./build/nix-store-references
134 cp "${runtimeDependencies}/nix-store-references" ./build/nix-store-references
137
135
138 # All licenses which we found by walking buildInputs and
136 # All licenses which we found by walking buildInputs and
139 # propagatedBuildInputs
137 # propagatedBuildInputs
140 cat > build/all-licenses.json <<EOF
138 cat > build/all-licenses.json <<EOF
141 ${builtins.toJSON enterpriseAllLicenses}
139 ${builtins.toJSON enterpriseAllLicenses}
142 EOF
140 EOF
143
141
144 # License information for our runtime dependencies only. Basically all
142 # License information for our runtime dependencies only. Basically all
145 # licenses limited to the items which where also reported by nix-store as
143 # licenses limited to the items which where also reported by nix-store as
146 # a dependency.
144 # a dependency.
147 cat > build/licenses.json <<EOF
145 cat > build/licenses.json <<EOF
148 ${builtins.toJSON enterpriseRuntimeLicenses}
146 ${builtins.toJSON enterpriseRuntimeLicenses}
149 EOF
147 EOF
148
150 '';
149 '';
151
150
152 installPhase = ''
151 installPhase = ''
153 mkdir -p $out
152 mkdir -p $out
154
153
155 # Store it all, that helps when things go wrong
154 # Store it all, that helps when things go wrong
156 cp -rv ./build/* $out
155 cp -rv ./build/* $out
157 '';
156 '';
158 };
157 };
159
158
160 }
159 }
@@ -1,17 +1,17 b''
1 # This file has been generated by node2nix 1.6.0. Do not edit!
1 # This file has been generated by node2nix 1.6.0. Do not edit!
2
2
3 {pkgs ? import <nixpkgs> {
3 {pkgs ? import <nixpkgs> {
4 inherit system;
4 inherit system;
5 }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-6_x"}:
5 }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-8_x"}:
6
6
7 let
7 let
8 nodeEnv = import ./node-env.nix {
8 nodeEnv = import ./node-env.nix {
9 inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
9 inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
10 inherit nodejs;
10 inherit nodejs;
11 libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
11 libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
12 };
12 };
13 in
13 in
14 import ./node-packages.nix {
14 import ./node-packages.nix {
15 inherit (pkgs) fetchurl fetchgit;
15 inherit (pkgs) fetchurl fetchgit;
16 inherit nodeEnv;
16 inherit nodeEnv;
17 } No newline at end of file
17 }
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from pkgs/patch_beaker/patch-beaker-lock-func-debug.diff to pkgs/patches/beaker/patch-beaker-lock-func-debug.diff
NO CONTENT: file renamed from pkgs/patch_beaker/patch-beaker-lock-func-debug.diff to pkgs/patches/beaker/patch-beaker-lock-func-debug.diff
1 NO CONTENT: file renamed from pkgs/patch_beaker/patch-beaker-metadata-reuse.diff to pkgs/patches/beaker/patch-beaker-metadata-reuse.diff
NO CONTENT: file renamed from pkgs/patch_beaker/patch-beaker-metadata-reuse.diff to pkgs/patches/beaker/patch-beaker-metadata-reuse.diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (823 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
General Comments 0
You need to be logged in to leave comments. Login now