Show More
@@ -3,6 +3,16 b'' | |||
|
3 | 3 | Changelog |
|
4 | 4 | ========= |
|
5 | 5 | |
|
6 | ||
|
7 | 1.0.1 (**2010-11-10**) | |
|
8 | ---------------------- | |
|
9 | ||
|
10 | - fixed #53 python2.5 incompatible enumerate calls | |
|
11 | - fixed #52 disable mercurial extension for web | |
|
12 | - fixed #51 deleting repositories don't delete it's dependent objects | |
|
13 | - small css updated | |
|
14 | ||
|
15 | ||
|
6 | 16 | 1.0.0 (**2010-11-02**) |
|
7 | 17 | ---------------------- |
|
8 | 18 |
@@ -5,12 +5,12 b' Installation' | |||
|
5 | 5 | |
|
6 | 6 | ``RhodeCode`` is written entirely in Python, but in order to use it's full |
|
7 | 7 | potential there are some third-party requirements. When RhodeCode is used |
|
8 | together with celery You have to install some kind of message broker, | |
|
8 | together with celery_ You have to install some kind of message broker, | |
|
9 | 9 | recommended one is rabbitmq_ to make the async tasks work. |
|
10 | 10 | |
|
11 | 11 | Of course RhodeCode works in sync mode also, then You don't have to install |
|
12 | 12 | any third party apps. Celery_ will give You large speed improvement when using |
|
13 |
many big repositories. If You plan to use it for |
|
|
13 | many big repositories. If You plan to use it for 5 or 10 small repositories, it | |
|
14 | 14 | will work just fine without celery running. |
|
15 | 15 | |
|
16 | 16 | After You decide to Run it with celery make sure You run celeryd and |
@@ -49,8 +49,9 b' Step by step installation example' | |||
|
49 | 49 | --------------------------------- |
|
50 | 50 | |
|
51 | 51 | |
|
52 |
- Assuming You have installed virtualenv_ create one using. |
|
|
53 |
will make sure non of Your system libs are linked |
|
|
52 | - Assuming You have installed virtualenv_ create one using. | |
|
53 | The `--no-site-packages` will make sure non of Your system libs are linked | |
|
54 | with this virtualenv_ | |
|
54 | 55 | |
|
55 | 56 | :: |
|
56 | 57 |
@@ -40,6 +40,18 b' Setting up the application' | |||
|
40 | 40 | - Default permissions on each repository is read, and owner is admin. So |
|
41 | 41 | remember to update these if needed. |
|
42 | 42 | |
|
43 | Note | |
|
44 | ---- | |
|
45 | ||
|
46 | RhodeCode when running without the celery it's running all it's task in sync | |
|
47 | mode, for first few times when visiting summary page You can notice few | |
|
48 | slow downs, this is due the statistics building it's cache. After all changesets | |
|
49 | are parsed it'll take the stats from cache and run much faster. Each summary | |
|
50 | page display parse at most 250 changesets in order to not stress the cpu, so | |
|
51 | the full stats are going to be loaded after total_number_of_changesets/250 | |
|
52 | summary page visits. | |
|
53 | ||
|
54 | ||
|
43 | 55 | |
|
44 | 56 | Setting up Whoosh |
|
45 | 57 | ----------------- |
@@ -53,9 +65,9 b' Setting up Whoosh' | |||
|
53 | 65 | When using incremental mode whoosh will check last modification date of each file |
|
54 | 66 | and add it to reindex if newer file is available. Also indexing daemon checks |
|
55 | 67 | for removed files and removes them from index. Sometime You might want to rebuild |
|
56 |
index from scrach, in admin pa |
|
|
68 | index from scratch, in admin panel You can check `build from scratch` flag | |
|
57 | 69 | and in standalone daemon You can pass `full` instead on incremental to build |
|
58 | remove previos index and build new one. | |
|
70 | remove previous index and build new one. | |
|
59 | 71 | |
|
60 | 72 | Nginx virtual host example |
|
61 | 73 | -------------------------- |
@@ -24,7 +24,7 b' versioning implementation: http://semver' | |||
|
24 | 24 | @author: marcink |
|
25 | 25 | """ |
|
26 | 26 | |
|
27 |
VERSION = (1, 0, |
|
|
27 | VERSION = (1, 0, 1,) | |
|
28 | 28 | |
|
29 | 29 | __version__ = '.'.join((str(each) for each in VERSION[:4])) |
|
30 | 30 |
@@ -203,12 +203,12 b' class _FilesBreadCrumbs(object):' | |||
|
203 | 203 | revision=rev, f_path=''))] |
|
204 | 204 | paths_l = paths.split('/') |
|
205 | 205 | |
|
206 |
for cnt, p in enumerate(paths_l |
|
|
206 | for cnt, p in enumerate(paths_l): | |
|
207 | 207 | if p != '': |
|
208 | 208 | url_l.append(link_to(p, url('files_home', |
|
209 | 209 | repo_name=repo_name, |
|
210 | 210 | revision=rev, |
|
211 | f_path='/'.join(paths_l[:cnt])))) | |
|
211 | f_path='/'.join(paths_l[:cnt + 1])))) | |
|
212 | 212 | |
|
213 | 213 | return literal('/'.join(url_l)) |
|
214 | 214 | |
@@ -219,9 +219,9 b' class CodeHtmlFormatter(HtmlFormatter):' | |||
|
219 | 219 | return self._wrap_div(self._wrap_pre(self._wrap_code(source))) |
|
220 | 220 | |
|
221 | 221 | def _wrap_code(self, source): |
|
222 |
for cnt, it in enumerate(source |
|
|
222 | for cnt, it in enumerate(source): | |
|
223 | 223 | i, t = it |
|
224 | t = '<div id="#S-%s">%s</div>' % (cnt, t) | |
|
224 | t = '<div id="#S-%s">%s</div>' % (cnt + 1, t) | |
|
225 | 225 | yield i, t |
|
226 | 226 | def pygmentize(filenode, **kwargs): |
|
227 | 227 | """ |
@@ -221,6 +221,11 b" def make_ui(read_from='file', path=None," | |||
|
221 | 221 | for k, v in cfg.items(section): |
|
222 | 222 | baseui.setconfig(section, k, v) |
|
223 | 223 | log.debug('settings ui from file[%s]%s:%s', section, k, v) |
|
224 | ||
|
225 | for k, v in baseui.configitems('extensions'): | |
|
226 | baseui.setconfig('extensions', k, '0') | |
|
227 | #just enable mq | |
|
228 | baseui.setconfig('extensions', 'mq', '1') | |
|
224 | 229 | if checkpaths:check_repo_dir(cfg.items('paths')) |
|
225 | 230 | |
|
226 | 231 |
@@ -89,6 +89,8 b' class Repository(Base):' | |||
|
89 | 89 | user = relation('User') |
|
90 | 90 | fork = relation('Repository', remote_side=repo_id) |
|
91 | 91 | repo_to_perm = relation('RepoToPerm', cascade='all') |
|
92 | stats = relation('Statistics', cascade='all') | |
|
93 | ||
|
92 | 94 | |
|
93 | 95 | def __repr__(self): |
|
94 | 96 | return "<Repository('id:%s:%s')>" % (self.repo_id, self.repo_name) |
@@ -135,5 +137,5 b' class Statistics(Base):' | |||
|
135 | 137 | commit_activity_combined = Column("commit_activity_combined", BLOB(), nullable=False)#JSON data |
|
136 | 138 | languages = Column("languages", BLOB(), nullable=False)#JSON data |
|
137 | 139 | |
|
138 | repository = relation('Repository') | |
|
140 | repository = relation('Repository', single_parent=True) | |
|
139 | 141 |
@@ -270,7 +270,7 b' text-decoration:none;' | |||
|
270 | 270 | } |
|
271 | 271 | |
|
272 | 272 | #header #header-inner #logo a:hover { |
|
273 |
color:# |
|
|
273 | color:#bfe3ff; | |
|
274 | 274 | } |
|
275 | 275 | |
|
276 | 276 | #header #header-inner #quick,#header #header-inner #quick ul { |
@@ -419,7 +419,7 b' padding:12px 9px 7px 24px;' | |||
|
419 | 419 | } |
|
420 | 420 | |
|
421 | 421 | #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover { |
|
422 |
background:url("../images/icons/ |
|
|
422 | background:url("../images/icons/database_edit.png") no-repeat scroll 4px 9px #FFF; | |
|
423 | 423 | width:167px; |
|
424 | 424 | margin:0; |
|
425 | 425 | padding:12px 9px 7px 24px; |
@@ -1010,7 +1010,7 b' padding:0;' | |||
|
1010 | 1010 | #content div.box table th { |
|
1011 | 1011 | background:#eee; |
|
1012 | 1012 | border-bottom:1px solid #ddd; |
|
1013 |
padding: |
|
|
1013 | padding:5px 0px 5px 5px; | |
|
1014 | 1014 | } |
|
1015 | 1015 | |
|
1016 | 1016 | #content div.box table th.left { |
@@ -1393,7 +1393,6 b' background-color:#003367;' | |||
|
1393 | 1393 | color:#FFF; |
|
1394 | 1394 | display:block; |
|
1395 | 1395 | min-width:20px; |
|
1396 | max-width:400px; | |
|
1397 | 1396 | text-decoration:none; |
|
1398 | 1397 | height:12px; |
|
1399 | 1398 | margin-bottom:4px; |
@@ -1542,7 +1541,7 b' background:#F88;' | |||
|
1542 | 1541 | |
|
1543 | 1542 | .right .merge { |
|
1544 | 1543 | vertical-align:top; |
|
1545 |
font-size: |
|
|
1544 | font-size:0.75em; | |
|
1546 | 1545 | font-weight:700; |
|
1547 | 1546 | } |
|
1548 | 1547 | |
@@ -1554,13 +1553,15 b' font-family:monospace;' | |||
|
1554 | 1553 | .right .logtags .branchtag { |
|
1555 | 1554 | background:#FFF url("../images/icons/arrow_branch.png") no-repeat right 6px; |
|
1556 | 1555 | display:block; |
|
1557 | padding:8px 16px 0 0; | |
|
1556 | font-size:0.8em; | |
|
1557 | padding:11px 16px 0 0; | |
|
1558 | 1558 | } |
|
1559 | 1559 | |
|
1560 | 1560 | .right .logtags .tagtag { |
|
1561 | 1561 | background:#FFF url("../images/icons/tag_blue.png") no-repeat right 6px; |
|
1562 | 1562 | display:block; |
|
1563 | padding:6px 18px 0 0; | |
|
1563 | font-size:0.8em; | |
|
1564 | padding:11px 16px 0 0; | |
|
1564 | 1565 | } |
|
1565 | 1566 | |
|
1566 | 1567 | div.browserblock { |
@@ -1701,6 +1702,7 b' font:100% sans-serif;' | |||
|
1701 | 1702 | width:auto; |
|
1702 | 1703 | opacity:1px; |
|
1703 | 1704 | padding:8px; |
|
1705 | white-space: pre; | |
|
1704 | 1706 | } |
|
1705 | 1707 | |
|
1706 | 1708 | .ac { |
@@ -2024,7 +2026,6 b' display:block;' | |||
|
2024 | 2026 | } |
|
2025 | 2027 | |
|
2026 | 2028 | #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a { |
|
2027 | background:url("../../images/title_tab_selected.png") no-repeat bottom center; | |
|
2028 | 2029 | color:#bfe3ff; |
|
2029 | 2030 | } |
|
2030 | 2031 |
@@ -43,8 +43,8 b'' | |||
|
43 | 43 | </tr> |
|
44 | 44 | %endif |
|
45 | 45 | |
|
46 |
%for cnt,node in enumerate(c.files_list |
|
|
47 | <tr class="parity${cnt%2}"> | |
|
46 | %for cnt,node in enumerate(c.files_list): | |
|
47 | <tr class="parity${(cnt+1)%2}"> | |
|
48 | 48 | <td> |
|
49 | 49 | ${h.link_to(node.name,h.url('files_home',repo_name=c.repo_name,revision=c.cur_rev,f_path=node.path),class_=file_class(node))} |
|
50 | 50 | </td> |
@@ -131,11 +131,13 b' E.onDOMReady(function(e){' | |||
|
131 | 131 | var value = data[k]; |
|
132 | 132 | var td1 = document.createElement('td'); |
|
133 | 133 | td1.width=150; |
|
134 | ||
|
134 | 135 | var trending_language_label = document.createElement('div'); |
|
135 | 136 | trending_language_label.innerHTML = k; |
|
136 | 137 | td1.appendChild(trending_language_label); |
|
137 | 138 | |
|
138 | 139 | var td2 = document.createElement('td'); |
|
140 | td2.setAttribute('style','padding-right: 12px ! important;'); | |
|
139 | 141 | var trending_language = document.createElement('div'); |
|
140 | 142 | trending_language.title = k; |
|
141 | 143 | trending_language.innerHTML = "<b>"+percentage+"% "+value+" ${_('files')}</b>"; |
General Comments 0
You need to be logged in to leave comments.
Login now