##// END OF EJS Templates
merged default branch into stable
super-admin -
r5342:5c131067 merge stable
parent child Browse files
Show More

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

@@ -0,0 +1,95 b''
1 ; #####################
2 ; LOGGING CONFIGURATION
3 ; #####################
4
5 [loggers]
6 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
7
8 [handlers]
9 keys = console, console_sql
10
11 [formatters]
12 keys = generic, json, color_formatter, color_formatter_sql
13
14 ; #######
15 ; LOGGERS
16 ; #######
17 [logger_root]
18 level = NOTSET
19 handlers = console
20
21 [logger_sqlalchemy]
22 level = $RC_LOGGING_LEVEL
23 handlers = console_sql
24 qualname = sqlalchemy.engine
25 propagate = 0
26
27 [logger_beaker]
28 level = $RC_LOGGING_LEVEL
29 handlers =
30 qualname = beaker.container
31 propagate = 1
32
33 [logger_rhodecode]
34 level = $RC_LOGGING_LEVEL
35 handlers =
36 qualname = rhodecode
37 propagate = 1
38
39 [logger_ssh_wrapper]
40 level = $RC_LOGGING_LEVEL
41 handlers =
42 qualname = ssh_wrapper
43 propagate = 1
44
45 [logger_celery]
46 level = $RC_LOGGING_LEVEL
47 handlers =
48 qualname = celery
49
50
51 ; ########
52 ; HANDLERS
53 ; ########
54
55 [handler_console]
56 class = StreamHandler
57 args = (sys.stderr, )
58 level = $RC_LOGGING_LEVEL
59 ; To enable JSON formatted logs replace 'generic' with 'json'
60 ; This allows sending properly formatted logs to grafana loki or elasticsearch
61 formatter = $RC_LOGGING_FORMATTER
62
63 [handler_console_sql]
64 ; "level = DEBUG" logs SQL queries and results.
65 ; "level = INFO" logs SQL queries.
66 ; "level = WARN" logs neither. (Recommended for production systems.)
67 class = StreamHandler
68 args = (sys.stderr, )
69 level = WARN
70 ; To enable JSON formatted logs replace 'generic/color_formatter_sql' with 'json'
71 ; This allows sending properly formatted logs to grafana loki or elasticsearch
72 formatter = $RC_LOGGING_FORMATTER
73
74 ; ##########
75 ; FORMATTERS
76 ; ##########
77
78 [formatter_generic]
79 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
80 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
81 datefmt = %Y-%m-%d %H:%M:%S
82
83 [formatter_color_formatter]
84 class = rhodecode.lib.logging_formatter.ColorFormatter
85 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
86 datefmt = %Y-%m-%d %H:%M:%S
87
88 [formatter_color_formatter_sql]
89 class = rhodecode.lib.logging_formatter.ColorFormatterSql
90 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
91 datefmt = %Y-%m-%d %H:%M:%S
92
93 [formatter_json]
94 format = %(timestamp)s %(levelname)s %(name)s %(message)s %(req_id)s
95 class = rhodecode.lib._vendor.jsonlogger.JsonFormatter
@@ -0,0 +1,57 b''
1 # Copyright (C) 2010-2023 RhodeCode GmbH
2 #
3 # This program is free software: you can redistribute it and/or modify
4 # it under the terms of the GNU Affero General Public License, version 3
5 # (only), as published by the Free Software Foundation.
6 #
7 # This program is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 # GNU General Public License for more details.
11 #
12 # You should have received a copy of the GNU Affero General Public License
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 #
15 # This program is dual-licensed. If you wish to learn more about the
16 # RhodeCode Enterprise Edition, including its added features, Support services,
17 # and proprietary license terms, please see https://rhodecode.com/licenses/
18
19 import pytest # noqa
20
21 # keep the imports to have a toplevel conftest.py but still importable from EE edition
22 from rhodecode.tests.conftest_common import ( # noqa
23 pytest_generate_tests,
24 pytest_runtest_makereport,
25 pytest_addoption
26 )
27
28
29 pytest_plugins = [
30 "rhodecode.tests.fixture_mods.fixture_pyramid",
31 "rhodecode.tests.fixture_mods.fixture_utils",
32 ]
33
34
35 def pytest_configure(config):
36 from rhodecode.config import patches # noqa
37
38
39 def pytest_collection_modifyitems(session, config, items):
40 # nottest marked, compare nose, used for transition from nose to pytest
41 remaining = [
42 i for i in items if getattr(i.obj, '__test__', True)]
43 items[:] = remaining
44
45 # NOTE(marcink): custom test ordering, db tests and vcstests are slowest and should
46 # be executed at the end for faster test feedback
47 def sorter(item):
48 pos = 0
49 key = item._nodeid
50 if key.startswith('rhodecode/tests/database'):
51 pos = 1
52 elif key.startswith('rhodecode/tests/vcs_operations'):
53 pos = 2
54
55 return pos
56
57 items.sort(key=sorter)
@@ -0,0 +1,24 b''
1 FROM python:3.12.0-bullseye
2
3 WORKDIR /project
4
5 RUN apt-get update \
6 && apt-get install --no-install-recommends --yes \
7 curl \
8 zip \
9 graphviz \
10 imagemagick \
11 make \
12 && apt-get autoremove \
13 && apt-get clean \
14 && rm -rf /var/lib/apt/lists/*
15
16 RUN \
17 python3 -m pip install --no-cache-dir --upgrade pip && \
18 python3 -m pip install --no-cache-dir Sphinx Pillow
19
20 ADD requirements_docs.txt /project
21 RUN \
22 python3 -m pip install -r requirements_docs.txt
23
24 CMD ["sphinx-build", "-M", "html", ".", "_build"]
@@ -0,0 +1,117 b''
1 <!doctype html>
2 <html class="no-js"{% if language is not none %} lang="{{ language }}"{% endif %} data-content_root="{{ content_root }}">
3 <head>
4 <!-- Google Tag Manager -->
5 <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
6 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
7 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
8 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
9 })(window,document,'script','dataLayer','GTM-M2TSG36B');</script>
10 <!-- End Google Tag Manager -->
11
12 {%- block site_meta -%}
13 <meta charset="utf-8"/>
14 <meta name="viewport" content="width=device-width,initial-scale=1"/>
15 <meta name="color-scheme" content="light dark">
16
17 {%- if metatags %}{{ metatags }}{% endif -%}
18
19 {%- block linktags %}
20 {%- if hasdoc('about') -%}
21 <link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" />
22 {%- endif -%}
23 {%- if hasdoc('genindex') -%}
24 <link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" />
25 {%- endif -%}
26 {%- if hasdoc('search') -%}
27 <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" />
28 {%- endif -%}
29 {%- if hasdoc('copyright') -%}
30 <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" />
31 {%- endif -%}
32 {%- if next -%}
33 <link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}" />
34 {%- endif -%}
35 {%- if prev -%}
36 <link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}" />
37 {%- endif -%}
38 {#- rel="canonical" (set by html_baseurl) -#}
39 {%- if pageurl %}
40 <link rel="canonical" href="{{ pageurl|e }}" />
41 {%- endif %}
42 {%- endblock linktags %}
43
44 {# Favicon #}
45 {%- if favicon_url -%}
46 <link rel="shortcut icon" href="{{ favicon_url }}"/>
47 {%- endif -%}
48
49 <!-- Generated with Sphinx {{ sphinx_version }} and Furo {{ furo_version }} -->
50
51 {%- endblock site_meta -%}
52
53 {#- Site title -#}
54 {%- block htmltitle -%}
55 {% if not docstitle %}
56 <title>{{ title|striptags|e }}</title>
57 {% elif pagename == master_doc %}
58 <title>{{ docstitle|striptags|e }}</title>
59 {% else %}
60 <title>{{ title|striptags|e }} - {{ docstitle|striptags|e }}</title>
61 {% endif %}
62 {%- endblock -%}
63
64 {%- block styles -%}
65
66 {# Custom stylesheets #}
67 {%- block regular_styles -%}
68 {%- for css in css_files -%}
69 {% if css|attr("filename") -%}
70 {{ css_tag(css) }}
71 {%- else -%}
72 <link rel="stylesheet" href="{{ pathto(css, 1)|e }}" type="text/css" />
73 {%- endif %}
74 {% endfor -%}
75 {%- endblock regular_styles -%}
76
77 {#- Theme-related stylesheets -#}
78 {%- block theme_styles %}
79 {% include "partials/_head_css_variables.html" with context %}
80 {%- endblock -%}
81
82 {%- block extra_styles %}
83 {%- endblock -%}
84
85 {%- endblock styles -%}
86
87 {#- Custom front matter #}
88 {%- block extrahead -%}{%- endblock -%}
89 </head>
90 <body>
91 <!-- Google Tag Manager (noscript) -->
92 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-M2TSG36B"
93 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
94 <!-- End Google Tag Manager (noscript) -->
95
96 {% block body %}
97 <script>
98 document.body.dataset.theme = localStorage.getItem("theme") || "auto";
99 </script>
100 {% endblock %}
101
102 {%- block scripts -%}
103
104 {# Custom JS #}
105 {%- block regular_scripts -%}
106 {% for path in script_files -%}
107 {{ js_tag(path) }}
108 {% endfor -%}
109 {%- endblock regular_scripts -%}
110
111 {# Theme-related JavaScript code #}
112 {%- block theme_scripts -%}
113 {%- endblock -%}
114
115 {%- endblock scripts -%}
116 </body>
117 </html> No newline at end of file
@@ -0,0 +1,204 b''
1 {% extends "base.html" %}
2
3 {% block body -%}
4 {{ super() }}
5 {% include "partials/icons.html" %}
6
7 <input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation">
8 <input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc">
9 <label class="overlay sidebar-overlay" for="__navigation">
10 <div class="visually-hidden">Hide navigation sidebar</div>
11 </label>
12 <label class="overlay toc-overlay" for="__toc">
13 <div class="visually-hidden">Hide table of contents sidebar</div>
14 </label>
15
16 {% if theme_announcement -%}
17 <div class="announcement">
18 <aside class="announcement-content">
19 {% block announcement %} {{ theme_announcement }} {% endblock announcement %}
20 </aside>
21 </div>
22 {%- endif %}
23
24 <div class="page">
25 <header class="mobile-header">
26 <div class="header-left">
27 <label class="nav-overlay-icon" for="__navigation">
28 <div class="visually-hidden">Toggle site navigation sidebar</div>
29 <i class="icon"><svg><use href="#svg-menu"></use></svg></i>
30 </label>
31 </div>
32 <div class="header-center">
33 <a href="{{ pathto(master_doc) }}"><div class="brand">{{ docstitle if docstitle else project }}</div></a>
34 </div>
35 <div class="header-right">
36 <div class="theme-toggle-container theme-toggle-header">
37 <button class="theme-toggle">
38 <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div>
39 <svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg>
40 <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
41 <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
42 </button>
43 </div>
44 <label class="toc-overlay-icon toc-header-icon{% if furo_hide_toc %} no-toc{% endif %}" for="__toc">
45 <div class="visually-hidden">Toggle table of contents sidebar</div>
46 <i class="icon"><svg><use href="#svg-toc"></use></svg></i>
47 </label>
48 </div>
49 </header>
50 <aside class="sidebar-drawer">
51 <div class="sidebar-container">
52 {% block left_sidebar %}
53 <div class="sidebar-sticky">
54 {%- for sidebar_section in sidebars %}
55 {%- include sidebar_section %}
56 {%- endfor %}
57 </div>
58 {% endblock left_sidebar %}
59 </div>
60 </aside>
61 <div class="main">
62 <div class="content">
63 <div class="article-container">
64 <a href="#" class="back-to-top muted-link">
65 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
66 <path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
67 </svg>
68 <span>{% trans %}Back to top{% endtrans %}</span>
69 </a>
70 <div class="content-icon-container">
71 {% if theme_top_of_page_button == "edit" -%}
72 {%- include "components/edit-this-page.html" with context -%}
73 {%- elif theme_top_of_page_button != None -%}
74 {{ warning("Got an unsupported value for 'top_of_page_button'") }}
75 {%- endif -%}
76 {#- Theme toggle -#}
77 <div class="theme-toggle-container theme-toggle-content">
78 <button class="theme-toggle">
79 <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div>
80 <svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg>
81 <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
82 <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
83 </button>
84 </div>
85 <label class="toc-overlay-icon toc-content-icon{% if furo_hide_toc %} no-toc{% endif %}" for="__toc">
86 <div class="visually-hidden">Toggle table of contents sidebar</div>
87 <i class="icon"><svg><use href="#svg-toc"></use></svg></i>
88 </label>
89 </div>
90 <article role="main">
91 {% block content %}{{ body }}{% endblock %}
92 </article>
93 </div>
94 <footer>
95 {% block footer %}
96 <div class="related-pages">
97 {% if next -%}
98 <a class="next-page" href="{{ next.link }}">
99 <div class="page-info">
100 <div class="context">
101 <span>{{ _("Next") }}</span>
102 </div>
103 <div class="title">{{ next.title }}</div>
104 </div>
105 <svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
106 </a>
107 {%- endif %}
108 {% if prev -%}
109 <a class="prev-page" href="{{ prev.link }}">
110 <svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
111 <div class="page-info">
112 <div class="context">
113 <span>{{ _("Previous") }}</span>
114 </div>
115 {% if prev.link == pathto(master_doc) %}
116 <div class="title">{{ _("Home") }}</div>
117 {% else %}
118 <div class="title">{{ prev.title }}</div>
119 {% endif %}
120 </div>
121 </a>
122 {%- endif %}
123 </div>
124 <div class="bottom-of-page">
125 <div class="left-details">
126 {%- if show_copyright %}
127 <div class="copyright">
128 {%- if hasdoc('copyright') %}
129 {% trans path=pathto('copyright'), copyright=copyright|e -%}
130 <a href="{{ path }}">Copyright</a> &#169; {{ copyright }}
131 {%- endtrans %}
132 {%- else %}
133 {% trans copyright=copyright|e -%}
134 Copyright &#169; {{ copyright }}
135 {%- endtrans %}
136 {%- endif %}
137 </div>
138 {%- endif %}
139
140 {%- if show_sphinx -%}
141 {% trans %}<a href="https://www.sphinx-doc.org/">Sphinx</a> and {% endtrans -%}
142 <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
143 {% endif -%}
144 {%- if last_updated -%}
145 <div class="last-updated">
146 {% trans last_updated=last_updated|e -%}
147 Last updated on {{ last_updated }}
148 {%- endtrans -%}
149 </div>
150
151 <div style="border-top: 0">
152 Got documentation defects and suggestions? <a href="https://community.rhodecode.com">Submit docs issues</a>
153 </div>
154
155 {%- endif %}
156 </div>
157 <div class="right-details">
158 {% if theme_footer_icons or READTHEDOCS -%}
159 <div class="icons">
160 {% if theme_footer_icons -%}
161 {% for icon_dict in theme_footer_icons -%}
162 <a class="muted-link {{ icon_dict.class }}" href="{{ icon_dict.url }}" aria-label="{{ icon_dict.name }}">
163 {{- icon_dict.html -}}
164 </a>
165 {% endfor %}
166 {%- else -%}
167 {#- Show Read the Docs project -#}
168 {%- if READTHEDOCS and slug -%}
169 <a class="muted-link" href="https://readthedocs.org/projects/{{ slug }}" aria-label="On Read the Docs">
170 <svg x="0px" y="0px" viewBox="-125 217 360 360" xml:space="preserve">
171 <path fill="currentColor" d="M39.2,391.3c-4.2,0.6-7.1,4.4-6.5,8.5c0.4,3,2.6,5.5,5.5,6.3 c0,0,18.5,6.1,50,8.7c25.3,2.1,54-1.8,54-1.8c4.2-0.1,7.5-3.6,7.4-7.8c-0.1-4.2-3.6-7.5-7.8-7.4c-0.5,0-1,0.1-1.5,0.2 c0,0-28.1,3.5-50.9,1.6c-30.1-2.4-46.5-7.9-46.5-7.9C41.7,391.3,40.4,391.1,39.2,391.3z M39.2,353.6c-4.2,0.6-7.1,4.4-6.5,8.5 c0.4,3,2.6,5.5,5.5,6.3c0,0,18.5,6.1,50,8.7c25.3,2.1,54-1.8,54-1.8c4.2-0.1,7.5-3.6,7.4-7.8c-0.1-4.2-3.6-7.5-7.8-7.4 c-0.5,0-1,0.1-1.5,0.2c0,0-28.1,3.5-50.9,1.6c-30.1-2.4-46.5-7.9-46.5-7.9C41.7,353.6,40.4,353.4,39.2,353.6z M39.2,315.9 c-4.2,0.6-7.1,4.4-6.5,8.5c0.4,3,2.6,5.5,5.5,6.3c0,0,18.5,6.1,50,8.7c25.3,2.1,54-1.8,54-1.8c4.2-0.1,7.5-3.6,7.4-7.8 c-0.1-4.2-3.6-7.5-7.8-7.4c-0.5,0-1,0.1-1.5,0.2c0,0-28.1,3.5-50.9,1.6c-30.1-2.4-46.5-7.9-46.5-7.9 C41.7,315.9,40.4,315.8,39.2,315.9z M39.2,278.3c-4.2,0.6-7.1,4.4-6.5,8.5c0.4,3,2.6,5.5,5.5,6.3c0,0,18.5,6.1,50,8.7 c25.3,2.1,54-1.8,54-1.8c4.2-0.1,7.5-3.6,7.4-7.8c-0.1-4.2-3.6-7.5-7.8-7.4c-0.5,0-1,0.1-1.5,0.2c0,0-28.1,3.5-50.9,1.6 c-30.1-2.4-46.5-7.9-46.5-7.9C41.7,278.2,40.4,278.1,39.2,278.3z M-13.6,238.5c-39.6,0.3-54.3,12.5-54.3,12.5v295.7 c0,0,14.4-12.4,60.8-10.5s55.9,18.2,112.9,19.3s71.3-8.8,71.3-8.8l0.8-301.4c0,0-25.6,7.3-75.6,7.7c-49.9,0.4-61.9-12.7-107.7-14.2 C-8.2,238.6-10.9,238.5-13.6,238.5z M19.5,257.8c0,0,24,7.9,68.3,10.1c37.5,1.9,75-3.7,75-3.7v267.9c0,0-19,10-66.5,6.6 C59.5,536.1,19,522.1,19,522.1L19.5,257.8z M-3.6,264.8c4.2,0,7.7,3.4,7.7,7.7c0,4.2-3.4,7.7-7.7,7.7c0,0-12.4,0.1-20,0.8 c-12.7,1.3-21.4,5.9-21.4,5.9c-3.7,2-8.4,0.5-10.3-3.2c-2-3.7-0.5-8.4,3.2-10.3c0,0,0,0,0,0c0,0,11.3-6,27-7.5 C-16,264.9-3.6,264.8-3.6,264.8z M-11,302.6c4.2-0.1,7.4,0,7.4,0c4.2,0.5,7.2,4.3,6.7,8.5c-0.4,3.5-3.2,6.3-6.7,6.7 c0,0-12.4,0.1-20,0.8c-12.7,1.3-21.4,5.9-21.4,5.9c-3.7,2-8.4,0.5-10.3-3.2c-2-3.7-0.5-8.4,3.2-10.3c0,0,11.3-6,27-7.5 C-20.5,302.9-15.2,302.7-11,302.6z M-3.6,340.2c4.2,0,7.7,3.4,7.7,7.7s-3.4,7.7-7.7,7.7c0,0-12.4-0.1-20,0.7 c-12.7,1.3-21.4,5.9-21.4,5.9c-3.7,2-8.4,0.5-10.3-3.2c-2-3.7-0.5-8.4,3.2-10.3c0,0,11.3-6,27-7.5C-16,340.1-3.6,340.2-3.6,340.2z" />
172 </svg>
173 </a>
174 {%- endif -%}
175 {%- endif %}
176 </div>
177 {%- endif %}
178 </div>
179 </div>
180 {% endblock footer %}
181 </footer>
182 </div>
183 <aside class="toc-drawer{% if furo_hide_toc %} no-toc{% endif %}">
184 {% block right_sidebar %}
185 {% if not furo_hide_toc %}
186 <div class="toc-sticky toc-scroll">
187 <div class="toc-title-container">
188 <span class="toc-title">
189 {{ _("On this page") }}
190 </span>
191 </div>
192 <div class="toc-tree-container">
193 <div class="toc-tree">
194 {{ toc }}
195 </div>
196 </div>
197 </div>
198 {% endif %}
199 {% endblock right_sidebar %}
200 </aside>
201 </div>
202 </div>
203
204 {%- endblock %}
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
@@ -1,10 +1,17 b''
1 {
1 {
2 "presets": [
2 "presets": [
3 ["env", {
3 [
4 "targets": {
4 "env",
5 "browsers": ["last 2 versions"]
5 {
6 "targets": {
7 "browsers": [
8 "last 2 versions"
9 ]
10 }
6 }
11 }
7 }]
12 ]
8 ],
13 ],
9 "plugins": ["transform-object-rest-spread"]
14 "plugins": [
15 "transform-object-rest-spread"
16 ]
10 }
17 }
@@ -1,6 +1,5 b''
1 [bumpversion]
1 [bumpversion]
2 current_version = 4.27.1
2 current_version = 5.0.0
3 message = release: Bump version {current_version} to {new_version}
3 message = release: Bump version {current_version} to {new_version}
4
4
5 [bumpversion:file:rhodecode/VERSION]
5 [bumpversion:file:rhodecode/VERSION]
6
@@ -1,4 +1,5 b''
1 syntax: glob
1 syntax: glob
2
2 *.egg
3 *.egg
3 *.egg-info
4 *.egg-info
4 *.idea
5 *.idea
@@ -18,6 +19,7 b' syntax: regexp'
18 ^\.pydevproject$
19 ^\.pydevproject$
19 ^\.coverage$
20 ^\.coverage$
20 ^\.cache.*$
21 ^\.cache.*$
22 ^\.ruff_cache.*$
21 ^\.rhodecode$
23 ^\.rhodecode$
22
24
23 ^rcextensions
25 ^rcextensions
@@ -36,6 +38,7 b' syntax: regexp'
36 ^junit\.xml$
38 ^junit\.xml$
37 ^node_modules/
39 ^node_modules/
38 ^node_binaries/
40 ^node_binaries/
41 ^package-lock.json
39 ^pylint.log$
42 ^pylint.log$
40 ^rcextensions/
43 ^rcextensions/
41 ^result$
44 ^result$
@@ -53,6 +56,7 b' syntax: regexp'
53 ^rhodecode_dev\.log$
56 ^rhodecode_dev\.log$
54 ^test\.db$
57 ^test\.db$
55
58
59
56 # ac-tests
60 # ac-tests
57 ^acceptance_tests/\.cache.*$
61 ^acceptance_tests/\.cache.*$
58 ^acceptance_tests/externals
62 ^acceptance_tests/externals
@@ -1,12 +1,12 b''
1 # top level files
1 # top level files
2
2 include *.rst
3 include MANIFEST.in
3 include *.txt
4 include README.rst
5 include CHANGES.rst
6 include LICENSE.txt
7
4
8 include rhodecode/VERSION
5 include rhodecode/VERSION
9
6
7 # all python files inside packages
8 graft rhodecode
9
10 # docs
10 # docs
11 recursive-include docs *
11 recursive-include docs *
12
12
@@ -48,5 +48,10 b' recursive-include rhodecode/public/js *'
48 recursive-include rhodecode/templates *
48 recursive-include rhodecode/templates *
49
49
50 # skip any tests files
50 # skip any tests files
51 recursive-exclude rhodecode/api/tests *
51 recursive-exclude rhodecode/tests *
52 recursive-exclude rhodecode/tests *
52
53
54 recursive-exclude docs/_build *
55 recursive-exclude * __pycache__
56 recursive-exclude * *.py[co]
57 recursive-exclude * .*.sw[a-z]
@@ -1,98 +1,192 b''
1 .DEFAULT_GOAL := help
1 # required for pushd to work..
2 SHELL = /bin/bash
3
2
4
3 # set by: PATH_TO_OUTDATED_PACKAGES=/some/path/outdated_packages.py
5 # set by: PATH_TO_OUTDATED_PACKAGES=/some/path/outdated_packages.py
4 OUTDATED_PACKAGES = ${PATH_TO_OUTDATED_PACKAGES}
6 OUTDATED_PACKAGES = ${PATH_TO_OUTDATED_PACKAGES}
5
7
6 NODE_PATH=./node_modules
7 WEBPACK=./node_binaries/webpack
8 GRUNT=./node_binaries/grunt
9
10 .PHONY: clean
8 .PHONY: clean
11 clean: ## full clean
9 ## Cleanup compiled and cache py files
10 clean:
12 make test-clean
11 make test-clean
13 find . -type f \( -iname '*.c' -o -iname '*.pyc' -o -iname '*.so' -o -iname '*.orig' \) -exec rm '{}' ';'
12 find . -type f \( -iname '*.c' -o -iname '*.pyc' -o -iname '*.so' -o -iname '*.orig' \) -exec rm '{}' ';'
13 find . -type d -name "build" -prune -exec rm -rf '{}' ';'
14
14
15
15
16 .PHONY: test
16 .PHONY: test
17 test: ## run test-clean and tests
17 ## run test-clean and tests
18 test:
18 make test-clean
19 make test-clean
19 make test-only
20 make test-only
20
21
21
22
22 .PHONY:test-clean
23 .PHONY: test-clean
23 test-clean: ## run test-clean and tests
24 ## run test-clean and tests
25 test-clean:
24 rm -rf coverage.xml htmlcov junit.xml pylint.log result
26 rm -rf coverage.xml htmlcov junit.xml pylint.log result
25 find . -type d -name "__pycache__" -prune -exec rm -rf '{}' ';'
27 find . -type d -name "__pycache__" -prune -exec rm -rf '{}' ';'
26 find . -type f \( -iname '.coverage.*' \) -exec rm '{}' ';'
28 find . -type f \( -iname '.coverage.*' \) -exec rm '{}' ';'
27
29
28
30
29 .PHONY: test-only
31 .PHONY: test-only
30 test-only: ## run tests
32 ## Run tests only without cleanup
33 test-only:
31 PYTHONHASHSEED=random \
34 PYTHONHASHSEED=random \
32 py.test -x -vv -r xw -p no:sugar \
35 py.test -x -vv -r xw -p no:sugar \
33 --cov=rhodecode --cov-report=term-missing --cov-report=html \
36 --cov-report=term-missing --cov-report=html \
34 rhodecode
37 --cov=rhodecode rhodecode
35
38
36
39
37 .PHONY: test-only-mysql
40 .PHONY: test-only-mysql
38 test-only-mysql: ## run tests against mysql
41 ## run tests against mysql
42 test-only-mysql:
39 PYTHONHASHSEED=random \
43 PYTHONHASHSEED=random \
40 py.test -x -vv -r xw -p no:sugar \
44 py.test -x -vv -r xw -p no:sugar \
41 --cov=rhodecode --cov-report=term-missing --cov-report=html \
45 --cov-report=term-missing --cov-report=html \
42 --ini-config-override='{"app:main": {"sqlalchemy.db1.url": "mysql://root:qweqwe@localhost/rhodecode_test?charset=utf8"}}' \
46 --ini-config-override='{"app:main": {"sqlalchemy.db1.url": "mysql://root:qweqwe@localhost/rhodecode_test?charset=utf8"}}' \
43 rhodecode
47 --cov=rhodecode rhodecode
44
48
45
49
46 .PHONY: test-only-postgres
50 .PHONY: test-only-postgres
47 test-only-postgres: ## run tests against postgres
51 ## run tests against postgres
52 test-only-postgres:
48 PYTHONHASHSEED=random \
53 PYTHONHASHSEED=random \
49 py.test -x -vv -r xw -p no:sugar \
54 py.test -x -vv -r xw -p no:sugar \
50 --cov=rhodecode --cov-report=term-missing --cov-report=html \
55 --cov-report=term-missing --cov-report=html \
51 --ini-config-override='{"app:main": {"sqlalchemy.db1.url": "postgresql://postgres:qweqwe@localhost/rhodecode_test"}}' \
56 --ini-config-override='{"app:main": {"sqlalchemy.db1.url": "postgresql://postgres:qweqwe@localhost/rhodecode_test"}}' \
52 rhodecode
57 --cov=rhodecode rhodecode
58
59 .PHONY: ruff-check
60 ## run a ruff analysis
61 ruff-check:
62 ruff check --ignore F401 --ignore I001 --ignore E402 --ignore E501 --ignore F841 --exclude rhodecode/lib/dbmigrate --exclude .eggs --exclude .dev .
63
53
64
54 .PHONY: docs
65 .PHONY: docs
55 docs: ## build docs
66 ## build docs
56 (cd docs; nix-build default.nix -o result; make clean html)
67 docs:
68 (cd docs; docker run --rm -v $(PWD):/project --workdir=/project/docs sphinx-doc-build-rc make clean html)
57
69
58
70
59 .PHONY: docs-clean
71 .PHONY: docs-clean
60 docs-clean: ## Cleanup docs
72 ## Cleanup docs
61 (cd docs; make clean)
73 docs-clean:
74 (cd docs; docker run --rm -v $(PWD):/project --workdir=/project/docs sphinx-doc-build-rc make clean)
62
75
63
76
64 .PHONY: docs-cleanup
77 .PHONY: docs-cleanup
65 docs-cleanup: ## Cleanup docs
78 ## Cleanup docs
66 (cd docs; make cleanup)
79 docs-cleanup:
80 (cd docs; docker run --rm -v $(PWD):/project --workdir=/project/docs sphinx-doc-build-rc make cleanup)
67
81
68
82
69 .PHONY: web-build
83 .PHONY: web-build
70 web-build: ## Build static/js
84 ## Build JS packages static/js
71 NODE_PATH=$(NODE_PATH) $(GRUNT)
85 web-build:
72
86 docker run -it --rm -v $(PWD):/project --workdir=/project rhodecode/static-files-build:16 -c "npm install && /project/node_modules/.bin/grunt"
73
87 # run static file check
74 .PHONY: generate-pkgs
88 ./rhodecode/tests/scripts/static-file-check.sh rhodecode/public/
75 generate-pkgs: ## generate new python packages
89 rm -rf node_modules
76 nix-shell pkgs/shell-generate.nix --command "pip2nix generate --licenses"
77
90
78
91
79 .PHONY: pip-packages
92 .PHONY: pip-packages
80 pip-packages: ## show outdated packages
93 ## Show outdated packages
94 pip-packages:
81 python ${OUTDATED_PACKAGES}
95 python ${OUTDATED_PACKAGES}
82
96
83
97
84 .PHONY: generate-js-pkgs
98 .PHONY: build
85 generate-js-pkgs: ## generate js packages
99 ## Build sdist/egg
86 rm -rf node_modules && \
100 build:
87 nix-shell pkgs/shell-generate.nix --command "node2nix --input package.json -o pkgs/node-packages.nix -e pkgs/node-env.nix -c pkgs/node-default.nix -d --flatten --nodejs-8" && \
101 python -m build
88 sed -i -e 's/http:\/\//https:\/\//g' pkgs/node-packages.nix
102
103
104 .PHONY: dev-sh
105 ## make dev-sh
106 dev-sh:
107 sudo echo "deb [trusted=yes] https://apt.fury.io/rsteube/ /" | sudo tee -a "/etc/apt/sources.list.d/fury.list"
108 sudo apt-get update
109 sudo apt-get install -y zsh carapace-bin
110 rm -rf /home/rhodecode/.oh-my-zsh
111 curl https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
112 echo "source <(carapace _carapace)" > /home/rhodecode/.zsrc
113 PROMPT='%(?.%F{green}√.%F{red}?%?)%f %B%F{240}%1~%f%b %# ' zsh
114
115
116 .PHONY: dev-cleanup
117 ## Cleanup: pip freeze | grep -v "^-e" | grep -v "@" | xargs pip uninstall -y
118 dev-cleanup:
119 pip freeze | grep -v "^-e" | grep -v "@" | xargs pip uninstall -y
120 rm -rf /tmp/*
121
122
123 .PHONY: dev-env
124 ## make dev-env based on the requirements files and install develop of packages
125 dev-env:
126 pip install build virtualenv
127 pushd ../rhodecode-vcsserver/ && make dev-env && popd
128 pip wheel --wheel-dir=/home/rhodecode/.cache/pip/wheels -r requirements.txt -r requirements_rc_tools.txt -r requirements_test.txt -r requirements_debug.txt
129 pip install --no-index --find-links=/home/rhodecode/.cache/pip/wheels -r requirements.txt -r requirements_rc_tools.txt -r requirements_test.txt -r requirements_debug.txt
130 pip install -e .
131
132
133 .PHONY: sh
134 ## shortcut for make dev-sh dev-env
135 sh:
136 make dev-env
137 make dev-sh
138
139
140 .PHONY: dev-srv
141 ## run develop server instance, docker exec -it $(docker ps -q --filter 'name=dev-enterprise-ce') /bin/bash
142 dev-srv:
143 pserve --reload .dev/dev.ini
89
144
90
145
91 .PHONY: generate-license-meta
146 .PHONY: dev-srv-g
92 generate-license-meta: ## Generate license metadata
147 ## run gunicorn multi process workers
93 nix-build pkgs/license-generate.nix -o result-license && \
148 dev-srv-g:
94 cat result-license/licenses.json | python -m json.tool > rhodecode/config/licenses.json
149 gunicorn --paste .dev/dev.ini --bind=0.0.0.0:10020 --config=.dev/gunicorn_config.py --timeout=120 --reload
150
151
152 # Default command on calling make
153 .DEFAULT_GOAL := show-help
95
154
96 .PHONY: help
155 .PHONY: show-help
97 help:
156 show-help:
98 @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-24s\033[0m %s\n", $$1, $$2}'
157 @echo "$$(tput bold)Available rules:$$(tput sgr0)"
158 @echo
159 @sed -n -e "/^## / { \
160 h; \
161 s/.*//; \
162 :doc" \
163 -e "H; \
164 n; \
165 s/^## //; \
166 t doc" \
167 -e "s/:.*//; \
168 G; \
169 s/\\n## /---/; \
170 s/\\n/ /g; \
171 p; \
172 }" ${MAKEFILE_LIST} \
173 | LC_ALL='C' sort --ignore-case \
174 | awk -F '---' \
175 -v ncol=$$(tput cols) \
176 -v indent=19 \
177 -v col_on="$$(tput setaf 6)" \
178 -v col_off="$$(tput sgr0)" \
179 '{ \
180 printf "%s%*s%s ", col_on, -indent, $$1, col_off; \
181 n = split($$2, words, " "); \
182 line_length = ncol - indent; \
183 for (i = 1; i <= n; i++) { \
184 line_length -= length(words[i]) + 1; \
185 if (line_length <= 0) { \
186 line_length = ncol - indent - length(words[i]) - 1; \
187 printf "\n%*s ", -indent, " "; \
188 } \
189 printf "%s ", words[i]; \
190 } \
191 printf "\n"; \
192 }'
@@ -1,4 +1,3 b''
1 ## -*- coding: utf-8 -*-
2
1
3 ; #########################################
2 ; #########################################
4 ; RHODECODE COMMUNITY EDITION CONFIGURATION
3 ; RHODECODE COMMUNITY EDITION CONFIGURATION
@@ -27,9 +26,10 b' debug = true'
27 #smtp_use_ssl = true
26 #smtp_use_ssl = true
28
27
29 [server:main]
28 [server:main]
30 ; COMMON HOST/IP CONFIG
29 ; COMMON HOST/IP CONFIG, This applies mostly to develop setup,
30 ; Host port for gunicorn are controlled by gunicorn_conf.py
31 host = 127.0.0.1
31 host = 127.0.0.1
32 port = 5000
32 port = 10020
33
33
34 ; ##################################################
34 ; ##################################################
35 ; WAITRESS WSGI SERVER - Recommended for Development
35 ; WAITRESS WSGI SERVER - Recommended for Development
@@ -53,82 +53,11 b' asyncore_use_poll = true'
53 ; GUNICORN APPLICATION SERVER
53 ; GUNICORN APPLICATION SERVER
54 ; ###########################
54 ; ###########################
55
55
56 ; run with gunicorn --log-config rhodecode.ini --paste rhodecode.ini
56 ; run with gunicorn --paste rhodecode.ini --config gunicorn_conf.py
57
57
58 ; Module to use, this setting shouldn't be changed
58 ; Module to use, this setting shouldn't be changed
59 #use = egg:gunicorn#main
59 #use = egg:gunicorn#main
60
60
61 ; Sets the number of process workers. More workers means more concurrent connections
62 ; RhodeCode can handle at the same time. Each additional worker also it increases
63 ; memory usage as each has it's own set of caches.
64 ; Recommended value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers, but no more
65 ; than 8-10 unless for really big deployments .e.g 700-1000 users.
66 ; `instance_id = *` must be set in the [app:main] section below (which is the default)
67 ; when using more than 1 worker.
68 #workers = 2
69
70 ; Gunicorn access log level
71 #loglevel = info
72
73 ; Process name visible in process list
74 #proc_name = rhodecode
75
76 ; Type of worker class, one of `sync`, `gevent`
77 ; Recommended type is `gevent`
78 #worker_class = gevent
79
80 ; The maximum number of simultaneous clients. Valid only for gevent
81 #worker_connections = 10
82
83 ; Max number of requests that worker will handle before being gracefully restarted.
84 ; Prevents memory leaks, jitter adds variability so not all workers are restarted at once.
85 #max_requests = 1000
86 #max_requests_jitter = 30
87
88 ; Amount of time a worker can spend with handling a request before it
89 ; gets killed and restarted. By default set to 21600 (6hrs)
90 ; Examples: 1800 (30min), 3600 (1hr), 7200 (2hr), 43200 (12h)
91 #timeout = 21600
92
93 ; The maximum size of HTTP request line in bytes.
94 ; 0 for unlimited
95 #limit_request_line = 0
96
97 ; Limit the number of HTTP headers fields in a request.
98 ; By default this value is 100 and can't be larger than 32768.
99 #limit_request_fields = 32768
100
101 ; Limit the allowed size of an HTTP request header field.
102 ; Value is a positive number or 0.
103 ; Setting it to 0 will allow unlimited header field sizes.
104 #limit_request_field_size = 0
105
106 ; Timeout for graceful workers restart.
107 ; After receiving a restart signal, workers have this much time to finish
108 ; serving requests. Workers still alive after the timeout (starting from the
109 ; receipt of the restart signal) are force killed.
110 ; Examples: 1800 (30min), 3600 (1hr), 7200 (2hr), 43200 (12h)
111 #graceful_timeout = 3600
112
113 # The number of seconds to wait for requests on a Keep-Alive connection.
114 # Generally set in the 1-5 seconds range.
115 #keepalive = 2
116
117 ; Maximum memory usage that each worker can use before it will receive a
118 ; graceful restart signal 0 = memory monitoring is disabled
119 ; Examples: 268435456 (256MB), 536870912 (512MB)
120 ; 1073741824 (1GB), 2147483648 (2GB), 4294967296 (4GB)
121 #memory_max_usage = 0
122
123 ; How often in seconds to check for memory usage for each gunicorn worker
124 #memory_usage_check_interval = 60
125
126 ; Threshold value for which we don't recycle worker if GarbageCollection
127 ; frees up enough resources. Before each restart we try to run GC on worker
128 ; in case we get enough free memory after that, restart will not happen.
129 #memory_usage_recovery_threshold = 0.8
130
131
132 ; Prefix middleware for RhodeCode.
61 ; Prefix middleware for RhodeCode.
133 ; recommended when using proxy setup.
62 ; recommended when using proxy setup.
134 ; allows to set RhodeCode under a prefix in server.
63 ; allows to set RhodeCode under a prefix in server.
@@ -143,8 +72,16 b' prefix = /'
143 [app:main]
72 [app:main]
144 ; The %(here)s variable will be replaced with the absolute path of parent directory
73 ; The %(here)s variable will be replaced with the absolute path of parent directory
145 ; of this file
74 ; of this file
146 ; In addition ENVIRONMENT variables usage is possible, e.g
75 ; Each option in the app:main can be override by an environmental variable
147 ; sqlalchemy.db1.url = {ENV_RC_DB_URL}
76 ;
77 ;To override an option:
78 ;
79 ;RC_<KeyName>
80 ;Everything should be uppercase, . and - should be replaced by _.
81 ;For example, if you have these configuration settings:
82 ;rc_cache.repo_object.backend = foo
83 ;can be overridden by
84 ;export RC_CACHE_REPO_OBJECT_BACKEND=foo
148
85
149 use = egg:rhodecode-enterprise-ce
86 use = egg:rhodecode-enterprise-ce
150
87
@@ -211,12 +148,6 b' lang = en'
211 ; Settings this to true could lead to very long startup time.
148 ; Settings this to true could lead to very long startup time.
212 startup.import_repos = false
149 startup.import_repos = false
213
150
214 ; Uncomment and set this path to use archive download cache.
215 ; Once enabled, generated archives will be cached at this location
216 ; and served from the cache during subsequent requests for the same archive of
217 ; the repository.
218 #archive_cache_dir = /tmp/tarballcache
219
220 ; URL at which the application is running. This is used for Bootstrapping
151 ; URL at which the application is running. This is used for Bootstrapping
221 ; requests in context when no web request is available. Used in ishell, or
152 ; requests in context when no web request is available. Used in ishell, or
222 ; SSH calls. Set this for events to receive proper url for SSH calls.
153 ; SSH calls. Set this for events to receive proper url for SSH calls.
@@ -370,23 +301,43 b' file_store.backend = local'
370 ; path to store the uploaded binaries
301 ; path to store the uploaded binaries
371 file_store.storage_path = %(here)s/data/file_store
302 file_store.storage_path = %(here)s/data/file_store
372
303
304 ; Uncomment and set this path to control settings for archive download cache.
305 ; Generated repo archives will be cached at this location
306 ; and served from the cache during subsequent requests for the same archive of
307 ; the repository. This path is important to be shared across filesystems and with
308 ; RhodeCode and vcsserver
309
310 ; Default is $cache_dir/archive_cache if not set
311 archive_cache.store_dir = %(here)s/data/archive_cache
312
313 ; The limit in GB sets how much data we cache before recycling last used, defaults to 10 gb
314 archive_cache.cache_size_gb = 10
315
316 ; By default cache uses sharding technique, this specifies how many shards are there
317 archive_cache.cache_shards = 10
373
318
374 ; #############
319 ; #############
375 ; CELERY CONFIG
320 ; CELERY CONFIG
376 ; #############
321 ; #############
377
322
378 ; manually run celery: /path/to/celery worker -E --beat --app rhodecode.lib.celerylib.loader --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler --loglevel DEBUG --ini /path/to/rhodecode.ini
323 ; manually run celery: /path/to/celery worker --task-events --beat --app rhodecode.lib.celerylib.loader --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler --loglevel DEBUG --ini /path/to/rhodecode.ini
379
324
380 use_celery = false
325 use_celery = false
381
326
327 ; path to store schedule database
328 #celerybeat-schedule.path =
329
382 ; connection url to the message broker (default redis)
330 ; connection url to the message broker (default redis)
383 celery.broker_url = redis://localhost:6379/8
331 celery.broker_url = redis://redis:6379/8
332
333 ; results backend to get results for (default redis)
334 celery.result_backend = redis://redis:6379/8
384
335
385 ; rabbitmq example
336 ; rabbitmq example
386 #celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
337 #celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
387
338
388 ; maximum tasks to execute before worker restart
339 ; maximum tasks to execute before worker restart
389 celery.max_tasks_per_child = 100
340 celery.max_tasks_per_child = 20
390
341
391 ; tasks will never be sent to the queue, but executed locally instead.
342 ; tasks will never be sent to the queue, but executed locally instead.
392 celery.task_always_eager = false
343 celery.task_always_eager = false
@@ -418,13 +369,42 b' rc_cache.cache_repo_longterm.expiration_'
418 rc_cache.cache_repo_longterm.max_size = 10000
369 rc_cache.cache_repo_longterm.max_size = 10000
419
370
420
371
372 ; *********************************************
373 ; `cache_general` cache for general purpose use
374 ; for simplicity use rc.file_namespace backend,
375 ; for performance and scale use rc.redis
376 ; *********************************************
377 rc_cache.cache_general.backend = dogpile.cache.rc.file_namespace
378 rc_cache.cache_general.expiration_time = 43200
379 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
380 #rc_cache.cache_general.arguments.filename = /tmp/cache_general_db
381
382 ; alternative `cache_general` redis backend with distributed lock
383 #rc_cache.cache_general.backend = dogpile.cache.rc.redis
384 #rc_cache.cache_general.expiration_time = 300
385
386 ; redis_expiration_time needs to be greater then expiration_time
387 #rc_cache.cache_general.arguments.redis_expiration_time = 7200
388
389 #rc_cache.cache_general.arguments.host = localhost
390 #rc_cache.cache_general.arguments.port = 6379
391 #rc_cache.cache_general.arguments.db = 0
392 #rc_cache.cache_general.arguments.socket_timeout = 30
393 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
394 #rc_cache.cache_general.arguments.distributed_lock = true
395
396 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
397 #rc_cache.cache_general.arguments.lock_auto_renewal = true
398
421 ; *************************************************
399 ; *************************************************
422 ; `cache_perms` cache for permission tree, auth TTL
400 ; `cache_perms` cache for permission tree, auth TTL
401 ; for simplicity use rc.file_namespace backend,
402 ; for performance and scale use rc.redis
423 ; *************************************************
403 ; *************************************************
424 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
404 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
425 rc_cache.cache_perms.expiration_time = 300
405 rc_cache.cache_perms.expiration_time = 3600
426 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
406 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
427 #rc_cache.cache_perms.arguments.filename = /tmp/cache_perms.db
407 #rc_cache.cache_perms.arguments.filename = /tmp/cache_perms_db
428
408
429 ; alternative `cache_perms` redis backend with distributed lock
409 ; alternative `cache_perms` redis backend with distributed lock
430 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
410 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
@@ -440,14 +420,18 b' rc_cache.cache_perms.expiration_time = 3'
440 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
420 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
441 #rc_cache.cache_perms.arguments.distributed_lock = true
421 #rc_cache.cache_perms.arguments.distributed_lock = true
442
422
423 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
424 #rc_cache.cache_perms.arguments.lock_auto_renewal = true
443
425
444 ; ***************************************************
426 ; ***************************************************
445 ; `cache_repo` cache for file tree, Readme, RSS FEEDS
427 ; `cache_repo` cache for file tree, Readme, RSS FEEDS
428 ; for simplicity use rc.file_namespace backend,
429 ; for performance and scale use rc.redis
446 ; ***************************************************
430 ; ***************************************************
447 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
431 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
448 rc_cache.cache_repo.expiration_time = 2592000
432 rc_cache.cache_repo.expiration_time = 2592000
449 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
433 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
450 #rc_cache.cache_repo.arguments.filename = /tmp/cache_repo.db
434 #rc_cache.cache_repo.arguments.filename = /tmp/cache_repo_db
451
435
452 ; alternative `cache_repo` redis backend with distributed lock
436 ; alternative `cache_repo` redis backend with distributed lock
453 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
437 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
@@ -463,14 +447,16 b' rc_cache.cache_repo.expiration_time = 25'
463 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
447 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
464 #rc_cache.cache_repo.arguments.distributed_lock = true
448 #rc_cache.cache_repo.arguments.distributed_lock = true
465
449
450 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
451 #rc_cache.cache_repo.arguments.lock_auto_renewal = true
466
452
467 ; ##############
453 ; ##############
468 ; BEAKER SESSION
454 ; BEAKER SESSION
469 ; ##############
455 ; ##############
470
456
471 ; beaker.session.type is type of storage options for the logged users sessions. Current allowed
457 ; beaker.session.type is type of storage options for the logged users sessions. Current allowed
472 ; types are file, ext:redis, ext:database, ext:memcached, and memory (default if not specified).
458 ; types are file, ext:redis, ext:database, ext:memcached
473 ; Fastest ones are Redis and ext:database
459 ; Fastest ones are ext:redis and ext:database, DO NOT use memory type for session
474 beaker.session.type = file
460 beaker.session.type = file
475 beaker.session.data_dir = %(here)s/data/sessions
461 beaker.session.data_dir = %(here)s/data/sessions
476
462
@@ -565,10 +551,12 b' sqlalchemy.db1.echo = false'
565
551
566 ; recycle the connections after this amount of seconds
552 ; recycle the connections after this amount of seconds
567 sqlalchemy.db1.pool_recycle = 3600
553 sqlalchemy.db1.pool_recycle = 3600
568 sqlalchemy.db1.convert_unicode = true
569
554
570 ; the number of connections to keep open inside the connection pool.
555 ; the number of connections to keep open inside the connection pool.
571 ; 0 indicates no limit
556 ; 0 indicates no limit
557 ; the general calculus with gevent is:
558 ; if your system allows 500 concurrent greenlets (max_connections) that all do database access,
559 ; then increase pool size + max overflow so that they add up to 500.
572 #sqlalchemy.db1.pool_size = 5
560 #sqlalchemy.db1.pool_size = 5
573
561
574 ; The number of connections to allow in connection pool "overflow", that is
562 ; The number of connections to allow in connection pool "overflow", that is
@@ -599,9 +587,10 b' vcs.scm_app_implementation = http'
599 ; `http` - use http-rpc backend (default)
587 ; `http` - use http-rpc backend (default)
600 vcs.hooks.protocol = http
588 vcs.hooks.protocol = http
601
589
602 ; Host on which this instance is listening for hooks. If vcsserver is in other location
590 ; Host on which this instance is listening for hooks. vcsserver will call this host to pull/push hooks so it should be
603 ; this should be adjusted.
591 ; accessible via network.
604 vcs.hooks.host = 127.0.0.1
592 ; Use vcs.hooks.host = "*" to bind to current hostname (for Docker)
593 vcs.hooks.host = *
605
594
606 ; Start VCSServer with this instance as a subprocess, useful for development
595 ; Start VCSServer with this instance as a subprocess, useful for development
607 vcs.start_server = false
596 vcs.start_server = false
@@ -620,6 +609,9 b' vcs.connection_timeout = 3600'
620 ; Legacy available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
609 ; Legacy available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
621 #vcs.svn.compatible_version = 1.8
610 #vcs.svn.compatible_version = 1.8
622
611
612 ; Cache flag to cache vcsserver remote calls locally
613 ; It uses cache_region `cache_repo`
614 vcs.methods.cache = true
623
615
624 ; ####################################################
616 ; ####################################################
625 ; Subversion proxy support (mod_dav_svn)
617 ; Subversion proxy support (mod_dav_svn)
@@ -702,55 +694,74 b' ssh.enable_ui_key_generator = true'
702 ; http://appenlight.rhodecode.com for details how to obtain an account
694 ; http://appenlight.rhodecode.com for details how to obtain an account
703
695
704 ; Appenlight integration enabled
696 ; Appenlight integration enabled
705 appenlight = false
697 #appenlight = false
706
698
707 appenlight.server_url = https://api.appenlight.com
699 #appenlight.server_url = https://api.appenlight.com
708 appenlight.api_key = YOUR_API_KEY
700 #appenlight.api_key = YOUR_API_KEY
709 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
701 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
710
702
711 ; used for JS client
703 ; used for JS client
712 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
704 #appenlight.api_public_key = YOUR_API_PUBLIC_KEY
713
705
714 ; TWEAK AMOUNT OF INFO SENT HERE
706 ; TWEAK AMOUNT OF INFO SENT HERE
715
707
716 ; enables 404 error logging (default False)
708 ; enables 404 error logging (default False)
717 appenlight.report_404 = false
709 #appenlight.report_404 = false
718
710
719 ; time in seconds after request is considered being slow (default 1)
711 ; time in seconds after request is considered being slow (default 1)
720 appenlight.slow_request_time = 1
712 #appenlight.slow_request_time = 1
721
713
722 ; record slow requests in application
714 ; record slow requests in application
723 ; (needs to be enabled for slow datastore recording and time tracking)
715 ; (needs to be enabled for slow datastore recording and time tracking)
724 appenlight.slow_requests = true
716 #appenlight.slow_requests = true
725
717
726 ; enable hooking to application loggers
718 ; enable hooking to application loggers
727 appenlight.logging = true
719 #appenlight.logging = true
728
720
729 ; minimum log level for log capture
721 ; minimum log level for log capture
730 appenlight.logging.level = WARNING
722 #ppenlight.logging.level = WARNING
731
723
732 ; send logs only from erroneous/slow requests
724 ; send logs only from erroneous/slow requests
733 ; (saves API quota for intensive logging)
725 ; (saves API quota for intensive logging)
734 appenlight.logging_on_error = false
726 #appenlight.logging_on_error = false
735
727
736 ; list of additional keywords that should be grabbed from environ object
728 ; list of additional keywords that should be grabbed from environ object
737 ; can be string with comma separated list of words in lowercase
729 ; can be string with comma separated list of words in lowercase
738 ; (by default client will always send following info:
730 ; (by default client will always send following info:
739 ; 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
731 ; 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
740 ; start with HTTP* this list be extended with additional keywords here
732 ; start with HTTP* this list be extended with additional keywords here
741 appenlight.environ_keys_whitelist =
733 #appenlight.environ_keys_whitelist =
742
734
743 ; list of keywords that should be blanked from request object
735 ; list of keywords that should be blanked from request object
744 ; can be string with comma separated list of words in lowercase
736 ; can be string with comma separated list of words in lowercase
745 ; (by default client will always blank keys that contain following words
737 ; (by default client will always blank keys that contain following words
746 ; 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
738 ; 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
747 ; this list be extended with additional keywords set here
739 ; this list be extended with additional keywords set here
748 appenlight.request_keys_blacklist =
740 #appenlight.request_keys_blacklist =
749
741
750 ; list of namespaces that should be ignores when gathering log entries
742 ; list of namespaces that should be ignores when gathering log entries
751 ; can be string with comma separated list of namespaces
743 ; can be string with comma separated list of namespaces
752 ; (by default the client ignores own entries: appenlight_client.client)
744 ; (by default the client ignores own entries: appenlight_client.client)
753 appenlight.log_namespace_blacklist =
745 #appenlight.log_namespace_blacklist =
746
747 ; Statsd client config, this is used to send metrics to statsd
748 ; We recommend setting statsd_exported and scrape them using Prometheus
749 #statsd.enabled = false
750 #statsd.statsd_host = 0.0.0.0
751 #statsd.statsd_port = 8125
752 #statsd.statsd_prefix =
753 #statsd.statsd_ipv6 = false
754
755 ; configure logging automatically at server startup set to false
756 ; to use the below custom logging config.
757 ; RC_LOGGING_FORMATTER
758 ; RC_LOGGING_LEVEL
759 ; env variables can control the settings for logging in case of autoconfigure
760
761 #logging.autoconfigure = true
762
763 ; specify your own custom logging config file to configure logging
764 #logging.logging_conf_file = /path/to/custom_logging.ini
754
765
755 ; Dummy marker to add new entries after.
766 ; Dummy marker to add new entries after.
756 ; Add any custom entries below. Please don't remove this marker.
767 ; Add any custom entries below. Please don't remove this marker.
@@ -760,6 +771,7 b' custom.conf = 1'
760 ; #####################
771 ; #####################
761 ; LOGGING CONFIGURATION
772 ; LOGGING CONFIGURATION
762 ; #####################
773 ; #####################
774
763 [loggers]
775 [loggers]
764 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
776 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
765
777
@@ -767,7 +779,7 b' keys = root, sqlalchemy, beaker, celery,'
767 keys = console, console_sql
779 keys = console, console_sql
768
780
769 [formatters]
781 [formatters]
770 keys = generic, color_formatter, color_formatter_sql
782 keys = generic, json, color_formatter, color_formatter_sql
771
783
772 ; #######
784 ; #######
773 ; LOGGERS
785 ; LOGGERS
@@ -814,6 +826,8 b' qualname = celery'
814 class = StreamHandler
826 class = StreamHandler
815 args = (sys.stderr, )
827 args = (sys.stderr, )
816 level = DEBUG
828 level = DEBUG
829 ; To enable JSON formatted logs replace 'generic/color_formatter' with 'json'
830 ; This allows sending properly formatted logs to grafana loki or elasticsearch
817 formatter = color_formatter
831 formatter = color_formatter
818
832
819 [handler_console_sql]
833 [handler_console_sql]
@@ -823,6 +837,8 b' formatter = color_formatter'
823 class = StreamHandler
837 class = StreamHandler
824 args = (sys.stderr, )
838 args = (sys.stderr, )
825 level = WARN
839 level = WARN
840 ; To enable JSON formatted logs replace 'generic/color_formatter_sql' with 'json'
841 ; This allows sending properly formatted logs to grafana loki or elasticsearch
826 formatter = color_formatter_sql
842 formatter = color_formatter_sql
827
843
828 ; ##########
844 ; ##########
@@ -843,3 +859,7 b' datefmt = %Y-%m-%d %H:%M:%S'
843 class = rhodecode.lib.logging_formatter.ColorFormatterSql
859 class = rhodecode.lib.logging_formatter.ColorFormatterSql
844 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
860 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
845 datefmt = %Y-%m-%d %H:%M:%S
861 datefmt = %Y-%m-%d %H:%M:%S
862
863 [formatter_json]
864 format = %(timestamp)s %(levelname)s %(name)s %(message)s %(req_id)s
865 class = rhodecode.lib._vendor.jsonlogger.JsonFormatter
@@ -11,6 +11,8 b' import time'
11 import threading
11 import threading
12 import traceback
12 import traceback
13 import random
13 import random
14 import socket
15 import dataclasses
14 from gunicorn.glogging import Logger
16 from gunicorn.glogging import Logger
15
17
16
18
@@ -18,8 +20,14 b' def get_workers():'
18 import multiprocessing
20 import multiprocessing
19 return multiprocessing.cpu_count() * 2 + 1
21 return multiprocessing.cpu_count() * 2 + 1
20
22
21 # GLOBAL
23
24 bind = "127.0.0.1:10020"
25
26
27 # Error logging output for gunicorn (-) is stdout
22 errorlog = '-'
28 errorlog = '-'
29
30 # Access logging output for gunicorn (-) is stdout
23 accesslog = '-'
31 accesslog = '-'
24
32
25
33
@@ -29,12 +37,112 b" accesslog = '-'"
29 worker_tmp_dir = None
37 worker_tmp_dir = None
30 tmp_upload_dir = None
38 tmp_upload_dir = None
31
39
40 # use re-use port logic
41 #reuse_port = True
42
32 # Custom log format
43 # Custom log format
44 #access_log_format = (
45 # '%(t)s %(p)s INFO [GNCRN] %(h)-15s rqt:%(L)s %(s)s %(b)-6s "%(m)s:%(U)s %(q)s" usr:%(u)s "%(f)s" "%(a)s"')
46
47 # loki format for easier parsing in grafana
33 access_log_format = (
48 access_log_format = (
34 '%(t)s %(p)s INFO [GNCRN] %(h)-15s rqt:%(L)s %(s)s %(b)-6s "%(m)s:%(U)s %(q)s" usr:%(u)s "%(f)s" "%(a)s"')
49 'time="%(t)s" pid=%(p)s level="INFO" type="[GNCRN]" ip="%(h)-15s" rqt="%(L)s" response_code="%(s)s" response_bytes="%(b)-6s" uri="%(m)s:%(U)s %(q)s" user=":%(u)s" user_agent="%(a)s"')
50
51 # self adjust workers based on CPU count, to use maximum of CPU and not overquota the resources
52 # workers = get_workers()
53
54 # Gunicorn access log level
55 loglevel = 'info'
56
57 # Process name visible in a process list
58 proc_name = 'rhodecode_enterprise'
59
60 # Type of worker class, one of `sync`, `gevent` or `gthread`
61 # currently `sync` is the only option allowed for vcsserver and for rhodecode all of 3 are allowed
62 # gevent:
63 # In this case, the maximum number of concurrent requests is (N workers * X worker_connections)
64 # e.g. workers =3 worker_connections=10 = 3*10, 30 concurrent requests can be handled
65 # gthread:
66 # In this case, the maximum number of concurrent requests is (N workers * X threads)
67 # e.g. workers = 3 threads=3 = 3*3, 9 concurrent requests can be handled
68 worker_class = 'gthread'
69
70 # Sets the number of process workers. More workers means more concurrent connections
71 # RhodeCode can handle at the same time. Each additional worker also it increases
72 # memory usage as each has its own set of caches.
73 # The Recommended value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers, but no more
74 # than 8-10 unless for huge deployments .e.g 700-1000 users.
75 # `instance_id = *` must be set in the [app:main] section below (which is the default)
76 # when using more than 1 worker.
77 workers = 2
78
79 # Threads numbers for worker class gthread
80 threads = 1
81
82 # The maximum number of simultaneous clients. Valid only for gevent
83 # In this case, the maximum number of concurrent requests is (N workers * X worker_connections)
84 # e.g workers =3 worker_connections=10 = 3*10, 30 concurrent requests can be handled
85 worker_connections = 10
86
87 # Max number of requests that worker will handle before being gracefully restarted.
88 # Prevents memory leaks, jitter adds variability so not all workers are restarted at once.
89 max_requests = 2000
90 max_requests_jitter = int(max_requests * 0.2) # 20% of max_requests
91
92 # The maximum number of pending connections.
93 # Exceeding this number results in the client getting an error when attempting to connect.
94 backlog = 64
35
95
36 # self adjust workers based on CPU count
96 # The Amount of time a worker can spend with handling a request before it
37 # workers = get_workers()
97 # gets killed and restarted. By default, set to 21600 (6hrs)
98 # Examples: 1800 (30min), 3600 (1hr), 7200 (2hr), 43200 (12h)
99 timeout = 21600
100
101 # The maximum size of HTTP request line in bytes.
102 # 0 for unlimited
103 limit_request_line = 0
104
105 # Limit the number of HTTP headers fields in a request.
106 # By default this value is 100 and can't be larger than 32768.
107 limit_request_fields = 32768
108
109 # Limit the allowed size of an HTTP request header field.
110 # Value is a positive number or 0.
111 # Setting it to 0 will allow unlimited header field sizes.
112 limit_request_field_size = 0
113
114 # Timeout for graceful workers restart.
115 # After receiving a restart signal, workers have this much time to finish
116 # serving requests. Workers still alive after the timeout (starting from the
117 # receipt of the restart signal) are force killed.
118 # Examples: 1800 (30min), 3600 (1hr), 7200 (2hr), 43200 (12h)
119 graceful_timeout = 21600
120
121 # The number of seconds to wait for requests on a Keep-Alive connection.
122 # Generally set in the 1-5 seconds range.
123 keepalive = 2
124
125 # Maximum memory usage that each worker can use before it will receive a
126 # graceful restart signal 0 = memory monitoring is disabled
127 # Examples: 268435456 (256MB), 536870912 (512MB)
128 # 1073741824 (1GB), 2147483648 (2GB), 4294967296 (4GB)
129 # Dynamic formula 1024 * 1024 * 256 == 256MBs
130 memory_max_usage = 0
131
132 # How often in seconds to check for memory usage for each gunicorn worker
133 memory_usage_check_interval = 60
134
135 # Threshold value for which we don't recycle worker if GarbageCollection
136 # frees up enough resources. Before each restart, we try to run GC on worker
137 # in case we get enough free memory after that; restart will not happen.
138 memory_usage_recovery_threshold = 0.8
139
140
141 @dataclasses.dataclass
142 class MemoryCheckConfig:
143 max_usage: int
144 check_interval: int
145 recovery_threshold: float
38
146
39
147
40 def _get_process_rss(pid=None):
148 def _get_process_rss(pid=None):
@@ -50,12 +158,9 b' def _get_process_rss(pid=None):'
50
158
51
159
52 def _get_config(ini_path):
160 def _get_config(ini_path):
161 import configparser
53
162
54 try:
163 try:
55 import configparser
56 except ImportError:
57 import ConfigParser as configparser
58 try:
59 config = configparser.RawConfigParser()
164 config = configparser.RawConfigParser()
60 config.read(ini_path)
165 config.read(ini_path)
61 return config
166 return config
@@ -63,8 +168,40 b' def _get_config(ini_path):'
63 return None
168 return None
64
169
65
170
66 def _time_with_offset(memory_usage_check_interval):
171 def get_memory_usage_params(config=None):
67 return time.time() - random.randint(0, memory_usage_check_interval/2.0)
172 # memory spec defaults
173 _memory_max_usage = memory_max_usage
174 _memory_usage_check_interval = memory_usage_check_interval
175 _memory_usage_recovery_threshold = memory_usage_recovery_threshold
176
177 if config:
178 ini_path = os.path.abspath(config)
179 conf = _get_config(ini_path)
180
181 section = 'server:main'
182 if conf and conf.has_section(section):
183
184 if conf.has_option(section, 'memory_max_usage'):
185 _memory_max_usage = conf.getint(section, 'memory_max_usage')
186
187 if conf.has_option(section, 'memory_usage_check_interval'):
188 _memory_usage_check_interval = conf.getint(section, 'memory_usage_check_interval')
189
190 if conf.has_option(section, 'memory_usage_recovery_threshold'):
191 _memory_usage_recovery_threshold = conf.getfloat(section, 'memory_usage_recovery_threshold')
192
193 _memory_max_usage = int(os.environ.get('RC_GUNICORN_MEMORY_MAX_USAGE', '')
194 or _memory_max_usage)
195 _memory_usage_check_interval = int(os.environ.get('RC_GUNICORN_MEMORY_USAGE_CHECK_INTERVAL', '')
196 or _memory_usage_check_interval)
197 _memory_usage_recovery_threshold = float(os.environ.get('RC_GUNICORN_MEMORY_USAGE_RECOVERY_THRESHOLD', '')
198 or _memory_usage_recovery_threshold)
199
200 return MemoryCheckConfig(_memory_max_usage, _memory_usage_check_interval, _memory_usage_recovery_threshold)
201
202
203 def _time_with_offset(check_interval):
204 return time.time() - random.randint(0, check_interval/2.0)
68
205
69
206
70 def pre_fork(server, worker):
207 def pre_fork(server, worker):
@@ -73,39 +210,27 b' def pre_fork(server, worker):'
73
210
74 def post_fork(server, worker):
211 def post_fork(server, worker):
75
212
76 # memory spec defaults
213 memory_conf = get_memory_usage_params()
77 _memory_max_usage = 0
214 _memory_max_usage = memory_conf.max_usage
78 _memory_usage_check_interval = 60
215 _memory_usage_check_interval = memory_conf.check_interval
79 _memory_usage_recovery_threshold = 0.8
216 _memory_usage_recovery_threshold = memory_conf.recovery_threshold
80
81 ini_path = os.path.abspath(server.cfg.paste)
82 conf = _get_config(ini_path)
83
84 section = 'server:main'
85 if conf and conf.has_section(section):
86
217
87 if conf.has_option(section, 'memory_max_usage'):
218 worker._memory_max_usage = int(os.environ.get('RC_GUNICORN_MEMORY_MAX_USAGE', '')
88 _memory_max_usage = conf.getint(section, 'memory_max_usage')
219 or _memory_max_usage)
89
220 worker._memory_usage_check_interval = int(os.environ.get('RC_GUNICORN_MEMORY_USAGE_CHECK_INTERVAL', '')
90 if conf.has_option(section, 'memory_usage_check_interval'):
221 or _memory_usage_check_interval)
91 _memory_usage_check_interval = conf.getint(section, 'memory_usage_check_interval')
222 worker._memory_usage_recovery_threshold = float(os.environ.get('RC_GUNICORN_MEMORY_USAGE_RECOVERY_THRESHOLD', '')
92
223 or _memory_usage_recovery_threshold)
93 if conf.has_option(section, 'memory_usage_recovery_threshold'):
94 _memory_usage_recovery_threshold = conf.getfloat(section, 'memory_usage_recovery_threshold')
95
96 worker._memory_max_usage = _memory_max_usage
97 worker._memory_usage_check_interval = _memory_usage_check_interval
98 worker._memory_usage_recovery_threshold = _memory_usage_recovery_threshold
99
224
100 # register memory last check time, with some random offset so we don't recycle all
225 # register memory last check time, with some random offset so we don't recycle all
101 # at once
226 # at once
102 worker._last_memory_check_time = _time_with_offset(_memory_usage_check_interval)
227 worker._last_memory_check_time = _time_with_offset(_memory_usage_check_interval)
103
228
104 if _memory_max_usage:
229 if _memory_max_usage:
105 server.log.info("[%-10s] WORKER spawned with max memory set at %s", worker.pid,
230 server.log.info("pid=[%-10s] WORKER spawned with max memory set at %s", worker.pid,
106 _format_data_size(_memory_max_usage))
231 _format_data_size(_memory_max_usage))
107 else:
232 else:
108 server.log.info("[%-10s] WORKER spawned", worker.pid)
233 server.log.info("pid=[%-10s] WORKER spawned", worker.pid)
109
234
110
235
111 def pre_exec(server):
236 def pre_exec(server):
@@ -115,6 +240,9 b' def pre_exec(server):'
115 def on_starting(server):
240 def on_starting(server):
116 server_lbl = '{} {}'.format(server.proc_name, server.address)
241 server_lbl = '{} {}'.format(server.proc_name, server.address)
117 server.log.info("Server %s is starting.", server_lbl)
242 server.log.info("Server %s is starting.", server_lbl)
243 server.log.info('Config:')
244 server.log.info(f"\n{server.cfg}")
245 server.log.info(get_memory_usage_params())
118
246
119
247
120 def when_ready(server):
248 def when_ready(server):
@@ -174,42 +302,45 b' def _format_data_size(size, unit="B", pr'
174
302
175
303
176 def _check_memory_usage(worker):
304 def _check_memory_usage(worker):
177 memory_max_usage = worker._memory_max_usage
305 _memory_max_usage = worker._memory_max_usage
178 if not memory_max_usage:
306 if not _memory_max_usage:
179 return
307 return
180
308
181 memory_usage_check_interval = worker._memory_usage_check_interval
309 _memory_usage_check_interval = worker._memory_usage_check_interval
182 memory_usage_recovery_threshold = memory_max_usage * worker._memory_usage_recovery_threshold
310 _memory_usage_recovery_threshold = memory_max_usage * worker._memory_usage_recovery_threshold
183
311
184 elapsed = time.time() - worker._last_memory_check_time
312 elapsed = time.time() - worker._last_memory_check_time
185 if elapsed > memory_usage_check_interval:
313 if elapsed > _memory_usage_check_interval:
186 mem_usage = _get_process_rss()
314 mem_usage = _get_process_rss()
187 if mem_usage and mem_usage > memory_max_usage:
315 if mem_usage and mem_usage > _memory_max_usage:
188 worker.log.info(
316 worker.log.info(
189 "memory usage %s > %s, forcing gc",
317 "memory usage %s > %s, forcing gc",
190 _format_data_size(mem_usage), _format_data_size(memory_max_usage))
318 _format_data_size(mem_usage), _format_data_size(_memory_max_usage))
191 # Try to clean it up by forcing a full collection.
319 # Try to clean it up by forcing a full collection.
192 gc.collect()
320 gc.collect()
193 mem_usage = _get_process_rss()
321 mem_usage = _get_process_rss()
194 if mem_usage > memory_usage_recovery_threshold:
322 if mem_usage > _memory_usage_recovery_threshold:
195 # Didn't clean up enough, we'll have to terminate.
323 # Didn't clean up enough, we'll have to terminate.
196 worker.log.warning(
324 worker.log.warning(
197 "memory usage %s > %s after gc, quitting",
325 "memory usage %s > %s after gc, quitting",
198 _format_data_size(mem_usage), _format_data_size(memory_max_usage))
326 _format_data_size(mem_usage), _format_data_size(_memory_max_usage))
199 # This will cause worker to auto-restart itself
327 # This will cause worker to auto-restart itself
200 worker.alive = False
328 worker.alive = False
201 worker._last_memory_check_time = time.time()
329 worker._last_memory_check_time = time.time()
202
330
203
331
204 def worker_int(worker):
332 def worker_int(worker):
205 worker.log.info("[%-10s] worker received INT or QUIT signal", worker.pid)
333 worker.log.info("pid=[%-10s] worker received INT or QUIT signal", worker.pid)
206
334
207 # get traceback info, on worker crash
335 # get traceback info, when a worker crashes
208 id2name = dict([(th.ident, th.name) for th in threading.enumerate()])
336 def get_thread_id(t_id):
337 id2name = dict([(th.ident, th.name) for th in threading.enumerate()])
338 return id2name.get(t_id, "unknown_thread_id")
339
209 code = []
340 code = []
210 for thread_id, stack in sys._current_frames().items():
341 for thread_id, stack in sys._current_frames().items(): # noqa
211 code.append(
342 code.append(
212 "\n# Thread: %s(%d)" % (id2name.get(thread_id, ""), thread_id))
343 "\n# Thread: %s(%d)" % (get_thread_id(thread_id), thread_id))
213 for fname, lineno, name, line in traceback.extract_stack(stack):
344 for fname, lineno, name, line in traceback.extract_stack(stack):
214 code.append('File: "%s", line %d, in %s' % (fname, lineno, name))
345 code.append('File: "%s", line %d, in %s' % (fname, lineno, name))
215 if line:
346 if line:
@@ -218,15 +349,15 b' def worker_int(worker):'
218
349
219
350
220 def worker_abort(worker):
351 def worker_abort(worker):
221 worker.log.info("[%-10s] worker received SIGABRT signal", worker.pid)
352 worker.log.info("pid=[%-10s] worker received SIGABRT signal", worker.pid)
222
353
223
354
224 def worker_exit(server, worker):
355 def worker_exit(server, worker):
225 worker.log.info("[%-10s] worker exit", worker.pid)
356 worker.log.info("pid=[%-10s] worker exit", worker.pid)
226
357
227
358
228 def child_exit(server, worker):
359 def child_exit(server, worker):
229 worker.log.info("[%-10s] worker child exit", worker.pid)
360 worker.log.info("pid=[%-10s] worker child exit", worker.pid)
230
361
231
362
232 def pre_request(worker, req):
363 def pre_request(worker, req):
@@ -245,6 +376,76 b' def post_request(worker, req, environ, r'
245 _check_memory_usage(worker)
376 _check_memory_usage(worker)
246
377
247
378
379 def _filter_proxy(ip):
380 """
381 Passed in IP addresses in HEADERS can be in a special format of multiple
382 ips. Those comma separated IPs are passed from various proxies in the
383 chain of request processing. The left-most being the original client.
384 We only care about the first IP which came from the org. client.
385
386 :param ip: ip string from headers
387 """
388 if ',' in ip:
389 _ips = ip.split(',')
390 _first_ip = _ips[0].strip()
391 return _first_ip
392 return ip
393
394
395 def _filter_port(ip):
396 """
397 Removes a port from ip, there are 4 main cases to handle here.
398 - ipv4 eg. 127.0.0.1
399 - ipv6 eg. ::1
400 - ipv4+port eg. 127.0.0.1:8080
401 - ipv6+port eg. [::1]:8080
402
403 :param ip:
404 """
405 def is_ipv6(ip_addr):
406 if hasattr(socket, 'inet_pton'):
407 try:
408 socket.inet_pton(socket.AF_INET6, ip_addr)
409 except socket.error:
410 return False
411 else:
412 return False
413 return True
414
415 if ':' not in ip: # must be ipv4 pure ip
416 return ip
417
418 if '[' in ip and ']' in ip: # ipv6 with port
419 return ip.split(']')[0][1:].lower()
420
421 # must be ipv6 or ipv4 with port
422 if is_ipv6(ip):
423 return ip
424 else:
425 ip, _port = ip.split(':')[:2] # means ipv4+port
426 return ip
427
428
429 def get_ip_addr(environ):
430 proxy_key = 'HTTP_X_REAL_IP'
431 proxy_key2 = 'HTTP_X_FORWARDED_FOR'
432 def_key = 'REMOTE_ADDR'
433
434 def _filters(x):
435 return _filter_port(_filter_proxy(x))
436
437 ip = environ.get(proxy_key)
438 if ip:
439 return _filters(ip)
440
441 ip = environ.get(proxy_key2)
442 if ip:
443 return _filters(ip)
444
445 ip = environ.get(def_key, '0.0.0.0')
446 return _filters(ip)
447
448
248 class RhodeCodeLogger(Logger):
449 class RhodeCodeLogger(Logger):
249 """
450 """
250 Custom Logger that allows some customization that gunicorn doesn't allow
451 Custom Logger that allows some customization that gunicorn doesn't allow
@@ -258,8 +459,62 b' class RhodeCodeLogger(Logger):'
258 def now(self):
459 def now(self):
259 """ return date in RhodeCode Log format """
460 """ return date in RhodeCode Log format """
260 now = time.time()
461 now = time.time()
261 msecs = int((now - long(now)) * 1000)
462 msecs = int((now - int(now)) * 1000)
262 return time.strftime(self.datefmt, time.localtime(now)) + '.{0:03d}'.format(msecs)
463 return time.strftime(self.datefmt, time.localtime(now)) + '.{0:03d}'.format(msecs)
263
464
465 def atoms(self, resp, req, environ, request_time):
466 """ Gets atoms for log formatting.
467 """
468 status = resp.status
469 if isinstance(status, str):
470 status = status.split(None, 1)[0]
471 atoms = {
472 'h': get_ip_addr(environ),
473 'l': '-',
474 'u': self._get_user(environ) or '-',
475 't': self.now(),
476 'r': "%s %s %s" % (environ['REQUEST_METHOD'],
477 environ['RAW_URI'],
478 environ["SERVER_PROTOCOL"]),
479 's': status,
480 'm': environ.get('REQUEST_METHOD'),
481 'U': environ.get('PATH_INFO'),
482 'q': environ.get('QUERY_STRING'),
483 'H': environ.get('SERVER_PROTOCOL'),
484 'b': getattr(resp, 'sent', None) is not None and str(resp.sent) or '-',
485 'B': getattr(resp, 'sent', None),
486 'f': environ.get('HTTP_REFERER', '-'),
487 'a': environ.get('HTTP_USER_AGENT', '-'),
488 'T': request_time.seconds,
489 'D': (request_time.seconds * 1000000) + request_time.microseconds,
490 'M': (request_time.seconds * 1000) + int(request_time.microseconds/1000),
491 'L': "%d.%06d" % (request_time.seconds, request_time.microseconds),
492 'p': "<%s>" % os.getpid()
493 }
494
495 # add request headers
496 if hasattr(req, 'headers'):
497 req_headers = req.headers
498 else:
499 req_headers = req
500
501 if hasattr(req_headers, "items"):
502 req_headers = req_headers.items()
503
504 atoms.update({"{%s}i" % k.lower(): v for k, v in req_headers})
505
506 resp_headers = resp.headers
507 if hasattr(resp_headers, "items"):
508 resp_headers = resp_headers.items()
509
510 # add response headers
511 atoms.update({"{%s}o" % k.lower(): v for k, v in resp_headers})
512
513 # add environ variables
514 environ_variables = environ.items()
515 atoms.update({"{%s}e" % k.lower(): v for k, v in environ_variables})
516
517 return atoms
518
264
519
265 logger_class = RhodeCodeLogger
520 logger_class = RhodeCodeLogger
@@ -1,4 +1,3 b''
1 ## -*- coding: utf-8 -*-
2
1
3 ; #########################################
2 ; #########################################
4 ; RHODECODE COMMUNITY EDITION CONFIGURATION
3 ; RHODECODE COMMUNITY EDITION CONFIGURATION
@@ -27,91 +26,21 b' debug = false'
27 #smtp_use_ssl = true
26 #smtp_use_ssl = true
28
27
29 [server:main]
28 [server:main]
30 ; COMMON HOST/IP CONFIG
29 ; COMMON HOST/IP CONFIG, This applies mostly to develop setup,
30 ; Host port for gunicorn are controlled by gunicorn_conf.py
31 host = 127.0.0.1
31 host = 127.0.0.1
32 port = 5000
32 port = 10020
33
33
34
34
35 ; ###########################
35 ; ###########################
36 ; GUNICORN APPLICATION SERVER
36 ; GUNICORN APPLICATION SERVER
37 ; ###########################
37 ; ###########################
38
38
39 ; run with gunicorn --log-config rhodecode.ini --paste rhodecode.ini
39 ; run with gunicorn --paste rhodecode.ini --config gunicorn_conf.py
40
40
41 ; Module to use, this setting shouldn't be changed
41 ; Module to use, this setting shouldn't be changed
42 use = egg:gunicorn#main
42 use = egg:gunicorn#main
43
43
44 ; Sets the number of process workers. More workers means more concurrent connections
45 ; RhodeCode can handle at the same time. Each additional worker also it increases
46 ; memory usage as each has it's own set of caches.
47 ; Recommended value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers, but no more
48 ; than 8-10 unless for really big deployments .e.g 700-1000 users.
49 ; `instance_id = *` must be set in the [app:main] section below (which is the default)
50 ; when using more than 1 worker.
51 workers = 2
52
53 ; Gunicorn access log level
54 loglevel = info
55
56 ; Process name visible in process list
57 proc_name = rhodecode
58
59 ; Type of worker class, one of `sync`, `gevent`
60 ; Recommended type is `gevent`
61 worker_class = gevent
62
63 ; The maximum number of simultaneous clients per worker. Valid only for gevent
64 worker_connections = 10
65
66 ; Max number of requests that worker will handle before being gracefully restarted.
67 ; Prevents memory leaks, jitter adds variability so not all workers are restarted at once.
68 max_requests = 1000
69 max_requests_jitter = 30
70
71 ; Amount of time a worker can spend with handling a request before it
72 ; gets killed and restarted. By default set to 21600 (6hrs)
73 ; Examples: 1800 (30min), 3600 (1hr), 7200 (2hr), 43200 (12h)
74 timeout = 21600
75
76 ; The maximum size of HTTP request line in bytes.
77 ; 0 for unlimited
78 limit_request_line = 0
79
80 ; Limit the number of HTTP headers fields in a request.
81 ; By default this value is 100 and can't be larger than 32768.
82 limit_request_fields = 32768
83
84 ; Limit the allowed size of an HTTP request header field.
85 ; Value is a positive number or 0.
86 ; Setting it to 0 will allow unlimited header field sizes.
87 limit_request_field_size = 0
88
89 ; Timeout for graceful workers restart.
90 ; After receiving a restart signal, workers have this much time to finish
91 ; serving requests. Workers still alive after the timeout (starting from the
92 ; receipt of the restart signal) are force killed.
93 ; Examples: 1800 (30min), 3600 (1hr), 7200 (2hr), 43200 (12h)
94 graceful_timeout = 3600
95
96 # The number of seconds to wait for requests on a Keep-Alive connection.
97 # Generally set in the 1-5 seconds range.
98 keepalive = 2
99
100 ; Maximum memory usage that each worker can use before it will receive a
101 ; graceful restart signal 0 = memory monitoring is disabled
102 ; Examples: 268435456 (256MB), 536870912 (512MB)
103 ; 1073741824 (1GB), 2147483648 (2GB), 4294967296 (4GB)
104 memory_max_usage = 0
105
106 ; How often in seconds to check for memory usage for each gunicorn worker
107 memory_usage_check_interval = 60
108
109 ; Threshold value for which we don't recycle worker if GarbageCollection
110 ; frees up enough resources. Before each restart we try to run GC on worker
111 ; in case we get enough free memory after that, restart will not happen.
112 memory_usage_recovery_threshold = 0.8
113
114
115 ; Prefix middleware for RhodeCode.
44 ; Prefix middleware for RhodeCode.
116 ; recommended when using proxy setup.
45 ; recommended when using proxy setup.
117 ; allows to set RhodeCode under a prefix in server.
46 ; allows to set RhodeCode under a prefix in server.
@@ -126,8 +55,16 b' prefix = /'
126 [app:main]
55 [app:main]
127 ; The %(here)s variable will be replaced with the absolute path of parent directory
56 ; The %(here)s variable will be replaced with the absolute path of parent directory
128 ; of this file
57 ; of this file
129 ; In addition ENVIRONMENT variables usage is possible, e.g
58 ; Each option in the app:main can be override by an environmental variable
130 ; sqlalchemy.db1.url = {ENV_RC_DB_URL}
59 ;
60 ;To override an option:
61 ;
62 ;RC_<KeyName>
63 ;Everything should be uppercase, . and - should be replaced by _.
64 ;For example, if you have these configuration settings:
65 ;rc_cache.repo_object.backend = foo
66 ;can be overridden by
67 ;export RC_CACHE_REPO_OBJECT_BACKEND=foo
131
68
132 use = egg:rhodecode-enterprise-ce
69 use = egg:rhodecode-enterprise-ce
133
70
@@ -162,12 +99,6 b' lang = en'
162 ; Settings this to true could lead to very long startup time.
99 ; Settings this to true could lead to very long startup time.
163 startup.import_repos = false
100 startup.import_repos = false
164
101
165 ; Uncomment and set this path to use archive download cache.
166 ; Once enabled, generated archives will be cached at this location
167 ; and served from the cache during subsequent requests for the same archive of
168 ; the repository.
169 #archive_cache_dir = /tmp/tarballcache
170
171 ; URL at which the application is running. This is used for Bootstrapping
102 ; URL at which the application is running. This is used for Bootstrapping
172 ; requests in context when no web request is available. Used in ishell, or
103 ; requests in context when no web request is available. Used in ishell, or
173 ; SSH calls. Set this for events to receive proper url for SSH calls.
104 ; SSH calls. Set this for events to receive proper url for SSH calls.
@@ -321,23 +252,43 b' file_store.backend = local'
321 ; path to store the uploaded binaries
252 ; path to store the uploaded binaries
322 file_store.storage_path = %(here)s/data/file_store
253 file_store.storage_path = %(here)s/data/file_store
323
254
255 ; Uncomment and set this path to control settings for archive download cache.
256 ; Generated repo archives will be cached at this location
257 ; and served from the cache during subsequent requests for the same archive of
258 ; the repository. This path is important to be shared across filesystems and with
259 ; RhodeCode and vcsserver
260
261 ; Default is $cache_dir/archive_cache if not set
262 archive_cache.store_dir = %(here)s/data/archive_cache
263
264 ; The limit in GB sets how much data we cache before recycling last used, defaults to 10 gb
265 archive_cache.cache_size_gb = 40
266
267 ; By default cache uses sharding technique, this specifies how many shards are there
268 archive_cache.cache_shards = 4
324
269
325 ; #############
270 ; #############
326 ; CELERY CONFIG
271 ; CELERY CONFIG
327 ; #############
272 ; #############
328
273
329 ; manually run celery: /path/to/celery worker -E --beat --app rhodecode.lib.celerylib.loader --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler --loglevel DEBUG --ini /path/to/rhodecode.ini
274 ; manually run celery: /path/to/celery worker --task-events --beat --app rhodecode.lib.celerylib.loader --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler --loglevel DEBUG --ini /path/to/rhodecode.ini
330
275
331 use_celery = false
276 use_celery = false
332
277
278 ; path to store schedule database
279 #celerybeat-schedule.path =
280
333 ; connection url to the message broker (default redis)
281 ; connection url to the message broker (default redis)
334 celery.broker_url = redis://localhost:6379/8
282 celery.broker_url = redis://redis:6379/8
283
284 ; results backend to get results for (default redis)
285 celery.result_backend = redis://redis:6379/8
335
286
336 ; rabbitmq example
287 ; rabbitmq example
337 #celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
288 #celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
338
289
339 ; maximum tasks to execute before worker restart
290 ; maximum tasks to execute before worker restart
340 celery.max_tasks_per_child = 100
291 celery.max_tasks_per_child = 20
341
292
342 ; tasks will never be sent to the queue, but executed locally instead.
293 ; tasks will never be sent to the queue, but executed locally instead.
343 celery.task_always_eager = false
294 celery.task_always_eager = false
@@ -369,13 +320,42 b' rc_cache.cache_repo_longterm.expiration_'
369 rc_cache.cache_repo_longterm.max_size = 10000
320 rc_cache.cache_repo_longterm.max_size = 10000
370
321
371
322
323 ; *********************************************
324 ; `cache_general` cache for general purpose use
325 ; for simplicity use rc.file_namespace backend,
326 ; for performance and scale use rc.redis
327 ; *********************************************
328 rc_cache.cache_general.backend = dogpile.cache.rc.file_namespace
329 rc_cache.cache_general.expiration_time = 43200
330 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
331 #rc_cache.cache_general.arguments.filename = /tmp/cache_general_db
332
333 ; alternative `cache_general` redis backend with distributed lock
334 #rc_cache.cache_general.backend = dogpile.cache.rc.redis
335 #rc_cache.cache_general.expiration_time = 300
336
337 ; redis_expiration_time needs to be greater then expiration_time
338 #rc_cache.cache_general.arguments.redis_expiration_time = 7200
339
340 #rc_cache.cache_general.arguments.host = localhost
341 #rc_cache.cache_general.arguments.port = 6379
342 #rc_cache.cache_general.arguments.db = 0
343 #rc_cache.cache_general.arguments.socket_timeout = 30
344 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
345 #rc_cache.cache_general.arguments.distributed_lock = true
346
347 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
348 #rc_cache.cache_general.arguments.lock_auto_renewal = true
349
372 ; *************************************************
350 ; *************************************************
373 ; `cache_perms` cache for permission tree, auth TTL
351 ; `cache_perms` cache for permission tree, auth TTL
352 ; for simplicity use rc.file_namespace backend,
353 ; for performance and scale use rc.redis
374 ; *************************************************
354 ; *************************************************
375 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
355 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
376 rc_cache.cache_perms.expiration_time = 300
356 rc_cache.cache_perms.expiration_time = 3600
377 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
357 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
378 #rc_cache.cache_perms.arguments.filename = /tmp/cache_perms.db
358 #rc_cache.cache_perms.arguments.filename = /tmp/cache_perms_db
379
359
380 ; alternative `cache_perms` redis backend with distributed lock
360 ; alternative `cache_perms` redis backend with distributed lock
381 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
361 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
@@ -396,11 +376,13 b' rc_cache.cache_perms.expiration_time = 3'
396
376
397 ; ***************************************************
377 ; ***************************************************
398 ; `cache_repo` cache for file tree, Readme, RSS FEEDS
378 ; `cache_repo` cache for file tree, Readme, RSS FEEDS
379 ; for simplicity use rc.file_namespace backend,
380 ; for performance and scale use rc.redis
399 ; ***************************************************
381 ; ***************************************************
400 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
382 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
401 rc_cache.cache_repo.expiration_time = 2592000
383 rc_cache.cache_repo.expiration_time = 2592000
402 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
384 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
403 #rc_cache.cache_repo.arguments.filename = /tmp/cache_repo.db
385 #rc_cache.cache_repo.arguments.filename = /tmp/cache_repo_db
404
386
405 ; alternative `cache_repo` redis backend with distributed lock
387 ; alternative `cache_repo` redis backend with distributed lock
406 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
388 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
@@ -424,8 +406,8 b' rc_cache.cache_repo.expiration_time = 25'
424 ; ##############
406 ; ##############
425
407
426 ; beaker.session.type is type of storage options for the logged users sessions. Current allowed
408 ; beaker.session.type is type of storage options for the logged users sessions. Current allowed
427 ; types are file, ext:redis, ext:database, ext:memcached, and memory (default if not specified).
409 ; types are file, ext:redis, ext:database, ext:memcached
428 ; Fastest ones are Redis and ext:database
410 ; Fastest ones are ext:redis and ext:database, DO NOT use memory type for session
429 beaker.session.type = file
411 beaker.session.type = file
430 beaker.session.data_dir = %(here)s/data/sessions
412 beaker.session.data_dir = %(here)s/data/sessions
431
413
@@ -520,10 +502,12 b' sqlalchemy.db1.echo = false'
520
502
521 ; recycle the connections after this amount of seconds
503 ; recycle the connections after this amount of seconds
522 sqlalchemy.db1.pool_recycle = 3600
504 sqlalchemy.db1.pool_recycle = 3600
523 sqlalchemy.db1.convert_unicode = true
524
505
525 ; the number of connections to keep open inside the connection pool.
506 ; the number of connections to keep open inside the connection pool.
526 ; 0 indicates no limit
507 ; 0 indicates no limit
508 ; the general calculus with gevent is:
509 ; if your system allows 500 concurrent greenlets (max_connections) that all do database access,
510 ; then increase pool size + max overflow so that they add up to 500.
527 #sqlalchemy.db1.pool_size = 5
511 #sqlalchemy.db1.pool_size = 5
528
512
529 ; The number of connections to allow in connection pool "overflow", that is
513 ; The number of connections to allow in connection pool "overflow", that is
@@ -554,9 +538,10 b' vcs.scm_app_implementation = http'
554 ; `http` - use http-rpc backend (default)
538 ; `http` - use http-rpc backend (default)
555 vcs.hooks.protocol = http
539 vcs.hooks.protocol = http
556
540
557 ; Host on which this instance is listening for hooks. If vcsserver is in other location
541 ; Host on which this instance is listening for hooks. vcsserver will call this host to pull/push hooks so it should be
558 ; this should be adjusted.
542 ; accessible via network.
559 vcs.hooks.host = 127.0.0.1
543 ; Use vcs.hooks.host = "*" to bind to current hostname (for Docker)
544 vcs.hooks.host = *
560
545
561 ; Start VCSServer with this instance as a subprocess, useful for development
546 ; Start VCSServer with this instance as a subprocess, useful for development
562 vcs.start_server = false
547 vcs.start_server = false
@@ -575,6 +560,9 b' vcs.connection_timeout = 3600'
575 ; Legacy available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
560 ; Legacy available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
576 #vcs.svn.compatible_version = 1.8
561 #vcs.svn.compatible_version = 1.8
577
562
563 ; Cache flag to cache vcsserver remote calls locally
564 ; It uses cache_region `cache_repo`
565 vcs.methods.cache = true
578
566
579 ; ####################################################
567 ; ####################################################
580 ; Subversion proxy support (mod_dav_svn)
568 ; Subversion proxy support (mod_dav_svn)
@@ -657,55 +645,74 b' ssh.enable_ui_key_generator = true'
657 ; http://appenlight.rhodecode.com for details how to obtain an account
645 ; http://appenlight.rhodecode.com for details how to obtain an account
658
646
659 ; Appenlight integration enabled
647 ; Appenlight integration enabled
660 appenlight = false
648 #appenlight = false
661
649
662 appenlight.server_url = https://api.appenlight.com
650 #appenlight.server_url = https://api.appenlight.com
663 appenlight.api_key = YOUR_API_KEY
651 #appenlight.api_key = YOUR_API_KEY
664 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
652 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
665
653
666 ; used for JS client
654 ; used for JS client
667 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
655 #appenlight.api_public_key = YOUR_API_PUBLIC_KEY
668
656
669 ; TWEAK AMOUNT OF INFO SENT HERE
657 ; TWEAK AMOUNT OF INFO SENT HERE
670
658
671 ; enables 404 error logging (default False)
659 ; enables 404 error logging (default False)
672 appenlight.report_404 = false
660 #appenlight.report_404 = false
673
661
674 ; time in seconds after request is considered being slow (default 1)
662 ; time in seconds after request is considered being slow (default 1)
675 appenlight.slow_request_time = 1
663 #appenlight.slow_request_time = 1
676
664
677 ; record slow requests in application
665 ; record slow requests in application
678 ; (needs to be enabled for slow datastore recording and time tracking)
666 ; (needs to be enabled for slow datastore recording and time tracking)
679 appenlight.slow_requests = true
667 #appenlight.slow_requests = true
680
668
681 ; enable hooking to application loggers
669 ; enable hooking to application loggers
682 appenlight.logging = true
670 #appenlight.logging = true
683
671
684 ; minimum log level for log capture
672 ; minimum log level for log capture
685 appenlight.logging.level = WARNING
673 #ppenlight.logging.level = WARNING
686
674
687 ; send logs only from erroneous/slow requests
675 ; send logs only from erroneous/slow requests
688 ; (saves API quota for intensive logging)
676 ; (saves API quota for intensive logging)
689 appenlight.logging_on_error = false
677 #appenlight.logging_on_error = false
690
678
691 ; list of additional keywords that should be grabbed from environ object
679 ; list of additional keywords that should be grabbed from environ object
692 ; can be string with comma separated list of words in lowercase
680 ; can be string with comma separated list of words in lowercase
693 ; (by default client will always send following info:
681 ; (by default client will always send following info:
694 ; 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
682 ; 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
695 ; start with HTTP* this list be extended with additional keywords here
683 ; start with HTTP* this list be extended with additional keywords here
696 appenlight.environ_keys_whitelist =
684 #appenlight.environ_keys_whitelist =
697
685
698 ; list of keywords that should be blanked from request object
686 ; list of keywords that should be blanked from request object
699 ; can be string with comma separated list of words in lowercase
687 ; can be string with comma separated list of words in lowercase
700 ; (by default client will always blank keys that contain following words
688 ; (by default client will always blank keys that contain following words
701 ; 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
689 ; 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
702 ; this list be extended with additional keywords set here
690 ; this list be extended with additional keywords set here
703 appenlight.request_keys_blacklist =
691 #appenlight.request_keys_blacklist =
704
692
705 ; list of namespaces that should be ignores when gathering log entries
693 ; list of namespaces that should be ignores when gathering log entries
706 ; can be string with comma separated list of namespaces
694 ; can be string with comma separated list of namespaces
707 ; (by default the client ignores own entries: appenlight_client.client)
695 ; (by default the client ignores own entries: appenlight_client.client)
708 appenlight.log_namespace_blacklist =
696 #appenlight.log_namespace_blacklist =
697
698 ; Statsd client config, this is used to send metrics to statsd
699 ; We recommend setting statsd_exported and scrape them using Prometheus
700 #statsd.enabled = false
701 #statsd.statsd_host = 0.0.0.0
702 #statsd.statsd_port = 8125
703 #statsd.statsd_prefix =
704 #statsd.statsd_ipv6 = false
705
706 ; configure logging automatically at server startup set to false
707 ; to use the below custom logging config.
708 ; RC_LOGGING_FORMATTER
709 ; RC_LOGGING_LEVEL
710 ; env variables can control the settings for logging in case of autoconfigure
711
712 #logging.autoconfigure = true
713
714 ; specify your own custom logging config file to configure logging
715 #logging.logging_conf_file = /path/to/custom_logging.ini
709
716
710 ; Dummy marker to add new entries after.
717 ; Dummy marker to add new entries after.
711 ; Add any custom entries below. Please don't remove this marker.
718 ; Add any custom entries below. Please don't remove this marker.
@@ -715,6 +722,7 b' custom.conf = 1'
715 ; #####################
722 ; #####################
716 ; LOGGING CONFIGURATION
723 ; LOGGING CONFIGURATION
717 ; #####################
724 ; #####################
725
718 [loggers]
726 [loggers]
719 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
727 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
720
728
@@ -722,7 +730,7 b' keys = root, sqlalchemy, beaker, celery,'
722 keys = console, console_sql
730 keys = console, console_sql
723
731
724 [formatters]
732 [formatters]
725 keys = generic, color_formatter, color_formatter_sql
733 keys = generic, json, color_formatter, color_formatter_sql
726
734
727 ; #######
735 ; #######
728 ; LOGGERS
736 ; LOGGERS
@@ -769,6 +777,8 b' qualname = celery'
769 class = StreamHandler
777 class = StreamHandler
770 args = (sys.stderr, )
778 args = (sys.stderr, )
771 level = INFO
779 level = INFO
780 ; To enable JSON formatted logs replace 'generic/color_formatter' with 'json'
781 ; This allows sending properly formatted logs to grafana loki or elasticsearch
772 formatter = generic
782 formatter = generic
773
783
774 [handler_console_sql]
784 [handler_console_sql]
@@ -778,6 +788,8 b' formatter = generic'
778 class = StreamHandler
788 class = StreamHandler
779 args = (sys.stderr, )
789 args = (sys.stderr, )
780 level = WARN
790 level = WARN
791 ; To enable JSON formatted logs replace 'generic/color_formatter_sql' with 'json'
792 ; This allows sending properly formatted logs to grafana loki or elasticsearch
781 formatter = generic
793 formatter = generic
782
794
783 ; ##########
795 ; ##########
@@ -798,3 +810,7 b' datefmt = %Y-%m-%d %H:%M:%S'
798 class = rhodecode.lib.logging_formatter.ColorFormatterSql
810 class = rhodecode.lib.logging_formatter.ColorFormatterSql
799 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
811 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
800 datefmt = %Y-%m-%d %H:%M:%S
812 datefmt = %Y-%m-%d %H:%M:%S
813
814 [formatter_json]
815 format = %(timestamp)s %(levelname)s %(name)s %(message)s %(req_id)s
816 class = rhodecode.lib._vendor.jsonlogger.JsonFormatter
@@ -1,9 +1,6 b''
1 # generating packages
1 ## BUILD
2 nix-shell pkgs/shell-generate.nix
2 # cd docs
3 cd docs
3 # docker build --tag sphinx-doc-build-rc .
4 pip2nix generate
5
4
6 # building the docs
5 # Build Docs
7 cd docs
6 # docker run --rm -v $(PWD):/project --workdir=/project/docs sphinx-doc-build-rc make clean html No newline at end of file
8 nix-build default.nix -o result
9 make clean html
@@ -2,9 +2,9 b''
2 #
2 #
3
3
4 # You can set these variables from the command line.
4 # You can set these variables from the command line.
5 SPHINXOPTS =
5 SPHINXOPTS ?=
6 SPHINXBUILD = ./result/bin/sphinx-build
6 SPHINXBUILD ?= sphinx-build
7 PAPER =
7 SOURCEDIR = source
8 BUILDDIR = _build
8 BUILDDIR = _build
9
9
10 # User-friendly check for sphinx-build
10 # User-friendly check for sphinx-build
@@ -80,8 +80,9 b' 1) Start by running the interactive ishe'
80 2a) Add user called 'admin' into all repositories with write permission.
80 2a) Add user called 'admin' into all repositories with write permission.
81 Permissions can be also `repository.read`, `repository.admin`, `repository.none`
81 Permissions can be also `repository.read`, `repository.admin`, `repository.none`
82
82
83
83 .. code-block:: python
84 .. code-block:: python
84 :dedent: 1
85 :dedent:
85
86
86 In [1]: from rhodecode.model.repo import RepoModel
87 In [1]: from rhodecode.model.repo import RepoModel
87 In [2]: user = User.get_by_username('admin')
88 In [2]: user = User.get_by_username('admin')
@@ -94,7 +95,7 b" 2b) Add user called 'admin' into all rep"
94 Permissions can be also can be `group.read`, `group.admin`, `group.none`
95 Permissions can be also can be `group.read`, `group.admin`, `group.none`
95
96
96 .. code-block:: python
97 .. code-block:: python
97 :dedent: 1
98 :dedent:
98
99
99 In [1]: from rhodecode.model.repo import RepoModel
100 In [1]: from rhodecode.model.repo import RepoModel
100 In [2]: user = User.get_by_username('admin')
101 In [2]: user = User.get_by_username('admin')
@@ -108,7 +109,7 b' Delete a problematic pull request'
108 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
109 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
109
110
110 .. code-block:: python
111 .. code-block:: python
111 :dedent: 1
112 :dedent:
112
113
113 In [1]: from rhodecode.model.pull_request import PullRequestModel
114 In [1]: from rhodecode.model.pull_request import PullRequestModel
114 In [2]: pullrequest_id = 123
115 In [2]: pullrequest_id = 123
@@ -25,7 +25,7 b' account permissions.'
25 # Open iShell from the terminal
25 # Open iShell from the terminal
26 $ rccontrol ishell enterprise-1
26 $ rccontrol ishell enterprise-1
27
27
28 .. code-block:: mysql
28 .. code-block:: python
29
29
30 # Use this example to change user permissions
30 # Use this example to change user permissions
31 In [1]: adminuser = User.get_by_username('username')
31 In [1]: adminuser = User.get_by_username('username')
@@ -49,7 +49,7 b' following example to make changes to thi'
49 # Open iShell from the terminal
49 # Open iShell from the terminal
50 $ rccontrol ishell enterprise-1
50 $ rccontrol ishell enterprise-1
51
51
52 .. code-block:: mysql
52 .. code-block:: python
53
53
54 # Use this example to enable global .hgrc access
54 # Use this example to enable global .hgrc access
55 In [1]: new_option = RhodeCodeUi()
55 In [1]: new_option = RhodeCodeUi()
@@ -76,7 +76,7 b' Use the following code example to carry '
76 # starts the ishell interactive prompt
76 # starts the ishell interactive prompt
77 $ rccontrol ishell enterprise-1
77 $ rccontrol ishell enterprise-1
78
78
79 .. code-block:: mysql
79 .. code-block:: python
80
80
81 In [1]: from rhodecode.lib.auth import generate_auth_token
81 In [1]: from rhodecode.lib.auth import generate_auth_token
82 In [2]: from rhodecode.lib.auth import get_crypt_password
82 In [2]: from rhodecode.lib.auth import get_crypt_password
@@ -107,7 +107,7 b' Use the following code example to carry '
107 # starts the ishell interactive prompt
107 # starts the ishell interactive prompt
108 $ rccontrol ishell enterprise-1
108 $ rccontrol ishell enterprise-1
109
109
110 .. code-block:: mysql
110 .. code-block:: python
111
111
112 # Use this example to change email and username of LDAP user
112 # Use this example to change email and username of LDAP user
113 In [1]: my_user = User.get_by_username('some_username')
113 In [1]: my_user = User.get_by_username('some_username')
@@ -139,7 +139,7 b" Use the text which is shown after '#' si"
139 # starts the ishell interactive prompt
139 # starts the ishell interactive prompt
140 $ rccontrol ishell enterprise-1
140 $ rccontrol ishell enterprise-1
141
141
142 .. code-block:: mysql
142 .. code-block:: python
143
143
144 # Use this example to change users from authentication
144 # Use this example to change users from authentication
145 # using rhodecode internal to ldap
145 # using rhodecode internal to ldap
@@ -202,7 +202,6 b' are not required in args.'
202 methods/deprecated-methods
202 methods/deprecated-methods
203 methods/gist-methods
203 methods/gist-methods
204 methods/pull-request-methods
204 methods/pull-request-methods
205 methods/repo-methods
206 methods/repo-group-methods
205 methods/repo-group-methods
207 methods/search-methods
206 methods/search-methods
208 methods/server-methods
207 methods/server-methods
@@ -1,132 +1,160 b''
1 # -*- coding: utf-8 -*-
1 # Configuration file for the Sphinx documentation builder.
2 #
3 # RhodeCode Enterprise documentation build configuration file, created by
4 # sphinx-quickstart on Tue Nov 4 11:48:37 2014.
5 #
6 # This file is execfile()d with the current directory set to its
7 # containing dir.
8 #
2 #
9 # Note that not all possible configuration values are present in this
3 # For the full list of built-in configuration values, see the documentation:
10 # autogenerated file.
4 # https://www.sphinx-doc.org/en/master/usage/configuration.html
11 #
5
12 # All configuration values have a default; values that are commented out
6 # -- Project information -----------------------------------------------------
13 # serve to show the default.
7 # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
14
8
9 import os
15 import sys
10 import sys
16 import os
17 import datetime
11 import datetime
18 import sphinx_rtd_theme
12
13 # sphinx injects tags magically during build, we re-define it here to make linters happy
14 tags = tags # noqa
19
15
20 # If extensions (or modules to document with autodoc) are in another directory,
16 # If extensions (or modules to document with autodoc) are in another directory,
21 # add these directories to sys.path here. If the directory is relative to the
17 # add these directories to sys.path here. If the directory is relative to the
22 # documentation root, use os.path.abspath to make it absolute, like shown here.
18 # documentation root, use os.path.abspath to make it absolute, like shown here.
23 sys.path.insert(0, os.path.abspath('.'))
19 sys.path.insert(0, os.path.abspath("."))
24 import common
20
21
22 def _get_version():
23 with open("../rhodecode/VERSION") as f:
24 return f.read().strip()
25
26
27 now = datetime.datetime.today()
28
29 # The full project version, used as the replacement for |release| and e.g. in the HTML templates.
30 # For example, for the Python documentation, this may be something like 2.6.0rc1.
31 # If you don’t need the separation provided between version and release, just set them both to the same value.
32 release = _get_version()
33
34 # The major project version, used as the replacement for |version|.
35 # For example, for the Python documentation, this may be something like 2.6.
36 version = ".".join(release.split(".", 2)[:2]) # First two parts of release
37
38
39 # General information about the project.
40 project = "RhodeCode Enterprise"
41 copyright = f"2010-{now.year}, RhodeCode GmbH"
42 author = "RhodeCode GmbH"
25
43
26 # -- General configuration ------------------------------------------------
44 # -- General configuration ------------------------------------------------
27
45
28 # If your documentation needs a minimal Sphinx version, state it here.
46 # If your documentation needs a minimal Sphinx version, state it here.
29 #needs_sphinx = '1.0'
47 # needs_sphinx = '1.0'
30
48
31 # Add any Sphinx extension module names here, as strings. They can be
49 # Add any Sphinx extension module names here, as strings. They can be
32 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
50 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
33 # ones.
51 # ones.
34 extensions = [
52 extensions = [
35 'sphinx.ext.autodoc',
53 "sphinx.ext.autodoc",
36 'sphinx.ext.intersphinx',
54 "sphinx.ext.intersphinx",
37 'sphinx.ext.todo',
55 "sphinx.ext.todo",
38 'sphinx.ext.imgmath'
56 "sphinx.ext.imgmath",
39 ]
57 ]
40
58
41 intersphinx_mapping = {
59 intersphinx_mapping = {
42 'enterprise': ('https://docs.rhodecode.com/RhodeCode-Enterprise/', None),
60 "enterprise": ("https://docs.rhodecode.com/RhodeCode-Enterprise/", None),
43 'control': ('https://docs.rhodecode.com/RhodeCode-Control/', None),
61 "rcstack": ("https://docs.rhodecode.com/rcstack/", None),
62 "control": ("https://docs.rhodecode.com/RhodeCode-Control/", None),
44 }
63 }
45
64
46 # Add any paths that contain templates here, relative to this directory.
65 # Add any paths that contain templates here, relative to this directory.
47 templates_path = ['_templates']
66 templates_path = ["_templates"]
48
67
49 # The suffix of source filenames.
68 # The suffix of source filenames.
50 source_suffix = '.rst'
69 source_suffix = ".rst"
51
70
52 # The encoding of source files.
71 # The encoding of source files.
53 #source_encoding = 'utf-8-sig'
72 # source_encoding = 'utf-8-sig'
54
73
55 # The master toctree document.
74 # The master toctree document.
56 master_doc = 'index'
75 master_doc = "index"
57
76
58 # The version info for the project you're documenting, acts as replacement for
77 # The version info for the project you're documenting, acts as replacement for
59 # |version| and |release|, also used in various other places throughout the
78 # |version| and |release|, also used in various other places throughout the
60 # built documents.
79 # built documents.
61
80
62
81
63 def _get_version():
64 with open('../rhodecode/VERSION') as f:
65 return f.read().strip()
66
67
68 # The full version, including alpha/beta/rc tags.
69 release = _get_version()
70 # The short X.Y version.
71 version = '.'.join(release.split('.', 2)[:2]) # First two parts of release
72
73 # General information about the project.
74 project = u'RhodeCode Enterprise %s ' % _get_version()
75 copyright = u'2010-{now.year}, RhodeCode GmbH'.format(
76 now=datetime.datetime.today())
77
78
79 # The language for content autogenerated by Sphinx. Refer to documentation
82 # The language for content autogenerated by Sphinx. Refer to documentation
80 # for a list of supported languages.
83 # for a list of supported languages.
81 #language = None
84 # language = None
82
85
83 rst_epilog = common.rst_epilog + """
86 rst_epilog = """
84 .. |async| replace:: asynchronous
87 .. |async| replace:: asynchronous
88 .. |AE| replace:: Appenlight
89 .. |authtoken| replace:: Authentication Token
90 .. |authtokens| replace:: **Auth Tokens**
91 .. |RCCEshort| replace:: Community
92 .. |RCEEshort| replace:: Enterprise
93 .. |git| replace:: Git
94 .. |hg| replace:: Mercurial
95 .. |svn| replace:: Subversion
96 .. |LDAP| replace:: LDAP / Active Directory
97 .. |os| replace:: operating system
98 .. |OS| replace:: Operating System
99 .. |PY| replace:: Python
100 .. |pr| replace:: pull request
101 .. |prs| replace:: pull requests
102 .. |psf| replace:: Python Software Foundation
103 .. |repo| replace:: repository
104 .. |repos| replace:: repositories
105 .. |RCC| replace:: RhodeCode Control
106 .. |RCE| replace:: RhodeCode Enterprise
107 .. |RCCE| replace:: RhodeCode Community
108 .. |RCEE| replace:: RhodeCode Enterprise
109 .. |RCX| replace:: RhodeCode Extensions
110 .. |RCT| replace:: RhodeCode Tools
111 .. |RCEBOLD| replace:: **RhodeCode Enterprise**
112 .. |RCEITALICS| replace:: `RhodeCode Enterprise`
113 .. |RNS| replace:: Release Notes
85 """
114 """
86
115
87 # There are two options for replacing |today|: either, you set today to some
116 # There are two options for replacing |today|: either, you set today to some
88 # non-false value, then it is used:
117 # non-false value, then it is used:
89 #today = ''
118 # today = ''
90 # Else, today_fmt is used as the format for a strftime call.
119 # Else, today_fmt is used as the format for a strftime call.
91 #today_fmt = '%B %d, %Y'
120 # today_fmt = '%B %d, %Y'
92
121
93 # List of patterns, relative to source directory, that match files and
122 # List of patterns, relative to source directory, that match files and
94 # directories to ignore when looking for source files.
123 # directories to ignore when looking for source files.
95 exclude_patterns = [
124 exclude_patterns = [
96 # Special directories
125 # Special directories
97 '_build',
126 "_build",
98 'result',
127 "result",
99
100 # Other RST files
128 # Other RST files
101 'admin/rhodecode-backup.rst',
129 "admin/rhodecode-backup.rst",
102 'issue-trackers/redmine.rst',
130 "issue-trackers/redmine.rst",
103 'known-issues/error-msg-guide.rst',
131 "known-issues/error-msg-guide.rst",
104 'tutorials/docs-build.rst',
132 "tutorials/docs-build.rst",
105 'integrations/example-ext.py',
133 "integrations/example-ext.py",
106 'collaboration/supported-workflows.rst',
134 "collaboration/supported-workflows.rst",
107 ]
135 ]
108
136
109
137
110 # The reST default role (used for this markup: `text`) to use for all
138 # The reST default role (used for this markup: `text`) to use for all
111 # documents.
139 # documents.
112 #default_role = None
140 # default_role = None
113
141
114 # If true, '()' will be appended to :func: etc. cross-reference text.
142 # If true, '()' will be appended to :func: etc. cross-reference text.
115 #add_function_parentheses = True
143 # add_function_parentheses = True
116
144
117 # If true, the current module name will be prepended to all description
145 # If true, the current module name will be prepended to all description
118 # unit titles (such as .. function::).
146 # unit titles (such as .. function::).
119 #add_module_names = True
147 # add_module_names = True
120
148
121 # If true, sectionauthor and moduleauthor directives will be shown in the
149 # If true, sectionauthor and moduleauthor directives will be shown in the
122 # output. They are ignored by default.
150 # output. They are ignored by default.
123 #show_authors = False
151 # show_authors = False
124
152
125 # The name of the Pygments (syntax highlighting) style to use.
153 # The name of the Pygments (syntax highlighting) style to use.
126 pygments_style = 'sphinx'
154 pygments_style = "sphinx"
127
155
128 # A list of ignored prefixes for module index sorting.
156 # A list of ignored prefixes for module index sorting.
129 #modindex_common_prefix = []
157 # modindex_common_prefix = []
130
158
131 # If true, keep warnings as "system message" paragraphs in the built documents.
159 # If true, keep warnings as "system message" paragraphs in the built documents.
132 keep_warnings = tags.has("dev")
160 keep_warnings = tags.has("dev")
@@ -136,135 +164,138 b' keep_warnings = tags.has("dev")'
136
164
137 # The theme to use for HTML and HTML Help pages. See the documentation for
165 # The theme to use for HTML and HTML Help pages. See the documentation for
138 # a list of builtin themes.
166 # a list of builtin themes.
139 #html_theme = 'rctheme'
167 html_theme = "furo"
140 html_theme = 'sphinx_rtd_theme'
141
168
142 # Theme options are theme-specific and customize the look and feel of a theme
169 # Theme options are theme-specific and customize the look and feel of a theme
143 # further. For a list of options available for each theme, see the
170 # further. For a list of options available for each theme, see the
144 # documentation.
171 # documentation.
145 #html_theme_options = {}
172 # html_theme_options = {}
146 html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
173
147
174
148 # Add any paths that contain custom themes here, relative to this directory.
175 # Add any paths that contain custom themes here, relative to this directory.
149 #html_theme_path = []
176 # html_theme_path = []
150
177
151 # The name for this set of Sphinx documents. If None, it defaults to
178 # The name for this set of Sphinx documents. If None, it defaults to
152 # "<project> v<release> documentation".
179 # "<project> v<release> documentation".
153 #html_title = None
180 # html_title = None
154
181
155 # A shorter title for the navigation bar. Default is the same as html_title.
182 # A shorter title for the navigation bar. Default is the same as html_title.
156 #html_short_title = None
183 # html_short_title = None
157
184
158 # The name of an image file (relative to this directory) to place at the top
185 # The name of an image file (relative to this directory) to place at the top
159 # of the sidebar.
186 # of the sidebar.
160 #html_logo = None
187 # html_logo = None
161 html_sidebars = {
188
162 '**': ['globaltoc.html'],
189
163 }
190 #html_sidebars = {
191 # "**": ["globaltoc.html"],
192 #}
164
193
165 # The name of an image file (within the static path) to use as favicon of the
194 # The name of an image file (within the static path) to use as favicon of the
166 # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
195 # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
167 # pixels large.
196 # pixels large.
168 html_favicon = 'images/favicon.ico'
197 html_favicon = "images/favicon.ico"
169
198
170 # Add any paths that contain custom static files (such as style sheets) here,
199 # Add any paths that contain custom static files (such as style sheets) here,
171 # relative to this directory. They are copied after the builtin static files,
200 # relative to this directory. They are copied after the builtin static files,
172 # so a file named "default.css" will overwrite the builtin "default.css".
201 # so a file named "default.css" will overwrite the builtin "default.css".
173 html_static_path = ['static/css/add.css']
202 html_static_path = ["static/css/add.css"]
174
203
175 # Add any extra paths that contain custom files (such as robots.txt or
204 # Add any extra paths that contain custom files (such as robots.txt or
176 # .htaccess) here, relative to this directory. These files are copied
205 # .htaccess) here, relative to this directory. These files are copied
177 # directly to the root of the documentation.
206 # directly to the root of the documentation.
178 #html_extra_path = []
207 # html_extra_path = []
179
208
180 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
209 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
181 # using the given strftime format.
210 # using the given strftime format.
182 #html_last_updated_fmt = '%b %d, %Y'
211 html_last_updated_fmt = " %H:%m %b %d, %Y"
183
212
184 # If true, SmartyPants will be used to convert quotes and dashes to
213 # If true, SmartyPants will be used to convert quotes and dashes to
185 # typographically correct entities.
214 # typographically correct entities.
186 #html_use_smartypants = True
215 # html_use_smartypants = True
187
216
188 # Custom sidebar templates, maps document names to template names.
217 # Custom sidebar templates, maps document names to template names.
189 #html_sidebars = {}
218 # html_sidebars = {}
190
219
191 # Additional templates that should be rendered to pages, maps page names to
220 # Additional templates that should be rendered to pages, maps page names to
192 # template names.
221 # template names.
193 #html_additional_pages = {}
222 # html_additional_pages = {}
194
223
195 # If false, no module index is generated.
224 # If false, no module index is generated.
196 #html_domain_indices = True
225 # html_domain_indices = True
197
226
198 # If false, no index is generated.
227 # If false, no index is generated.
199 #html_use_index = True
228 # html_use_index = True
200
229
201 # If true, the index is split into individual pages for each letter.
230 # If true, the index is split into individual pages for each letter.
202 #html_split_index = False
231 # html_split_index = False
203
232
204 # If true, links to the reST sources are added to the pages.
233 # If true, links to the reST sources are added to the pages.
205 #html_show_sourcelink = True
234 # html_show_sourcelink = True
206
235
207 # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
236 # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
208 #html_show_sphinx = True
237 html_show_sphinx = False
209
238
210 # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
239 # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
211 #html_show_copyright = True
240 # html_show_copyright = True
212
241
213 # If true, an OpenSearch description file will be output, and all pages will
242 # If true, an OpenSearch description file will be output, and all pages will
214 # contain a <link> tag referring to it. The value of this option must be the
243 # contain a <link> tag referring to it. The value of this option must be the
215 # base URL from which the finished HTML is served.
244 # base URL from which the finished HTML is served.
216 #html_use_opensearch = ''
245 # html_use_opensearch = ''
217
246
218 # This is the file name suffix for HTML files (e.g. ".xhtml").
247 # This is the file name suffix for HTML files (e.g. ".xhtml").
219 #html_file_suffix = None
248 # html_file_suffix = None
220
249
221 # Output file base name for HTML help builder.
250 # Output file base name for HTML help builder.
222 htmlhelp_basename = 'rhodecode-enterprise'
251 htmlhelp_basename = "rhodecode-enterprise"
223
252
224
253
225 # -- Options for LaTeX output ---------------------------------------------
254 # -- Options for LaTeX output ---------------------------------------------
226
255
227 latex_elements = {
256 latex_elements = {
228 'classoptions': ',oneside',
257 "classoptions": ",oneside",
229 'babel': '\\usepackage[english]{babel}',
258 "babel": "\\usepackage[english]{babel}",
230
259 # The paper size ('letterpaper' or 'a4paper').
231 # The paper size ('letterpaper' or 'a4paper').
260 #'papersize': 'letterpaper',
232 #'papersize': 'letterpaper',
261 # The font size ('10pt', '11pt' or '12pt').
233
262 #'pointsize': '10pt',
234 # The font size ('10pt', '11pt' or '12pt').
263 # Additional stuff for the LaTeX preamble.
235 #'pointsize': '10pt',
264 #'preamble': '',
236
237 # Additional stuff for the LaTeX preamble.
238 #'preamble': '',
239 }
265 }
240
266
241 # Grouping the document tree into LaTeX files. List of tuples
267 # Grouping the document tree into LaTeX files. List of tuples
242 # (source start file, target name, title,
268 # (source start file, target name, title,
243 # author, documentclass [howto, manual, or own class]).
269 # author, documentclass [howto, manual, or own class]).
244 latex_documents = [
270 latex_documents = [
245 ('index', 'RhodeCodeEnterprise.tex', u'RhodeCode Enterprise',
271 (
246 u'RhodeCode GmbH', 'manual'),
272 "index",
273 "RhodeCodeEnterprise.tex",
274 "RhodeCode Enterprise",
275 "RhodeCode GmbH",
276 "manual",
277 ),
247 ]
278 ]
248
279
249 # The name of an image file (relative to this directory) to place at the top of
280 # The name of an image file (relative to this directory) to place at the top of
250 # the title page.
281 # the title page.
251 #latex_logo = None
282 # latex_logo = None
252
283
253 # For "manual" documents, if this is true, then toplevel headings are parts,
284 # For "manual" documents, if this is true, then toplevel headings are parts,
254 # not chapters.
285 # not chapters.
255 #latex_use_parts = False
286 # latex_use_parts = False
256
287
257 # If true, show page references after internal links.
288 # If true, show page references after internal links.
258 latex_show_pagerefs = True
289 latex_show_pagerefs = True
259
290
260 # If true, show URL addresses after external links.
291 # If true, show URL addresses after external links.
261 latex_show_urls = 'footnote'
292 latex_show_urls = "footnote"
262
293
263 # Documents to append as an appendix to all manuals.
294 # Documents to append as an appendix to all manuals.
264 #latex_appendices = []
295 # latex_appendices = []
265
296
266 # If false, no module index is generated.
297 # If false, no module index is generated.
267 #latex_domain_indices = True
298 # latex_domain_indices = True
268
299
269 # Mode for literal blocks wider than the frame. Can be
300 # Mode for literal blocks wider than the frame. Can be
270 # overflow, shrink or truncate
301 # overflow, shrink or truncate
@@ -276,12 +307,11 b' pdf_fit_mode = "truncate"'
276 # One entry per manual page. List of tuples
307 # One entry per manual page. List of tuples
277 # (source start file, name, description, authors, manual section).
308 # (source start file, name, description, authors, manual section).
278 man_pages = [
309 man_pages = [
279 ('index', 'rhodecodeenterprise', u'RhodeCode Enterprise',
310 ("index", "rhodecodeenterprise", "RhodeCode Enterprise", ["RhodeCode GmbH"], 1)
280 [u'RhodeCode GmbH'], 1)
281 ]
311 ]
282
312
283 # If true, show URL addresses after external links.
313 # If true, show URL addresses after external links.
284 #man_show_urls = False
314 # man_show_urls = False
285
315
286
316
287 # -- Options for Texinfo output -------------------------------------------
317 # -- Options for Texinfo output -------------------------------------------
@@ -290,22 +320,28 b' man_pages = ['
290 # (source start file, target name, title, author,
320 # (source start file, target name, title, author,
291 # dir menu entry, description, category)
321 # dir menu entry, description, category)
292 texinfo_documents = [
322 texinfo_documents = [
293 ('index', 'RhodeCodeEnterprise', u'RhodeCode Enterprise',
323 (
294 u'RhodeCode Docs Team', 'RhodeCodeEnterprise', 'RhodeCode Docs Project',
324 "index",
295 'Miscellaneous'),
325 "RhodeCodeEnterprise",
326 "RhodeCode Enterprise",
327 "RhodeCode Docs Team",
328 "RhodeCodeEnterprise",
329 "RhodeCode Docs Project",
330 "Miscellaneous",
331 ),
296 ]
332 ]
297
333
298 # Documents to append as an appendix to all manuals.
334 # Documents to append as an appendix to all manuals.
299 #texinfo_appendices = []
335 # texinfo_appendices = []
300
336
301 # If false, no module index is generated.
337 # If false, no module index is generated.
302 #texinfo_domain_indices = True
338 # texinfo_domain_indices = True
303
339
304 # How to display URL addresses: 'footnote', 'no', or 'inline'.
340 # How to display URL addresses: 'footnote', 'no', or 'inline'.
305 #texinfo_show_urls = 'footnote'
341 # texinfo_show_urls = 'footnote'
306
342
307 # If true, do not generate a @detailmenu in the "Top" node's menu.
343 # If true, do not generate a @detailmenu in the "Top" node's menu.
308 #texinfo_no_detailmenu = False
344 # texinfo_no_detailmenu = False
309
345
310 # We want to see todo notes in case of a pre-release build of the documentation
346 # We want to see todo notes in case of a pre-release build of the documentation
311 todo_include_todos = tags.has("dev")
347 todo_include_todos = tags.has("dev")
@@ -68,7 +68,7 b' 3. Configure Celery in the'
68 celery.broker_url = redis://localhost:6379/8
68 celery.broker_url = redis://localhost:6379/8
69
69
70 # maximum tasks to execute before worker restart
70 # maximum tasks to execute before worker restart
71 celery.max_tasks_per_child = 100
71 celery.max_tasks_per_child = 20
72
72
73 ## tasks will never be sent to the queue, but executed locally instead.
73 ## tasks will never be sent to the queue, but executed locally instead.
74 celery.task_always_eager = false
74 celery.task_always_eager = false
@@ -16,7 +16,6 b' Type/Name Rhod'
16 ================================ ================== ========================================
16 ================================ ================== ========================================
17 :ref:`integrations-webhook` |RCCEshort| Trigger events as `json` to a custom url
17 :ref:`integrations-webhook` |RCCEshort| Trigger events as `json` to a custom url
18 :ref:`integrations-slack` |RCCEshort| Integrate with https://slack.com/
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
19 :ref:`integrations-email` |RCCEshort| Send repo push commits by email
21 :ref:`integrations-ci` |RCCEshort| Trigger Builds for Common CI Systems
20 :ref:`integrations-ci` |RCCEshort| Trigger Builds for Common CI Systems
22 :ref:`integrations-rcextensions` |RCCEshort| Advanced low-level integration framework
21 :ref:`integrations-rcextensions` |RCCEshort| Advanced low-level integration framework
@@ -50,7 +49,6 b' See pages specific to each type of integ'
50 .. toctree::
49 .. toctree::
51
50
52 slack
51 slack
53 hipchat
54 redmine
52 redmine
55 jira
53 jira
56 webhook
54 webhook
@@ -1,8 +1,11 b''
1 sphinx==1.8.2
1 sphinx==7.2.6
2 six==1.11.0
2
3 sphinx_rtd_theme==0.4.1
3 furo==2023.9.10
4 docutils==0.16.0
4 sphinx-press-theme==0.8.0
5 pygments==2.3.0
5 sphinx-rtd-theme==1.3.0
6 markupsafe==1.0.0
6
7 jinja2==2.9.6
7 pygments==2.16.1
8 pytz==2018.4
8
9 docutils<0.19
10 markupsafe==2.1.3
11 jinja2==3.1.2
@@ -41,7 +41,6 b''
41 "<%= dirs.js.node_modules %>/sticky-sidebar/dist/jquery.sticky-sidebar.min.js",
41 "<%= dirs.js.node_modules %>/sticky-sidebar/dist/jquery.sticky-sidebar.min.js",
42 "<%= dirs.js.node_modules %>/waypoints/lib/noframework.waypoints.min.js",
42 "<%= dirs.js.node_modules %>/waypoints/lib/noframework.waypoints.min.js",
43 "<%= dirs.js.node_modules %>/waypoints/lib/jquery.waypoints.min.js",
43 "<%= dirs.js.node_modules %>/waypoints/lib/jquery.waypoints.min.js",
44 "<%= dirs.js.node_modules %>/appenlight-client/appenlight-client.min.js",
45 "<%= dirs.js.src %>/logging.js",
44 "<%= dirs.js.src %>/logging.js",
46 "<%= dirs.js.src %>/bootstrap.js",
45 "<%= dirs.js.src %>/bootstrap.js",
47 "<%= dirs.js.src %>/i18n_utils.js",
46 "<%= dirs.js.src %>/i18n_utils.js",
@@ -1,62 +1,61 b''
1 {
1 {
2 "name": "rhodecode-enterprise",
2 "name": "rhodecode-enterprise",
3 "version": "2.0.0",
3 "version": "5.0.0",
4 "private": true,
4 "private": true,
5 "description" : "RhodeCode JS packaged",
5 "description": "RhodeCode JS packaged",
6 "license": "SEE LICENSE IN LICENSE.txt",
6 "license": "SEE LICENSE IN LICENSE.txt",
7 "repository" : {
7 "repository": {
8 "type" : "hg",
8 "type": "hg",
9 "url" : "https://code.rhodecode.com/rhodecode-enterprise-ce"
9 "url": "https://code.rhodecode.com/rhodecode-enterprise-ce"
10 },
10 },
11 "devDependencies": {
11 "devDependencies": {
12 "appenlight-client": "git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1",
12 "@polymer/iron-a11y-keys": "^3.0.0",
13 "@polymer/iron-ajax": "^3.0.0",
14 "@polymer/iron-autogrow-textarea": "^3.0.0",
15 "@polymer/paper-button": "^3.0.0",
16 "@polymer/paper-spinner": "^3.0.0",
17 "@polymer/paper-toast": "^3.0.0",
18 "@polymer/paper-toggle-button": "^3.0.0",
19 "@polymer/paper-tooltip": "^3.0.0",
20 "@polymer/polymer": "^3.0.0",
21 "@webcomponents/webcomponentsjs": "^2.0.0",
22 "babel-core": "^6.26.3",
23 "babel-loader": "^7.1.2",
24 "babel-plugin-transform-object-rest-spread": "^6.26.0",
25 "babel-preset-env": "^1.6.0",
13 "clipboard": "^2.0.1",
26 "clipboard": "^2.0.1",
27 "copy-webpack-plugin": "^4.4.2",
28 "css-loader": "^0.28.11",
29 "dropzone": "^5.5.0",
14 "exports-loader": "^0.6.4",
30 "exports-loader": "^0.6.4",
15 "favico.js": "^0.3.10",
31 "favico.js": "^0.3.10",
16 "dropzone": "^5.5.0",
17 "grunt": "^0.4.5",
32 "grunt": "^0.4.5",
18 "grunt-cli": "^1.3.1",
33 "grunt-cli": "^1.4.3",
19 "grunt-contrib-concat": "^0.5.1",
34 "grunt-contrib-concat": "^0.5.1",
20 "grunt-contrib-copy": "^1.0.0",
35 "grunt-contrib-copy": "^1.0.0",
21 "grunt-contrib-jshint": "^0.12.0",
36 "grunt-contrib-jshint": "^0.12.0",
22 "grunt-contrib-less": "^1.1.0",
37 "grunt-contrib-less": "^1.1.0",
38 "grunt-contrib-uglify": "^4.0.1",
23 "grunt-contrib-watch": "^0.6.1",
39 "grunt-contrib-watch": "^0.6.1",
24 "grunt-webpack": "^3.1.3",
40 "grunt-webpack": "^3.1.3",
25 "grunt-contrib-uglify": "^4.0.1",
41 "html-loader": "^0.4.4",
26 "sweetalert2": "^9.10.12",
42 "html-webpack-plugin": "^3.2.0",
43 "imports-loader": "^0.7.1",
27 "jquery": "1.11.3",
44 "jquery": "1.11.3",
45 "jshint": "^2.9.1-rc3",
28 "mark.js": "8.11.1",
46 "mark.js": "8.11.1",
29 "jshint": "^2.9.1-rc3",
30 "moment": "^2.18.1",
47 "moment": "^2.18.1",
31 "mousetrap": "^1.6.1",
48 "mousetrap": "^1.6.1",
49 "polymer-webpack-loader": "^2.0.1",
32 "qrious": "^4.0.2",
50 "qrious": "^4.0.2",
51 "raw-loader": "1.0.0-beta.0",
33 "sticky-sidebar": "3.3.1",
52 "sticky-sidebar": "3.3.1",
53 "style-loader": "^0.21.0",
54 "sweetalert2": "^9.10.12",
55 "ts-loader": "^1.3.3",
34 "waypoints": "4.0.1",
56 "waypoints": "4.0.1",
35 "webpack": "4.23.1",
57 "webpack": "4.23.1",
36 "webpack-cli": "3.1.2",
58 "webpack-cli": "3.1.2",
37 "babel-core": "^6.26.3",
59 "webpack-uglify-js-plugin": "^1.1.9"
38 "babel-loader": "^7.1.2",
39 "babel-plugin-transform-object-rest-spread": "^6.26.0",
40 "babel-preset-env": "^1.6.0",
41 "copy-webpack-plugin": "^4.4.2",
42 "css-loader": "^0.28.11",
43 "html-loader": "^0.4.4",
44 "html-webpack-plugin": "^3.2.0",
45 "imports-loader": "^0.7.1",
46 "polymer-webpack-loader": "^2.0.1",
47 "style-loader": "^0.21.0",
48 "webpack-uglify-js-plugin": "^1.1.9",
49 "raw-loader": "1.0.0-beta.0",
50 "ts-loader": "^1.3.3",
51 "@webcomponents/webcomponentsjs": "^2.0.0",
52 "@polymer/polymer": "^3.0.0",
53 "@polymer/paper-button": "^3.0.0",
54 "@polymer/paper-spinner": "^3.0.0",
55 "@polymer/paper-tooltip": "^3.0.0",
56 "@polymer/paper-toast": "^3.0.0",
57 "@polymer/paper-toggle-button": "^3.0.0",
58 "@polymer/iron-ajax": "^3.0.0",
59 "@polymer/iron-autogrow-textarea": "^3.0.0",
60 "@polymer/iron-a11y-keys": "^3.0.0"
61 }
60 }
62 }
61 }
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from rhodecode/lib/bleach_whitelist.py to rhodecode/lib/html_sanitizer_defs.py
NO CONTENT: file renamed from rhodecode/lib/bleach_whitelist.py to rhodecode/lib/html_sanitizer_defs.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from rhodecode/templates/admin/settings/settings_automation.mako to rhodecode/templates/admin/automation/automation.mako
NO CONTENT: file renamed from rhodecode/templates/admin/settings/settings_automation.mako to rhodecode/templates/admin/automation/automation.mako
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from rhodecode/tests/pylons_plugin.py to rhodecode/tests/fixture_mods/fixture_pyramid.py
NO CONTENT: file renamed from rhodecode/tests/pylons_plugin.py to rhodecode/tests/fixture_mods/fixture_pyramid.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from rhodecode/tests/plugin.py to rhodecode/tests/fixture_mods/fixture_utils.py
NO CONTENT: file renamed from rhodecode/tests/plugin.py to rhodecode/tests/fixture_mods/fixture_utils.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (542 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (9234 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
General Comments 0
You need to be logged in to leave comments. Login now