##// END OF EJS Templates
fixes #555 issues when comparing non-related repositories on pull requests or compare view
marcink -
r2810:4a5c56da beta
parent child Browse files
Show More
@@ -1,743 +1,744 b''
1 .. _changelog:
1 .. _changelog:
2
2
3 =========
3 =========
4 Changelog
4 Changelog
5 =========
5 =========
6
6
7
7
8 1.4.1 (**2012-09-05**)
8 1.4.1 (**2012-09-05**)
9 ----------------------
9 ----------------------
10
10
11 :status: in-progress
11 :status: in-progress
12 :branch: beta
12 :branch: beta
13
13
14 news
14 news
15 ++++
15 ++++
16
16
17 - always put a comment about code-review status change even if user send
17 - always put a comment about code-review status change even if user send
18 empty data
18 empty data
19 - modified_on column saves repository update and it's going to be used
19 - modified_on column saves repository update and it's going to be used
20 later for light version of main page ref #500
20 later for light version of main page ref #500
21 - pull request notifications send much nicer emails with details about pull
21 - pull request notifications send much nicer emails with details about pull
22 request
22 request
23
23
24 fixes
24 fixes
25 +++++
25 +++++
26
26
27 - fixed migrations of permissions that can lead to inconsistency.
27 - fixed migrations of permissions that can lead to inconsistency.
28 Some users sent feedback that after upgrading from older versions issues
28 Some users sent feedback that after upgrading from older versions issues
29 with updating default permissions occurred. RhodeCode detects that now and
29 with updating default permissions occurred. RhodeCode detects that now and
30 resets default user permission to initial state if there is a need for that.
30 resets default user permission to initial state if there is a need for that.
31 Also forces users to set the default value for new forking permission.
31 Also forces users to set the default value for new forking permission.
32 - #535 improved apache wsgi example configuration in docs
32 - #535 improved apache wsgi example configuration in docs
33 - fixes #550 mercurial repositories comparision failed when origin repo had
33 - fixes #550 mercurial repositories comparision failed when origin repo had
34 additional not-common changesets
34 additional not-common changesets
35 - fixed status of code-review in preview windows of pull request
35 - fixed status of code-review in preview windows of pull request
36 - git forks were not initialized at bare repos
36 - git forks were not initialized at bare repos
37 - fixes #555 fixes issues with comparing non-related repositories
37
38
38 1.4.0 (**2012-09-03**)
39 1.4.0 (**2012-09-03**)
39 ----------------------
40 ----------------------
40
41
41 news
42 news
42 ++++
43 ++++
43
44
44 - new codereview system
45 - new codereview system
45 - email map, allowing users to have multiple email addresses mapped into
46 - email map, allowing users to have multiple email addresses mapped into
46 their accounts
47 their accounts
47 - improved git-hook system. Now all actions for git are logged into journal
48 - improved git-hook system. Now all actions for git are logged into journal
48 including pushed revisions, user and IP address
49 including pushed revisions, user and IP address
49 - changed setup-app into setup-rhodecode and added default options to it.
50 - changed setup-app into setup-rhodecode and added default options to it.
50 - new git repos are created as bare now by default
51 - new git repos are created as bare now by default
51 - #464 added links to groups in permission box
52 - #464 added links to groups in permission box
52 - #465 mentions autocomplete inside comments boxes
53 - #465 mentions autocomplete inside comments boxes
53 - #469 added --update-only option to whoosh to re-index only given list
54 - #469 added --update-only option to whoosh to re-index only given list
54 of repos in index
55 of repos in index
55 - rhodecode-api CLI client
56 - rhodecode-api CLI client
56 - new git http protocol replaced buggy dulwich implementation.
57 - new git http protocol replaced buggy dulwich implementation.
57 Now based on pygrack & gitweb
58 Now based on pygrack & gitweb
58 - Improved RSS/ATOM feeds. Discoverable by browsers using proper headers, and
59 - Improved RSS/ATOM feeds. Discoverable by browsers using proper headers, and
59 reformated based on user suggestions. Additional rss/atom feeds for user
60 reformated based on user suggestions. Additional rss/atom feeds for user
60 journal
61 journal
61 - various i18n improvements
62 - various i18n improvements
62 - #478 permissions overview for admin in user edit view
63 - #478 permissions overview for admin in user edit view
63 - File view now displays small gravatars off all authors of given file
64 - File view now displays small gravatars off all authors of given file
64 - Implemented landing revisions. Each repository will get landing_rev attribute
65 - Implemented landing revisions. Each repository will get landing_rev attribute
65 that defines 'default' revision/branch for generating readme files
66 that defines 'default' revision/branch for generating readme files
66 - Implemented #509, RhodeCode enforces SSL for push/pulling if requested at
67 - Implemented #509, RhodeCode enforces SSL for push/pulling if requested at
67 earliest possible call.
68 earliest possible call.
68 - Import remote svn repositories to mercurial using hgsubversion.
69 - Import remote svn repositories to mercurial using hgsubversion.
69 - Fixed #508 RhodeCode now has a option to explicitly set forking permissions
70 - Fixed #508 RhodeCode now has a option to explicitly set forking permissions
70 - RhodeCode can use alternative server for generating avatar icons
71 - RhodeCode can use alternative server for generating avatar icons
71 - implemented repositories locking. Pull locks, push unlocks. Also can be done
72 - implemented repositories locking. Pull locks, push unlocks. Also can be done
72 via API calls
73 via API calls
73 - #538 form for permissions can handle multiple users at once
74 - #538 form for permissions can handle multiple users at once
74
75
75 fixes
76 fixes
76 +++++
77 +++++
77
78
78 - improved translations
79 - improved translations
79 - fixes issue #455 Creating an archive generates an exception on Windows
80 - fixes issue #455 Creating an archive generates an exception on Windows
80 - fixes #448 Download ZIP archive keeps file in /tmp open and results
81 - fixes #448 Download ZIP archive keeps file in /tmp open and results
81 in out of disk space
82 in out of disk space
82 - fixes issue #454 Search results under Windows include proceeding
83 - fixes issue #454 Search results under Windows include proceeding
83 backslash
84 backslash
84 - fixed issue #450. Rhodecode no longer will crash when bad revision is
85 - fixed issue #450. Rhodecode no longer will crash when bad revision is
85 present in journal data.
86 present in journal data.
86 - fix for issue #417, git execution was broken on windows for certain
87 - fix for issue #417, git execution was broken on windows for certain
87 commands.
88 commands.
88 - fixed #413. Don't disable .git directory for bare repos on deleting
89 - fixed #413. Don't disable .git directory for bare repos on deleting
89 - fixed issue #459. Changed the way of obtaining logger in reindex task.
90 - fixed issue #459. Changed the way of obtaining logger in reindex task.
90 - fixed #453 added ID field in whoosh SCHEMA that solves the issue of
91 - fixed #453 added ID field in whoosh SCHEMA that solves the issue of
91 reindexing modified files
92 reindexing modified files
92 - fixed #481 rhodecode emails are sent without Date header
93 - fixed #481 rhodecode emails are sent without Date header
93 - fixed #458 wrong count when no repos are present
94 - fixed #458 wrong count when no repos are present
94 - fixed issue #492 missing `\ No newline at end of file` test at the end of
95 - fixed issue #492 missing `\ No newline at end of file` test at the end of
95 new chunk in html diff
96 new chunk in html diff
96 - full text search now works also for commit messages
97 - full text search now works also for commit messages
97
98
98 1.3.6 (**2012-05-17**)
99 1.3.6 (**2012-05-17**)
99 ----------------------
100 ----------------------
100
101
101 news
102 news
102 ++++
103 ++++
103
104
104 - chinese traditional translation
105 - chinese traditional translation
105 - changed setup-app into setup-rhodecode and added arguments for auto-setup
106 - changed setup-app into setup-rhodecode and added arguments for auto-setup
106 mode that doesn't need user interaction
107 mode that doesn't need user interaction
107
108
108 fixes
109 fixes
109 +++++
110 +++++
110
111
111 - fixed no scm found warning
112 - fixed no scm found warning
112 - fixed __future__ import error on rcextensions
113 - fixed __future__ import error on rcextensions
113 - made simplejson required lib for speedup on JSON encoding
114 - made simplejson required lib for speedup on JSON encoding
114 - fixes #449 bad regex could get more than revisions from parsing history
115 - fixes #449 bad regex could get more than revisions from parsing history
115 - don't clear DB session when CELERY_EAGER is turned ON
116 - don't clear DB session when CELERY_EAGER is turned ON
116
117
117 1.3.5 (**2012-05-10**)
118 1.3.5 (**2012-05-10**)
118 ----------------------
119 ----------------------
119
120
120 news
121 news
121 ++++
122 ++++
122
123
123 - use ext_json for json module
124 - use ext_json for json module
124 - unified annotation view with file source view
125 - unified annotation view with file source view
125 - notification improvements, better inbox + css
126 - notification improvements, better inbox + css
126 - #419 don't strip passwords for login forms, make rhodecode
127 - #419 don't strip passwords for login forms, make rhodecode
127 more compatible with LDAP servers
128 more compatible with LDAP servers
128 - Added HTTP_X_FORWARDED_FOR as another method of extracting
129 - Added HTTP_X_FORWARDED_FOR as another method of extracting
129 IP for pull/push logs. - moved all to base controller
130 IP for pull/push logs. - moved all to base controller
130 - #415: Adding comment to changeset causes reload.
131 - #415: Adding comment to changeset causes reload.
131 Comments are now added via ajax and doesn't reload the page
132 Comments are now added via ajax and doesn't reload the page
132 - #374 LDAP config is discarded when LDAP can't be activated
133 - #374 LDAP config is discarded when LDAP can't be activated
133 - limited push/pull operations are now logged for git in the journal
134 - limited push/pull operations are now logged for git in the journal
134 - bumped mercurial to 2.2.X series
135 - bumped mercurial to 2.2.X series
135 - added support for displaying submodules in file-browser
136 - added support for displaying submodules in file-browser
136 - #421 added bookmarks in changelog view
137 - #421 added bookmarks in changelog view
137
138
138 fixes
139 fixes
139 +++++
140 +++++
140
141
141 - fixed dev-version marker for stable when served from source codes
142 - fixed dev-version marker for stable when served from source codes
142 - fixed missing permission checks on show forks page
143 - fixed missing permission checks on show forks page
143 - #418 cast to unicode fixes in notification objects
144 - #418 cast to unicode fixes in notification objects
144 - #426 fixed mention extracting regex
145 - #426 fixed mention extracting regex
145 - fixed remote-pulling for git remotes remopositories
146 - fixed remote-pulling for git remotes remopositories
146 - fixed #434: Error when accessing files or changesets of a git repository
147 - fixed #434: Error when accessing files or changesets of a git repository
147 with submodules
148 with submodules
148 - fixed issue with empty APIKEYS for users after registration ref. #438
149 - fixed issue with empty APIKEYS for users after registration ref. #438
149 - fixed issue with getting README files from git repositories
150 - fixed issue with getting README files from git repositories
150
151
151 1.3.4 (**2012-03-28**)
152 1.3.4 (**2012-03-28**)
152 ----------------------
153 ----------------------
153
154
154 news
155 news
155 ++++
156 ++++
156
157
157 - Whoosh logging is now controlled by the .ini files logging setup
158 - Whoosh logging is now controlled by the .ini files logging setup
158 - added clone-url into edit form on /settings page
159 - added clone-url into edit form on /settings page
159 - added help text into repo add/edit forms
160 - added help text into repo add/edit forms
160 - created rcextensions module with additional mappings (ref #322) and
161 - created rcextensions module with additional mappings (ref #322) and
161 post push/pull/create repo hooks callbacks
162 post push/pull/create repo hooks callbacks
162 - implemented #377 Users view for his own permissions on account page
163 - implemented #377 Users view for his own permissions on account page
163 - #399 added inheritance of permissions for users group on repos groups
164 - #399 added inheritance of permissions for users group on repos groups
164 - #401 repository group is automatically pre-selected when adding repos
165 - #401 repository group is automatically pre-selected when adding repos
165 inside a repository group
166 inside a repository group
166 - added alternative HTTP 403 response when client failed to authenticate. Helps
167 - added alternative HTTP 403 response when client failed to authenticate. Helps
167 solving issues with Mercurial and LDAP
168 solving issues with Mercurial and LDAP
168 - #402 removed group prefix from repository name when listing repositories
169 - #402 removed group prefix from repository name when listing repositories
169 inside a group
170 inside a group
170 - added gravatars into permission view and permissions autocomplete
171 - added gravatars into permission view and permissions autocomplete
171 - #347 when running multiple RhodeCode instances, properly invalidates cache
172 - #347 when running multiple RhodeCode instances, properly invalidates cache
172 for all registered servers
173 for all registered servers
173
174
174 fixes
175 fixes
175 +++++
176 +++++
176
177
177 - fixed #390 cache invalidation problems on repos inside group
178 - fixed #390 cache invalidation problems on repos inside group
178 - fixed #385 clone by ID url was loosing proxy prefix in URL
179 - fixed #385 clone by ID url was loosing proxy prefix in URL
179 - fixed some unicode problems with waitress
180 - fixed some unicode problems with waitress
180 - fixed issue with escaping < and > in changeset commits
181 - fixed issue with escaping < and > in changeset commits
181 - fixed error occurring during recursive group creation in API
182 - fixed error occurring during recursive group creation in API
182 create_repo function
183 create_repo function
183 - fixed #393 py2.5 fixes for routes url generator
184 - fixed #393 py2.5 fixes for routes url generator
184 - fixed #397 Private repository groups shows up before login
185 - fixed #397 Private repository groups shows up before login
185 - fixed #396 fixed problems with revoking users in nested groups
186 - fixed #396 fixed problems with revoking users in nested groups
186 - fixed mysql unicode issues + specified InnoDB as default engine with
187 - fixed mysql unicode issues + specified InnoDB as default engine with
187 utf8 charset
188 utf8 charset
188 - #406 trim long branch/tag names in changelog to not break UI
189 - #406 trim long branch/tag names in changelog to not break UI
189
190
190 1.3.3 (**2012-03-02**)
191 1.3.3 (**2012-03-02**)
191 ----------------------
192 ----------------------
192
193
193 news
194 news
194 ++++
195 ++++
195
196
196
197
197 fixes
198 fixes
198 +++++
199 +++++
199
200
200 - fixed some python2.5 compatibility issues
201 - fixed some python2.5 compatibility issues
201 - fixed issues with removed repos was accidentally added as groups, after
202 - fixed issues with removed repos was accidentally added as groups, after
202 full rescan of paths
203 full rescan of paths
203 - fixes #376 Cannot edit user (using container auth)
204 - fixes #376 Cannot edit user (using container auth)
204 - fixes #378 Invalid image urls on changeset screen with proxy-prefix
205 - fixes #378 Invalid image urls on changeset screen with proxy-prefix
205 configuration
206 configuration
206 - fixed initial sorting of repos inside repo group
207 - fixed initial sorting of repos inside repo group
207 - fixes issue when user tried to resubmit same permission into user/user_groups
208 - fixes issue when user tried to resubmit same permission into user/user_groups
208 - bumped beaker version that fixes #375 leap error bug
209 - bumped beaker version that fixes #375 leap error bug
209 - fixed raw_changeset for git. It was generated with hg patch headers
210 - fixed raw_changeset for git. It was generated with hg patch headers
210 - fixed vcs issue with last_changeset for filenodes
211 - fixed vcs issue with last_changeset for filenodes
211 - fixed missing commit after hook delete
212 - fixed missing commit after hook delete
212 - fixed #372 issues with git operation detection that caused a security issue
213 - fixed #372 issues with git operation detection that caused a security issue
213 for git repos
214 for git repos
214
215
215 1.3.2 (**2012-02-28**)
216 1.3.2 (**2012-02-28**)
216 ----------------------
217 ----------------------
217
218
218 news
219 news
219 ++++
220 ++++
220
221
221
222
222 fixes
223 fixes
223 +++++
224 +++++
224
225
225 - fixed git protocol issues with repos-groups
226 - fixed git protocol issues with repos-groups
226 - fixed git remote repos validator that prevented from cloning remote git repos
227 - fixed git remote repos validator that prevented from cloning remote git repos
227 - fixes #370 ending slashes fixes for repo and groups
228 - fixes #370 ending slashes fixes for repo and groups
228 - fixes #368 improved git-protocol detection to handle other clients
229 - fixes #368 improved git-protocol detection to handle other clients
229 - fixes #366 When Setting Repository Group To Blank Repo Group Wont Be
230 - fixes #366 When Setting Repository Group To Blank Repo Group Wont Be
230 Moved To Root
231 Moved To Root
231 - fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
232 - fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
232 - fixed #373 missing cascade drop on user_group_to_perm table
233 - fixed #373 missing cascade drop on user_group_to_perm table
233
234
234 1.3.1 (**2012-02-27**)
235 1.3.1 (**2012-02-27**)
235 ----------------------
236 ----------------------
236
237
237 news
238 news
238 ++++
239 ++++
239
240
240
241
241 fixes
242 fixes
242 +++++
243 +++++
243
244
244 - redirection loop occurs when remember-me wasn't checked during login
245 - redirection loop occurs when remember-me wasn't checked during login
245 - fixes issues with git blob history generation
246 - fixes issues with git blob history generation
246 - don't fetch branch for git in file history dropdown. Causes unneeded slowness
247 - don't fetch branch for git in file history dropdown. Causes unneeded slowness
247
248
248 1.3.0 (**2012-02-26**)
249 1.3.0 (**2012-02-26**)
249 ----------------------
250 ----------------------
250
251
251 news
252 news
252 ++++
253 ++++
253
254
254 - code review, inspired by github code-comments
255 - code review, inspired by github code-comments
255 - #215 rst and markdown README files support
256 - #215 rst and markdown README files support
256 - #252 Container-based and proxy pass-through authentication support
257 - #252 Container-based and proxy pass-through authentication support
257 - #44 branch browser. Filtering of changelog by branches
258 - #44 branch browser. Filtering of changelog by branches
258 - mercurial bookmarks support
259 - mercurial bookmarks support
259 - new hover top menu, optimized to add maximum size for important views
260 - new hover top menu, optimized to add maximum size for important views
260 - configurable clone url template with possibility to specify protocol like
261 - configurable clone url template with possibility to specify protocol like
261 ssh:// or http:// and also manually alter other parts of clone_url.
262 ssh:// or http:// and also manually alter other parts of clone_url.
262 - enabled largefiles extension by default
263 - enabled largefiles extension by default
263 - optimized summary file pages and saved a lot of unused space in them
264 - optimized summary file pages and saved a lot of unused space in them
264 - #239 option to manually mark repository as fork
265 - #239 option to manually mark repository as fork
265 - #320 mapping of commit authors to RhodeCode users
266 - #320 mapping of commit authors to RhodeCode users
266 - #304 hashes are displayed using monospace font
267 - #304 hashes are displayed using monospace font
267 - diff configuration, toggle white lines and context lines
268 - diff configuration, toggle white lines and context lines
268 - #307 configurable diffs, whitespace toggle, increasing context lines
269 - #307 configurable diffs, whitespace toggle, increasing context lines
269 - sorting on branches, tags and bookmarks using YUI datatable
270 - sorting on branches, tags and bookmarks using YUI datatable
270 - improved file filter on files page
271 - improved file filter on files page
271 - implements #330 api method for listing nodes ar particular revision
272 - implements #330 api method for listing nodes ar particular revision
272 - #73 added linking issues in commit messages to chosen issue tracker url
273 - #73 added linking issues in commit messages to chosen issue tracker url
273 based on user defined regular expression
274 based on user defined regular expression
274 - added linking of changesets in commit messages
275 - added linking of changesets in commit messages
275 - new compact changelog with expandable commit messages
276 - new compact changelog with expandable commit messages
276 - firstname and lastname are optional in user creation
277 - firstname and lastname are optional in user creation
277 - #348 added post-create repository hook
278 - #348 added post-create repository hook
278 - #212 global encoding settings is now configurable from .ini files
279 - #212 global encoding settings is now configurable from .ini files
279 - #227 added repository groups permissions
280 - #227 added repository groups permissions
280 - markdown gets codehilite extensions
281 - markdown gets codehilite extensions
281 - new API methods, delete_repositories, grante/revoke permissions for groups
282 - new API methods, delete_repositories, grante/revoke permissions for groups
282 and repos
283 and repos
283
284
284
285
285 fixes
286 fixes
286 +++++
287 +++++
287
288
288 - rewrote dbsession management for atomic operations, and better error handling
289 - rewrote dbsession management for atomic operations, and better error handling
289 - fixed sorting of repo tables
290 - fixed sorting of repo tables
290 - #326 escape of special html entities in diffs
291 - #326 escape of special html entities in diffs
291 - normalized user_name => username in api attributes
292 - normalized user_name => username in api attributes
292 - fixes #298 ldap created users with mixed case emails created conflicts
293 - fixes #298 ldap created users with mixed case emails created conflicts
293 on saving a form
294 on saving a form
294 - fixes issue when owner of a repo couldn't revoke permissions for users
295 - fixes issue when owner of a repo couldn't revoke permissions for users
295 and groups
296 and groups
296 - fixes #271 rare JSON serialization problem with statistics
297 - fixes #271 rare JSON serialization problem with statistics
297 - fixes #337 missing validation check for conflicting names of a group with a
298 - fixes #337 missing validation check for conflicting names of a group with a
298 repositories group
299 repositories group
299 - #340 fixed session problem for mysql and celery tasks
300 - #340 fixed session problem for mysql and celery tasks
300 - fixed #331 RhodeCode mangles repository names if the a repository group
301 - fixed #331 RhodeCode mangles repository names if the a repository group
301 contains the "full path" to the repositories
302 contains the "full path" to the repositories
302 - #355 RhodeCode doesn't store encrypted LDAP passwords
303 - #355 RhodeCode doesn't store encrypted LDAP passwords
303
304
304 1.2.5 (**2012-01-28**)
305 1.2.5 (**2012-01-28**)
305 ----------------------
306 ----------------------
306
307
307 news
308 news
308 ++++
309 ++++
309
310
310 fixes
311 fixes
311 +++++
312 +++++
312
313
313 - #340 Celery complains about MySQL server gone away, added session cleanup
314 - #340 Celery complains about MySQL server gone away, added session cleanup
314 for celery tasks
315 for celery tasks
315 - #341 "scanning for repositories in None" log message during Rescan was missing
316 - #341 "scanning for repositories in None" log message during Rescan was missing
316 a parameter
317 a parameter
317 - fixed creating archives with subrepos. Some hooks were triggered during that
318 - fixed creating archives with subrepos. Some hooks were triggered during that
318 operation leading to crash.
319 operation leading to crash.
319 - fixed missing email in account page.
320 - fixed missing email in account page.
320 - Reverted Mercurial to 2.0.1 for windows due to bug in Mercurial that makes
321 - Reverted Mercurial to 2.0.1 for windows due to bug in Mercurial that makes
321 forking on windows impossible
322 forking on windows impossible
322
323
323 1.2.4 (**2012-01-19**)
324 1.2.4 (**2012-01-19**)
324 ----------------------
325 ----------------------
325
326
326 news
327 news
327 ++++
328 ++++
328
329
329 - RhodeCode is bundled with mercurial series 2.0.X by default, with
330 - RhodeCode is bundled with mercurial series 2.0.X by default, with
330 full support to largefiles extension. Enabled by default in new installations
331 full support to largefiles extension. Enabled by default in new installations
331 - #329 Ability to Add/Remove Groups to/from a Repository via AP
332 - #329 Ability to Add/Remove Groups to/from a Repository via AP
332 - added requires.txt file with requirements
333 - added requires.txt file with requirements
333
334
334 fixes
335 fixes
335 +++++
336 +++++
336
337
337 - fixes db session issues with celery when emailing admins
338 - fixes db session issues with celery when emailing admins
338 - #331 RhodeCode mangles repository names if the a repository group
339 - #331 RhodeCode mangles repository names if the a repository group
339 contains the "full path" to the repositories
340 contains the "full path" to the repositories
340 - #298 Conflicting e-mail addresses for LDAP and RhodeCode users
341 - #298 Conflicting e-mail addresses for LDAP and RhodeCode users
341 - DB session cleanup after hg protocol operations, fixes issues with
342 - DB session cleanup after hg protocol operations, fixes issues with
342 `mysql has gone away` errors
343 `mysql has gone away` errors
343 - #333 doc fixes for get_repo api function
344 - #333 doc fixes for get_repo api function
344 - #271 rare JSON serialization problem with statistics enabled
345 - #271 rare JSON serialization problem with statistics enabled
345 - #337 Fixes issues with validation of repository name conflicting with
346 - #337 Fixes issues with validation of repository name conflicting with
346 a group name. A proper message is now displayed.
347 a group name. A proper message is now displayed.
347 - #292 made ldap_dn in user edit readonly, to get rid of confusion that field
348 - #292 made ldap_dn in user edit readonly, to get rid of confusion that field
348 doesn't work
349 doesn't work
349 - #316 fixes issues with web description in hgrc files
350 - #316 fixes issues with web description in hgrc files
350
351
351 1.2.3 (**2011-11-02**)
352 1.2.3 (**2011-11-02**)
352 ----------------------
353 ----------------------
353
354
354 news
355 news
355 ++++
356 ++++
356
357
357 - added option to manage repos group for non admin users
358 - added option to manage repos group for non admin users
358 - added following API methods for get_users, create_user, get_users_groups,
359 - added following API methods for get_users, create_user, get_users_groups,
359 get_users_group, create_users_group, add_user_to_users_groups, get_repos,
360 get_users_group, create_users_group, add_user_to_users_groups, get_repos,
360 get_repo, create_repo, add_user_to_repo
361 get_repo, create_repo, add_user_to_repo
361 - implements #237 added password confirmation for my account
362 - implements #237 added password confirmation for my account
362 and admin edit user.
363 and admin edit user.
363 - implements #291 email notification for global events are now sent to all
364 - implements #291 email notification for global events are now sent to all
364 administrator users, and global config email.
365 administrator users, and global config email.
365
366
366 fixes
367 fixes
367 +++++
368 +++++
368
369
369 - added option for passing auth method for smtp mailer
370 - added option for passing auth method for smtp mailer
370 - #276 issue with adding a single user with id>10 to usergroups
371 - #276 issue with adding a single user with id>10 to usergroups
371 - #277 fixes windows LDAP settings in which missing values breaks the ldap auth
372 - #277 fixes windows LDAP settings in which missing values breaks the ldap auth
372 - #288 fixes managing of repos in a group for non admin user
373 - #288 fixes managing of repos in a group for non admin user
373
374
374 1.2.2 (**2011-10-17**)
375 1.2.2 (**2011-10-17**)
375 ----------------------
376 ----------------------
376
377
377 news
378 news
378 ++++
379 ++++
379
380
380 - #226 repo groups are available by path instead of numerical id
381 - #226 repo groups are available by path instead of numerical id
381
382
382 fixes
383 fixes
383 +++++
384 +++++
384
385
385 - #259 Groups with the same name but with different parent group
386 - #259 Groups with the same name but with different parent group
386 - #260 Put repo in group, then move group to another group -> repo becomes unavailable
387 - #260 Put repo in group, then move group to another group -> repo becomes unavailable
387 - #258 RhodeCode 1.2 assumes egg folder is writable (lockfiles problems)
388 - #258 RhodeCode 1.2 assumes egg folder is writable (lockfiles problems)
388 - #265 ldap save fails sometimes on converting attributes to booleans,
389 - #265 ldap save fails sometimes on converting attributes to booleans,
389 added getter and setter into model that will prevent from this on db model level
390 added getter and setter into model that will prevent from this on db model level
390 - fixed problems with timestamps issues #251 and #213
391 - fixed problems with timestamps issues #251 and #213
391 - fixes #266 RhodeCode allows to create repo with the same name and in
392 - fixes #266 RhodeCode allows to create repo with the same name and in
392 the same parent as group
393 the same parent as group
393 - fixes #245 Rescan of the repositories on Windows
394 - fixes #245 Rescan of the repositories on Windows
394 - fixes #248 cannot edit repos inside a group on windows
395 - fixes #248 cannot edit repos inside a group on windows
395 - fixes #219 forking problems on windows
396 - fixes #219 forking problems on windows
396
397
397 1.2.1 (**2011-10-08**)
398 1.2.1 (**2011-10-08**)
398 ----------------------
399 ----------------------
399
400
400 news
401 news
401 ++++
402 ++++
402
403
403
404
404 fixes
405 fixes
405 +++++
406 +++++
406
407
407 - fixed problems with basic auth and push problems
408 - fixed problems with basic auth and push problems
408 - gui fixes
409 - gui fixes
409 - fixed logger
410 - fixed logger
410
411
411 1.2.0 (**2011-10-07**)
412 1.2.0 (**2011-10-07**)
412 ----------------------
413 ----------------------
413
414
414 news
415 news
415 ++++
416 ++++
416
417
417 - implemented #47 repository groups
418 - implemented #47 repository groups
418 - implemented #89 Can setup google analytics code from settings menu
419 - implemented #89 Can setup google analytics code from settings menu
419 - implemented #91 added nicer looking archive urls with more download options
420 - implemented #91 added nicer looking archive urls with more download options
420 like tags, branches
421 like tags, branches
421 - implemented #44 into file browsing, and added follow branch option
422 - implemented #44 into file browsing, and added follow branch option
422 - implemented #84 downloads can be enabled/disabled for each repository
423 - implemented #84 downloads can be enabled/disabled for each repository
423 - anonymous repository can be cloned without having to pass default:default
424 - anonymous repository can be cloned without having to pass default:default
424 into clone url
425 into clone url
425 - fixed #90 whoosh indexer can index chooses repositories passed in command
426 - fixed #90 whoosh indexer can index chooses repositories passed in command
426 line
427 line
427 - extended journal with day aggregates and paging
428 - extended journal with day aggregates and paging
428 - implemented #107 source code lines highlight ranges
429 - implemented #107 source code lines highlight ranges
429 - implemented #93 customizable changelog on combined revision ranges -
430 - implemented #93 customizable changelog on combined revision ranges -
430 equivalent of githubs compare view
431 equivalent of githubs compare view
431 - implemented #108 extended and more powerful LDAP configuration
432 - implemented #108 extended and more powerful LDAP configuration
432 - implemented #56 users groups
433 - implemented #56 users groups
433 - major code rewrites optimized codes for speed and memory usage
434 - major code rewrites optimized codes for speed and memory usage
434 - raw and diff downloads are now in git format
435 - raw and diff downloads are now in git format
435 - setup command checks for write access to given path
436 - setup command checks for write access to given path
436 - fixed many issues with international characters and unicode. It uses utf8
437 - fixed many issues with international characters and unicode. It uses utf8
437 decode with replace to provide less errors even with non utf8 encoded strings
438 decode with replace to provide less errors even with non utf8 encoded strings
438 - #125 added API KEY access to feeds
439 - #125 added API KEY access to feeds
439 - #109 Repository can be created from external Mercurial link (aka. remote
440 - #109 Repository can be created from external Mercurial link (aka. remote
440 repository, and manually updated (via pull) from admin panel
441 repository, and manually updated (via pull) from admin panel
441 - beta git support - push/pull server + basic view for git repos
442 - beta git support - push/pull server + basic view for git repos
442 - added followers page and forks page
443 - added followers page and forks page
443 - server side file creation (with binary file upload interface)
444 - server side file creation (with binary file upload interface)
444 and edition with commits powered by codemirror
445 and edition with commits powered by codemirror
445 - #111 file browser file finder, quick lookup files on whole file tree
446 - #111 file browser file finder, quick lookup files on whole file tree
446 - added quick login sliding menu into main page
447 - added quick login sliding menu into main page
447 - changelog uses lazy loading of affected files details, in some scenarios
448 - changelog uses lazy loading of affected files details, in some scenarios
448 this can improve speed of changelog page dramatically especially for
449 this can improve speed of changelog page dramatically especially for
449 larger repositories.
450 larger repositories.
450 - implements #214 added support for downloading subrepos in download menu.
451 - implements #214 added support for downloading subrepos in download menu.
451 - Added basic API for direct operations on rhodecode via JSON
452 - Added basic API for direct operations on rhodecode via JSON
452 - Implemented advanced hook management
453 - Implemented advanced hook management
453
454
454 fixes
455 fixes
455 +++++
456 +++++
456
457
457 - fixed file browser bug, when switching into given form revision the url was
458 - fixed file browser bug, when switching into given form revision the url was
458 not changing
459 not changing
459 - fixed propagation to error controller on simplehg and simplegit middlewares
460 - fixed propagation to error controller on simplehg and simplegit middlewares
460 - fixed error when trying to make a download on empty repository
461 - fixed error when trying to make a download on empty repository
461 - fixed problem with '[' chars in commit messages in journal
462 - fixed problem with '[' chars in commit messages in journal
462 - fixed #99 Unicode errors, on file node paths with non utf-8 characters
463 - fixed #99 Unicode errors, on file node paths with non utf-8 characters
463 - journal fork fixes
464 - journal fork fixes
464 - removed issue with space inside renamed repository after deletion
465 - removed issue with space inside renamed repository after deletion
465 - fixed strange issue on formencode imports
466 - fixed strange issue on formencode imports
466 - fixed #126 Deleting repository on Windows, rename used incompatible chars.
467 - fixed #126 Deleting repository on Windows, rename used incompatible chars.
467 - #150 fixes for errors on repositories mapped in db but corrupted in
468 - #150 fixes for errors on repositories mapped in db but corrupted in
468 filesystem
469 filesystem
469 - fixed problem with ascendant characters in realm #181
470 - fixed problem with ascendant characters in realm #181
470 - fixed problem with sqlite file based database connection pool
471 - fixed problem with sqlite file based database connection pool
471 - whoosh indexer and code stats share the same dynamic extensions map
472 - whoosh indexer and code stats share the same dynamic extensions map
472 - fixes #188 - relationship delete of repo_to_perm entry on user removal
473 - fixes #188 - relationship delete of repo_to_perm entry on user removal
473 - fixes issue #189 Trending source files shows "show more" when no more exist
474 - fixes issue #189 Trending source files shows "show more" when no more exist
474 - fixes issue #197 Relative paths for pidlocks
475 - fixes issue #197 Relative paths for pidlocks
475 - fixes issue #198 password will require only 3 chars now for login form
476 - fixes issue #198 password will require only 3 chars now for login form
476 - fixes issue #199 wrong redirection for non admin users after creating a repository
477 - fixes issue #199 wrong redirection for non admin users after creating a repository
477 - fixes issues #202, bad db constraint made impossible to attach same group
478 - fixes issues #202, bad db constraint made impossible to attach same group
478 more than one time. Affects only mysql/postgres
479 more than one time. Affects only mysql/postgres
479 - fixes #218 os.kill patch for windows was missing sig param
480 - fixes #218 os.kill patch for windows was missing sig param
480 - improved rendering of dag (they are not trimmed anymore when number of
481 - improved rendering of dag (they are not trimmed anymore when number of
481 heads exceeds 5)
482 heads exceeds 5)
482
483
483 1.1.8 (**2011-04-12**)
484 1.1.8 (**2011-04-12**)
484 ----------------------
485 ----------------------
485
486
486 news
487 news
487 ++++
488 ++++
488
489
489 - improved windows support
490 - improved windows support
490
491
491 fixes
492 fixes
492 +++++
493 +++++
493
494
494 - fixed #140 freeze of python dateutil library, since new version is python2.x
495 - fixed #140 freeze of python dateutil library, since new version is python2.x
495 incompatible
496 incompatible
496 - setup-app will check for write permission in given path
497 - setup-app will check for write permission in given path
497 - cleaned up license info issue #149
498 - cleaned up license info issue #149
498 - fixes for issues #137,#116 and problems with unicode and accented characters.
499 - fixes for issues #137,#116 and problems with unicode and accented characters.
499 - fixes crashes on gravatar, when passed in email as unicode
500 - fixes crashes on gravatar, when passed in email as unicode
500 - fixed tooltip flickering problems
501 - fixed tooltip flickering problems
501 - fixed came_from redirection on windows
502 - fixed came_from redirection on windows
502 - fixed logging modules, and sql formatters
503 - fixed logging modules, and sql formatters
503 - windows fixes for os.kill issue #133
504 - windows fixes for os.kill issue #133
504 - fixes path splitting for windows issues #148
505 - fixes path splitting for windows issues #148
505 - fixed issue #143 wrong import on migration to 1.1.X
506 - fixed issue #143 wrong import on migration to 1.1.X
506 - fixed problems with displaying binary files, thanks to Thomas Waldmann
507 - fixed problems with displaying binary files, thanks to Thomas Waldmann
507 - removed name from archive files since it's breaking ui for long repo names
508 - removed name from archive files since it's breaking ui for long repo names
508 - fixed issue with archive headers sent to browser, thanks to Thomas Waldmann
509 - fixed issue with archive headers sent to browser, thanks to Thomas Waldmann
509 - fixed compatibility for 1024px displays, and larger dpi settings, thanks to
510 - fixed compatibility for 1024px displays, and larger dpi settings, thanks to
510 Thomas Waldmann
511 Thomas Waldmann
511 - fixed issue #166 summary pager was skipping 10 revisions on second page
512 - fixed issue #166 summary pager was skipping 10 revisions on second page
512
513
513
514
514 1.1.7 (**2011-03-23**)
515 1.1.7 (**2011-03-23**)
515 ----------------------
516 ----------------------
516
517
517 news
518 news
518 ++++
519 ++++
519
520
520 fixes
521 fixes
521 +++++
522 +++++
522
523
523 - fixed (again) #136 installation support for FreeBSD
524 - fixed (again) #136 installation support for FreeBSD
524
525
525
526
526 1.1.6 (**2011-03-21**)
527 1.1.6 (**2011-03-21**)
527 ----------------------
528 ----------------------
528
529
529 news
530 news
530 ++++
531 ++++
531
532
532 fixes
533 fixes
533 +++++
534 +++++
534
535
535 - fixed #136 installation support for FreeBSD
536 - fixed #136 installation support for FreeBSD
536 - RhodeCode will check for python version during installation
537 - RhodeCode will check for python version during installation
537
538
538 1.1.5 (**2011-03-17**)
539 1.1.5 (**2011-03-17**)
539 ----------------------
540 ----------------------
540
541
541 news
542 news
542 ++++
543 ++++
543
544
544 - basic windows support, by exchanging pybcrypt into sha256 for windows only
545 - basic windows support, by exchanging pybcrypt into sha256 for windows only
545 highly inspired by idea of mantis406
546 highly inspired by idea of mantis406
546
547
547 fixes
548 fixes
548 +++++
549 +++++
549
550
550 - fixed sorting by author in main page
551 - fixed sorting by author in main page
551 - fixed crashes with diffs on binary files
552 - fixed crashes with diffs on binary files
552 - fixed #131 problem with boolean values for LDAP
553 - fixed #131 problem with boolean values for LDAP
553 - fixed #122 mysql problems thanks to striker69
554 - fixed #122 mysql problems thanks to striker69
554 - fixed problem with errors on calling raw/raw_files/annotate functions
555 - fixed problem with errors on calling raw/raw_files/annotate functions
555 with unknown revisions
556 with unknown revisions
556 - fixed returned rawfiles attachment names with international character
557 - fixed returned rawfiles attachment names with international character
557 - cleaned out docs, big thanks to Jason Harris
558 - cleaned out docs, big thanks to Jason Harris
558
559
559 1.1.4 (**2011-02-19**)
560 1.1.4 (**2011-02-19**)
560 ----------------------
561 ----------------------
561
562
562 news
563 news
563 ++++
564 ++++
564
565
565 fixes
566 fixes
566 +++++
567 +++++
567
568
568 - fixed formencode import problem on settings page, that caused server crash
569 - fixed formencode import problem on settings page, that caused server crash
569 when that page was accessed as first after server start
570 when that page was accessed as first after server start
570 - journal fixes
571 - journal fixes
571 - fixed option to access repository just by entering http://server/<repo_name>
572 - fixed option to access repository just by entering http://server/<repo_name>
572
573
573 1.1.3 (**2011-02-16**)
574 1.1.3 (**2011-02-16**)
574 ----------------------
575 ----------------------
575
576
576 news
577 news
577 ++++
578 ++++
578
579
579 - implemented #102 allowing the '.' character in username
580 - implemented #102 allowing the '.' character in username
580 - added option to access repository just by entering http://server/<repo_name>
581 - added option to access repository just by entering http://server/<repo_name>
581 - celery task ignores result for better performance
582 - celery task ignores result for better performance
582
583
583 fixes
584 fixes
584 +++++
585 +++++
585
586
586 - fixed ehlo command and non auth mail servers on smtp_lib. Thanks to
587 - fixed ehlo command and non auth mail servers on smtp_lib. Thanks to
587 apollo13 and Johan Walles
588 apollo13 and Johan Walles
588 - small fixes in journal
589 - small fixes in journal
589 - fixed problems with getting setting for celery from .ini files
590 - fixed problems with getting setting for celery from .ini files
590 - registration, password reset and login boxes share the same title as main
591 - registration, password reset and login boxes share the same title as main
591 application now
592 application now
592 - fixed #113: to high permissions to fork repository
593 - fixed #113: to high permissions to fork repository
593 - fixed problem with '[' chars in commit messages in journal
594 - fixed problem with '[' chars in commit messages in journal
594 - removed issue with space inside renamed repository after deletion
595 - removed issue with space inside renamed repository after deletion
595 - db transaction fixes when filesystem repository creation failed
596 - db transaction fixes when filesystem repository creation failed
596 - fixed #106 relation issues on databases different than sqlite
597 - fixed #106 relation issues on databases different than sqlite
597 - fixed static files paths links to use of url() method
598 - fixed static files paths links to use of url() method
598
599
599 1.1.2 (**2011-01-12**)
600 1.1.2 (**2011-01-12**)
600 ----------------------
601 ----------------------
601
602
602 news
603 news
603 ++++
604 ++++
604
605
605
606
606 fixes
607 fixes
607 +++++
608 +++++
608
609
609 - fixes #98 protection against float division of percentage stats
610 - fixes #98 protection against float division of percentage stats
610 - fixed graph bug
611 - fixed graph bug
611 - forced webhelpers version since it was making troubles during installation
612 - forced webhelpers version since it was making troubles during installation
612
613
613 1.1.1 (**2011-01-06**)
614 1.1.1 (**2011-01-06**)
614 ----------------------
615 ----------------------
615
616
616 news
617 news
617 ++++
618 ++++
618
619
619 - added force https option into ini files for easier https usage (no need to
620 - added force https option into ini files for easier https usage (no need to
620 set server headers with this options)
621 set server headers with this options)
621 - small css updates
622 - small css updates
622
623
623 fixes
624 fixes
624 +++++
625 +++++
625
626
626 - fixed #96 redirect loop on files view on repositories without changesets
627 - fixed #96 redirect loop on files view on repositories without changesets
627 - fixed #97 unicode string passed into server header in special cases (mod_wsgi)
628 - fixed #97 unicode string passed into server header in special cases (mod_wsgi)
628 and server crashed with errors
629 and server crashed with errors
629 - fixed large tooltips problems on main page
630 - fixed large tooltips problems on main page
630 - fixed #92 whoosh indexer is more error proof
631 - fixed #92 whoosh indexer is more error proof
631
632
632 1.1.0 (**2010-12-18**)
633 1.1.0 (**2010-12-18**)
633 ----------------------
634 ----------------------
634
635
635 news
636 news
636 ++++
637 ++++
637
638
638 - rewrite of internals for vcs >=0.1.10
639 - rewrite of internals for vcs >=0.1.10
639 - uses mercurial 1.7 with dotencode disabled for maintaining compatibility
640 - uses mercurial 1.7 with dotencode disabled for maintaining compatibility
640 with older clients
641 with older clients
641 - anonymous access, authentication via ldap
642 - anonymous access, authentication via ldap
642 - performance upgrade for cached repos list - each repository has its own
643 - performance upgrade for cached repos list - each repository has its own
643 cache that's invalidated when needed.
644 cache that's invalidated when needed.
644 - performance upgrades on repositories with large amount of commits (20K+)
645 - performance upgrades on repositories with large amount of commits (20K+)
645 - main page quick filter for filtering repositories
646 - main page quick filter for filtering repositories
646 - user dashboards with ability to follow chosen repositories actions
647 - user dashboards with ability to follow chosen repositories actions
647 - sends email to admin on new user registration
648 - sends email to admin on new user registration
648 - added cache/statistics reset options into repository settings
649 - added cache/statistics reset options into repository settings
649 - more detailed action logger (based on hooks) with pushed changesets lists
650 - more detailed action logger (based on hooks) with pushed changesets lists
650 and options to disable those hooks from admin panel
651 and options to disable those hooks from admin panel
651 - introduced new enhanced changelog for merges that shows more accurate results
652 - introduced new enhanced changelog for merges that shows more accurate results
652 - new improved and faster code stats (based on pygments lexers mapping tables,
653 - new improved and faster code stats (based on pygments lexers mapping tables,
653 showing up to 10 trending sources for each repository. Additionally stats
654 showing up to 10 trending sources for each repository. Additionally stats
654 can be disabled in repository settings.
655 can be disabled in repository settings.
655 - gui optimizations, fixed application width to 1024px
656 - gui optimizations, fixed application width to 1024px
656 - added cut off (for large files/changesets) limit into config files
657 - added cut off (for large files/changesets) limit into config files
657 - whoosh, celeryd, upgrade moved to paster command
658 - whoosh, celeryd, upgrade moved to paster command
658 - other than sqlite database backends can be used
659 - other than sqlite database backends can be used
659
660
660 fixes
661 fixes
661 +++++
662 +++++
662
663
663 - fixes #61 forked repo was showing only after cache expired
664 - fixes #61 forked repo was showing only after cache expired
664 - fixes #76 no confirmation on user deletes
665 - fixes #76 no confirmation on user deletes
665 - fixes #66 Name field misspelled
666 - fixes #66 Name field misspelled
666 - fixes #72 block user removal when he owns repositories
667 - fixes #72 block user removal when he owns repositories
667 - fixes #69 added password confirmation fields
668 - fixes #69 added password confirmation fields
668 - fixes #87 RhodeCode crashes occasionally on updating repository owner
669 - fixes #87 RhodeCode crashes occasionally on updating repository owner
669 - fixes #82 broken annotations on files with more than 1 blank line at the end
670 - fixes #82 broken annotations on files with more than 1 blank line at the end
670 - a lot of fixes and tweaks for file browser
671 - a lot of fixes and tweaks for file browser
671 - fixed detached session issues
672 - fixed detached session issues
672 - fixed when user had no repos he would see all repos listed in my account
673 - fixed when user had no repos he would see all repos listed in my account
673 - fixed ui() instance bug when global hgrc settings was loaded for server
674 - fixed ui() instance bug when global hgrc settings was loaded for server
674 instance and all hgrc options were merged with our db ui() object
675 instance and all hgrc options were merged with our db ui() object
675 - numerous small bugfixes
676 - numerous small bugfixes
676
677
677 (special thanks for TkSoh for detailed feedback)
678 (special thanks for TkSoh for detailed feedback)
678
679
679
680
680 1.0.2 (**2010-11-12**)
681 1.0.2 (**2010-11-12**)
681 ----------------------
682 ----------------------
682
683
683 news
684 news
684 ++++
685 ++++
685
686
686 - tested under python2.7
687 - tested under python2.7
687 - bumped sqlalchemy and celery versions
688 - bumped sqlalchemy and celery versions
688
689
689 fixes
690 fixes
690 +++++
691 +++++
691
692
692 - fixed #59 missing graph.js
693 - fixed #59 missing graph.js
693 - fixed repo_size crash when repository had broken symlinks
694 - fixed repo_size crash when repository had broken symlinks
694 - fixed python2.5 crashes.
695 - fixed python2.5 crashes.
695
696
696
697
697 1.0.1 (**2010-11-10**)
698 1.0.1 (**2010-11-10**)
698 ----------------------
699 ----------------------
699
700
700 news
701 news
701 ++++
702 ++++
702
703
703 - small css updated
704 - small css updated
704
705
705 fixes
706 fixes
706 +++++
707 +++++
707
708
708 - fixed #53 python2.5 incompatible enumerate calls
709 - fixed #53 python2.5 incompatible enumerate calls
709 - fixed #52 disable mercurial extension for web
710 - fixed #52 disable mercurial extension for web
710 - fixed #51 deleting repositories don't delete it's dependent objects
711 - fixed #51 deleting repositories don't delete it's dependent objects
711
712
712
713
713 1.0.0 (**2010-11-02**)
714 1.0.0 (**2010-11-02**)
714 ----------------------
715 ----------------------
715
716
716 - security bugfix simplehg wasn't checking for permissions on commands
717 - security bugfix simplehg wasn't checking for permissions on commands
717 other than pull or push.
718 other than pull or push.
718 - fixed doubled messages after push or pull in admin journal
719 - fixed doubled messages after push or pull in admin journal
719 - templating and css corrections, fixed repo switcher on chrome, updated titles
720 - templating and css corrections, fixed repo switcher on chrome, updated titles
720 - admin menu accessible from options menu on repository view
721 - admin menu accessible from options menu on repository view
721 - permissions cached queries
722 - permissions cached queries
722
723
723 1.0.0rc4 (**2010-10-12**)
724 1.0.0rc4 (**2010-10-12**)
724 --------------------------
725 --------------------------
725
726
726 - fixed python2.5 missing simplejson imports (thanks to Jens BΓ€ckman)
727 - fixed python2.5 missing simplejson imports (thanks to Jens BΓ€ckman)
727 - removed cache_manager settings from sqlalchemy meta
728 - removed cache_manager settings from sqlalchemy meta
728 - added sqlalchemy cache settings to ini files
729 - added sqlalchemy cache settings to ini files
729 - validated password length and added second try of failure on paster setup-app
730 - validated password length and added second try of failure on paster setup-app
730 - fixed setup database destroy prompt even when there was no db
731 - fixed setup database destroy prompt even when there was no db
731
732
732
733
733 1.0.0rc3 (**2010-10-11**)
734 1.0.0rc3 (**2010-10-11**)
734 -------------------------
735 -------------------------
735
736
736 - fixed i18n during installation.
737 - fixed i18n during installation.
737
738
738 1.0.0rc2 (**2010-10-11**)
739 1.0.0rc2 (**2010-10-11**)
739 -------------------------
740 -------------------------
740
741
741 - Disabled dirsize in file browser, it's causing nasty bug when dir renames
742 - Disabled dirsize in file browser, it's causing nasty bug when dir renames
742 occure. After vcs is fixed it'll be put back again.
743 occure. After vcs is fixed it'll be put back again.
743 - templating/css rewrites, optimized css. No newline at end of file
744 - templating/css rewrites, optimized css.
@@ -1,260 +1,262 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 rhodecode.model.pull_request
3 rhodecode.model.pull_request
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
5
6 pull request model for RhodeCode
6 pull request model for RhodeCode
7
7
8 :created_on: Jun 6, 2012
8 :created_on: Jun 6, 2012
9 :author: marcink
9 :author: marcink
10 :copyright: (C) 2012-2012 Marcin Kuzminski <marcin@python-works.com>
10 :copyright: (C) 2012-2012 Marcin Kuzminski <marcin@python-works.com>
11 :license: GPLv3, see COPYING for more details.
11 :license: GPLv3, see COPYING for more details.
12 """
12 """
13 # This program is free software: you can redistribute it and/or modify
13 # This program is free software: you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation, either version 3 of the License, or
15 # the Free Software Foundation, either version 3 of the License, or
16 # (at your option) any later version.
16 # (at your option) any later version.
17 #
17 #
18 # This program is distributed in the hope that it will be useful,
18 # This program is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
21 # GNU General Public License for more details.
22 #
22 #
23 # You should have received a copy of the GNU General Public License
23 # You should have received a copy of the GNU General Public License
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
25
25
26 import logging
26 import logging
27 import binascii
27 import binascii
28 import datetime
28 import datetime
29
29
30 from pylons.i18n.translation import _
30 from pylons.i18n.translation import _
31
31
32 from rhodecode.model.meta import Session
32 from rhodecode.model.meta import Session
33 from rhodecode.lib import helpers as h
33 from rhodecode.lib import helpers as h
34 from rhodecode.model import BaseModel
34 from rhodecode.model import BaseModel
35 from rhodecode.model.db import PullRequest, PullRequestReviewers, Notification
35 from rhodecode.model.db import PullRequest, PullRequestReviewers, Notification
36 from rhodecode.model.notification import NotificationModel
36 from rhodecode.model.notification import NotificationModel
37 from rhodecode.lib.utils2 import safe_unicode
37 from rhodecode.lib.utils2 import safe_unicode
38
38
39 from rhodecode.lib.vcs.utils.hgcompat import discovery, localrepo, scmutil, \
39 from rhodecode.lib.vcs.utils.hgcompat import discovery, localrepo, scmutil, \
40 findcommonoutgoing
40 findcommonoutgoing
41
41
42 log = logging.getLogger(__name__)
42 log = logging.getLogger(__name__)
43
43
44
44
45 class PullRequestModel(BaseModel):
45 class PullRequestModel(BaseModel):
46
46
47 cls = PullRequest
47 cls = PullRequest
48
48
49 def __get_pull_request(self, pull_request):
49 def __get_pull_request(self, pull_request):
50 return self._get_instance(PullRequest, pull_request)
50 return self._get_instance(PullRequest, pull_request)
51
51
52 def get_all(self, repo):
52 def get_all(self, repo):
53 repo = self._get_repo(repo)
53 repo = self._get_repo(repo)
54 return PullRequest.query().filter(PullRequest.other_repo == repo).all()
54 return PullRequest.query().filter(PullRequest.other_repo == repo).all()
55
55
56 def create(self, created_by, org_repo, org_ref, other_repo,
56 def create(self, created_by, org_repo, org_ref, other_repo,
57 other_ref, revisions, reviewers, title, description=None):
57 other_ref, revisions, reviewers, title, description=None):
58
58
59 created_by_user = self._get_user(created_by)
59 created_by_user = self._get_user(created_by)
60 org_repo = self._get_repo(org_repo)
60 org_repo = self._get_repo(org_repo)
61 other_repo = self._get_repo(other_repo)
61 other_repo = self._get_repo(other_repo)
62
62
63 new = PullRequest()
63 new = PullRequest()
64 new.org_repo = org_repo
64 new.org_repo = org_repo
65 new.org_ref = org_ref
65 new.org_ref = org_ref
66 new.other_repo = other_repo
66 new.other_repo = other_repo
67 new.other_ref = other_ref
67 new.other_ref = other_ref
68 new.revisions = revisions
68 new.revisions = revisions
69 new.title = title
69 new.title = title
70 new.description = description
70 new.description = description
71 new.author = created_by_user
71 new.author = created_by_user
72 self.sa.add(new)
72 self.sa.add(new)
73 Session().flush()
73 Session().flush()
74 #members
74 #members
75 for member in reviewers:
75 for member in reviewers:
76 _usr = self._get_user(member)
76 _usr = self._get_user(member)
77 reviewer = PullRequestReviewers(_usr, new)
77 reviewer = PullRequestReviewers(_usr, new)
78 self.sa.add(reviewer)
78 self.sa.add(reviewer)
79
79
80 #notification to reviewers
80 #notification to reviewers
81 notif = NotificationModel()
81 notif = NotificationModel()
82
82
83 pr_url = h.url('pullrequest_show', repo_name=other_repo.repo_name,
83 pr_url = h.url('pullrequest_show', repo_name=other_repo.repo_name,
84 pull_request_id=new.pull_request_id,
84 pull_request_id=new.pull_request_id,
85 qualified=True,
85 qualified=True,
86 )
86 )
87 subject = safe_unicode(
87 subject = safe_unicode(
88 h.link_to(
88 h.link_to(
89 _('%(user)s wants you to review pull request #%(pr_id)s') % \
89 _('%(user)s wants you to review pull request #%(pr_id)s') % \
90 {'user': created_by_user.username,
90 {'user': created_by_user.username,
91 'pr_id': new.pull_request_id},
91 'pr_id': new.pull_request_id},
92 pr_url
92 pr_url
93 )
93 )
94 )
94 )
95 body = description
95 body = description
96 kwargs = {
96 kwargs = {
97 'pr_title': title,
97 'pr_title': title,
98 'pr_user_created': h.person(created_by_user.email),
98 'pr_user_created': h.person(created_by_user.email),
99 'pr_repo_url': h.url('summary_home', repo_name=other_repo.repo_name,
99 'pr_repo_url': h.url('summary_home', repo_name=other_repo.repo_name,
100 qualified=True,),
100 qualified=True,),
101 'pr_url': pr_url,
101 'pr_url': pr_url,
102 'pr_revisions': revisions
102 'pr_revisions': revisions
103 }
103 }
104 notif.create(created_by=created_by_user, subject=subject, body=body,
104 notif.create(created_by=created_by_user, subject=subject, body=body,
105 recipients=reviewers,
105 recipients=reviewers,
106 type_=Notification.TYPE_PULL_REQUEST, email_kwargs=kwargs)
106 type_=Notification.TYPE_PULL_REQUEST, email_kwargs=kwargs)
107 return new
107 return new
108
108
109 def update_reviewers(self, pull_request, reviewers_ids):
109 def update_reviewers(self, pull_request, reviewers_ids):
110 reviewers_ids = set(reviewers_ids)
110 reviewers_ids = set(reviewers_ids)
111 pull_request = self.__get_pull_request(pull_request)
111 pull_request = self.__get_pull_request(pull_request)
112 current_reviewers = PullRequestReviewers.query()\
112 current_reviewers = PullRequestReviewers.query()\
113 .filter(PullRequestReviewers.pull_request==
113 .filter(PullRequestReviewers.pull_request==
114 pull_request)\
114 pull_request)\
115 .all()
115 .all()
116 current_reviewers_ids = set([x.user.user_id for x in current_reviewers])
116 current_reviewers_ids = set([x.user.user_id for x in current_reviewers])
117
117
118 to_add = reviewers_ids.difference(current_reviewers_ids)
118 to_add = reviewers_ids.difference(current_reviewers_ids)
119 to_remove = current_reviewers_ids.difference(reviewers_ids)
119 to_remove = current_reviewers_ids.difference(reviewers_ids)
120
120
121 log.debug("Adding %s reviewers" % to_add)
121 log.debug("Adding %s reviewers" % to_add)
122 log.debug("Removing %s reviewers" % to_remove)
122 log.debug("Removing %s reviewers" % to_remove)
123
123
124 for uid in to_add:
124 for uid in to_add:
125 _usr = self._get_user(uid)
125 _usr = self._get_user(uid)
126 reviewer = PullRequestReviewers(_usr, pull_request)
126 reviewer = PullRequestReviewers(_usr, pull_request)
127 self.sa.add(reviewer)
127 self.sa.add(reviewer)
128
128
129 for uid in to_remove:
129 for uid in to_remove:
130 reviewer = PullRequestReviewers.query()\
130 reviewer = PullRequestReviewers.query()\
131 .filter(PullRequestReviewers.user_id==uid,
131 .filter(PullRequestReviewers.user_id==uid,
132 PullRequestReviewers.pull_request==pull_request)\
132 PullRequestReviewers.pull_request==pull_request)\
133 .scalar()
133 .scalar()
134 if reviewer:
134 if reviewer:
135 self.sa.delete(reviewer)
135 self.sa.delete(reviewer)
136
136
137 def delete(self, pull_request):
137 def delete(self, pull_request):
138 pull_request = self.__get_pull_request(pull_request)
138 pull_request = self.__get_pull_request(pull_request)
139 Session().delete(pull_request)
139 Session().delete(pull_request)
140
140
141 def close_pull_request(self, pull_request):
141 def close_pull_request(self, pull_request):
142 pull_request = self.__get_pull_request(pull_request)
142 pull_request = self.__get_pull_request(pull_request)
143 pull_request.status = PullRequest.STATUS_CLOSED
143 pull_request.status = PullRequest.STATUS_CLOSED
144 pull_request.updated_on = datetime.datetime.now()
144 pull_request.updated_on = datetime.datetime.now()
145 self.sa.add(pull_request)
145 self.sa.add(pull_request)
146
146
147 def _get_changesets(self, org_repo, org_ref, other_repo, other_ref,
147 def _get_changesets(self, org_repo, org_ref, other_repo, other_ref,
148 discovery_data):
148 discovery_data):
149 """
149 """
150 Returns a list of changesets that are incoming from org_repo@org_ref
150 Returns a list of changesets that are incoming from org_repo@org_ref
151 to other_repo@other_ref
151 to other_repo@other_ref
152
152
153 :param org_repo:
153 :param org_repo:
154 :type org_repo:
154 :type org_repo:
155 :param org_ref:
155 :param org_ref:
156 :type org_ref:
156 :type org_ref:
157 :param other_repo:
157 :param other_repo:
158 :type other_repo:
158 :type other_repo:
159 :param other_ref:
159 :param other_ref:
160 :type other_ref:
160 :type other_ref:
161 :param tmp:
161 :param tmp:
162 :type tmp:
162 :type tmp:
163 """
163 """
164 changesets = []
164 changesets = []
165 #case two independent repos
165 #case two independent repos
166 common, incoming, rheads = discovery_data
166 common, incoming, rheads = discovery_data
167 if org_repo != other_repo and incoming:
167 if org_repo != other_repo and incoming:
168 obj = findcommonoutgoing(org_repo._repo,
168 obj = findcommonoutgoing(org_repo._repo,
169 localrepo.locallegacypeer(other_repo._repo.local()))
169 localrepo.locallegacypeer(other_repo._repo.local()),
170 force=True)
170 revs = obj.missing
171 revs = obj.missing
171
172
172 for cs in reversed(map(binascii.hexlify, revs)):
173 for cs in reversed(map(binascii.hexlify, revs)):
173 changesets.append(org_repo.get_changeset(cs))
174 changesets.append(org_repo.get_changeset(cs))
174 else:
175 else:
175 _revset_predicates = {
176 _revset_predicates = {
176 'branch': 'branch',
177 'branch': 'branch',
177 'book': 'bookmark',
178 'book': 'bookmark',
178 'tag': 'tag',
179 'tag': 'tag',
179 'rev': 'id',
180 'rev': 'id',
180 }
181 }
181
182
182 revs = [
183 revs = [
183 "ancestors(%s('%s')) and not ancestors(%s('%s'))" % (
184 "ancestors(%s('%s')) and not ancestors(%s('%s'))" % (
184 _revset_predicates[org_ref[0]], org_ref[1],
185 _revset_predicates[org_ref[0]], org_ref[1],
185 _revset_predicates[other_ref[0]], other_ref[1]
186 _revset_predicates[other_ref[0]], other_ref[1]
186 )
187 )
187 ]
188 ]
188
189
189 out = scmutil.revrange(org_repo._repo, revs)
190 out = scmutil.revrange(org_repo._repo, revs)
190 for cs in reversed(out):
191 for cs in reversed(out):
191 changesets.append(org_repo.get_changeset(cs))
192 changesets.append(org_repo.get_changeset(cs))
192
193
193 return changesets
194 return changesets
194
195
195 def _get_discovery(self, org_repo, org_ref, other_repo, other_ref):
196 def _get_discovery(self, org_repo, org_ref, other_repo, other_ref):
196 """
197 """
197 Get's mercurial discovery data used to calculate difference between
198 Get's mercurial discovery data used to calculate difference between
198 repos and refs
199 repos and refs
199
200
200 :param org_repo:
201 :param org_repo:
201 :type org_repo:
202 :type org_repo:
202 :param org_ref:
203 :param org_ref:
203 :type org_ref:
204 :type org_ref:
204 :param other_repo:
205 :param other_repo:
205 :type other_repo:
206 :type other_repo:
206 :param other_ref:
207 :param other_ref:
207 :type other_ref:
208 :type other_ref:
208 """
209 """
209
210
210 _org_repo = org_repo._repo
211 _org_repo = org_repo._repo
211 org_rev_type, org_rev = org_ref
212 org_rev_type, org_rev = org_ref
212
213
213 _other_repo = other_repo._repo
214 _other_repo = other_repo._repo
214 other_rev_type, other_rev = other_ref
215 other_rev_type, other_rev = other_ref
215
216
216 log.debug('Doing discovery for %s@%s vs %s@%s' % (
217 log.debug('Doing discovery for %s@%s vs %s@%s' % (
217 org_repo, org_ref, other_repo, other_ref)
218 org_repo, org_ref, other_repo, other_ref)
218 )
219 )
220
219 #log.debug('Filter heads are %s[%s]' % ('', org_ref[1]))
221 #log.debug('Filter heads are %s[%s]' % ('', org_ref[1]))
220 org_peer = localrepo.locallegacypeer(_org_repo.local())
222 org_peer = localrepo.locallegacypeer(_org_repo.local())
221 tmp = discovery.findcommonincoming(
223 tmp = discovery.findcommonincoming(
222 repo=_other_repo, # other_repo we check for incoming
224 repo=_other_repo, # other_repo we check for incoming
223 remote=org_peer, # org_repo source for incoming
225 remote=org_peer, # org_repo source for incoming
224 heads=[_other_repo[other_rev].node(),
226 heads=[_other_repo[other_rev].node(),
225 _org_repo[org_rev].node()],
227 _org_repo[org_rev].node()],
226 force=False
228 force=True
227 )
229 )
228 return tmp
230 return tmp
229
231
230 def get_compare_data(self, org_repo, org_ref, other_repo, other_ref):
232 def get_compare_data(self, org_repo, org_ref, other_repo, other_ref):
231 """
233 """
232 Returns a tuple of incomming changesets, and discoverydata cache
234 Returns a tuple of incomming changesets, and discoverydata cache
233
235
234 :param org_repo:
236 :param org_repo:
235 :type org_repo:
237 :type org_repo:
236 :param org_ref:
238 :param org_ref:
237 :type org_ref:
239 :type org_ref:
238 :param other_repo:
240 :param other_repo:
239 :type other_repo:
241 :type other_repo:
240 :param other_ref:
242 :param other_ref:
241 :type other_ref:
243 :type other_ref:
242 """
244 """
243
245
244 if len(org_ref) != 2 or not isinstance(org_ref, (list, tuple)):
246 if len(org_ref) != 2 or not isinstance(org_ref, (list, tuple)):
245 raise Exception('org_ref must be a two element list/tuple')
247 raise Exception('org_ref must be a two element list/tuple')
246
248
247 if len(other_ref) != 2 or not isinstance(org_ref, (list, tuple)):
249 if len(other_ref) != 2 or not isinstance(org_ref, (list, tuple)):
248 raise Exception('other_ref must be a two element list/tuple')
250 raise Exception('other_ref must be a two element list/tuple')
249
251
250 discovery_data = self._get_discovery(org_repo.scm_instance,
252 discovery_data = self._get_discovery(org_repo.scm_instance,
251 org_ref,
253 org_ref,
252 other_repo.scm_instance,
254 other_repo.scm_instance,
253 other_ref)
255 other_ref)
254 cs_ranges = self._get_changesets(org_repo.scm_instance,
256 cs_ranges = self._get_changesets(org_repo.scm_instance,
255 org_ref,
257 org_ref,
256 other_repo.scm_instance,
258 other_repo.scm_instance,
257 other_ref,
259 other_ref,
258 discovery_data)
260 discovery_data)
259
261
260 return cs_ranges, discovery_data
262 return cs_ranges, discovery_data
General Comments 0
You need to be logged in to leave comments. Login now