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