@@ -9,48 +9,49 @@ Changelog
:status: in-progress
:branch: beta
news
++++
fixes
+++++
1.3.6 (**2012-05-16**)
----------------------
- chinese traditional translation
- fixed no scm found warning
- fixed __future__ import error on rcextensions
- made simplejson required lib for speedup on JSON encoding
- fixes #449 bad regex could get more than revisions from parsing history
1.3.5 (**2012-05-10**)
- use ext_json for json module
- unified annotation view with file source view
- notification improvements, better inbox + css
- #419 don't strip passwords for login forms, make rhodecode
more compatible with LDAP servers
- Added HTTP_X_FORWARDED_FOR as another method of extracting
IP for pull/push logs. - moved all to base controller
- #415: Adding comment to changeset causes reload.
Comments are now added via ajax and doesn't reload the page
- #374 LDAP config is discarded when LDAP can't be activated
- limited push/pull operations are now logged for git in the journal
- bumped mercurial to 2.2.X series
- added support for displaying submodules in file-browser
- #421 added bookmarks in changelog view
@@ -219,53 +219,53 @@ class GitChangeset(BaseChangeset):
def get_file_size(self, path):
"""
Returns size of the file at given ``path``.
id = self._get_id_for_path(path)
blob = self.repository._repo[id]
return blob.raw_length()
def get_file_changeset(self, path):
Returns last commit of the file at the given ``path``.
node = self.get_node(path)
return node.history[0]
def get_file_history(self, path):
Returns history of file as reversed list of ``Changeset`` objects for
which file at given ``path`` has been modified.
TODO: This function now uses os underlying 'git' and 'grep' commands
which is generally not good. Should be replaced with algorithm
iterating commits.
cmd = 'log --pretty="format: %%H" --name-status -p %s -- "%s"' % (
cmd = 'log --pretty="format: --%%H--" --name-status -p %s -- "%s"' % (
self.id, path
)
so, se = self.repository.run_git_command(cmd)
ids = re.findall(r'\w{40}', so)
ids = re.findall(r'(?:--)(\w{40})(?:--)', so)
return [self.repository.get_changeset(id) for id in ids]
def get_file_annotate(self, path):
Returns a list of three element tuples with lineno,changeset and line
TODO: This function now uses os underlying 'git' command which is
generally not good. Should be replaced with algorithm iterating
commits.
cmd = 'blame -l --root -r %s -- "%s"' % (self.id, path)
# -l ==> outputs long shas (and we need all 40 characters)
# --root ==> doesn't put '^' character for bounderies
# -r sha ==> blames for the given revision
annotate = []
for i, blame_line in enumerate(so.split('\n')[:-1]):
ln_no = i + 1
id, line = re.split(r' \(.+?\) ', blame_line, 1)
annotate.append((ln_no, self.repository.get_changeset(id), line))
return annotate
def fill_archive(self, stream=None, kind='tgz', prefix=None,
subrepos=False):
Status change: