# HG changeset patch # User Marcin Kuzminski # Date 2012-03-01 16:11:26 # Node ID feb0fccdcf83f72e1018ba98e0ac8b830e7f52db # Parent 60115135b77e0aebd4fa10586224d7bdf792abb7 fixed vcs issue with last_changeset for filenodes - fixed incosistency for displaying revision in file browser - fixed raw_diff for git for single file mode - file block now uses associated changeset for both git&hg diff --git a/rhodecode/controllers/changeset.py b/rhodecode/controllers/changeset.py --- a/rhodecode/controllers/changeset.py +++ b/rhodecode/controllers/changeset.py @@ -317,7 +317,7 @@ class ChangesetController(BaseRepoContro format='gitdiff').raw_diff() cs1 = None - cs2 = node.last_changeset.raw_id + cs2 = node.changeset.raw_id c.changes.append(('added', node, diff, cs1, cs2)) for node in c.changeset.changed: @@ -331,8 +331,8 @@ class ChangesetController(BaseRepoContro diff = diffs.DiffProcessor(f_gitdiff, format='gitdiff').raw_diff() - cs1 = filenode_old.last_changeset.raw_id - cs2 = node.last_changeset.raw_id + cs1 = filenode_old.changeset.raw_id + cs2 = node.changeset.raw_id c.changes.append(('changed', node, diff, cs1, cs2)) response.content_type = 'text/plain' diff --git a/rhodecode/lib/diffs.py b/rhodecode/lib/diffs.py --- a/rhodecode/lib/diffs.py +++ b/rhodecode/lib/diffs.py @@ -83,8 +83,8 @@ def wrapped_diff(filenode_old, filenode_ if not diff: diff = wrap_to_table(_('No changes detected')) - cs1 = filenode_old.last_changeset.raw_id - cs2 = filenode_new.last_changeset.raw_id + cs1 = filenode_old.changeset.raw_id + cs2 = filenode_new.changeset.raw_id return size, cs1, cs2, diff, stats diff --git a/rhodecode/lib/vcs/backends/hg/changeset.py b/rhodecode/lib/vcs/backends/hg/changeset.py --- a/rhodecode/lib/vcs/backends/hg/changeset.py +++ b/rhodecode/lib/vcs/backends/hg/changeset.py @@ -187,9 +187,8 @@ class MercurialChangeset(BaseChangeset): """ Returns last commit of the file at the given ``path``. """ - fctx = self._get_filectx(path) - changeset = self.repository.get_changeset(fctx.linkrev()) - return changeset + node = self.get_node(path) + return node.history[0] def get_file_history(self, path): """ diff --git a/rhodecode/lib/vcs/nodes.py b/rhodecode/lib/vcs/nodes.py --- a/rhodecode/lib/vcs/nodes.py +++ b/rhodecode/lib/vcs/nodes.py @@ -306,14 +306,14 @@ class FileNode(Node): attribute to indicate that type should *NOT* be calculated). """ if hasattr(self, '_mimetype'): - if (isinstance(self._mimetype,(tuple,list,)) and + if (isinstance(self._mimetype, (tuple, list,)) and len(self._mimetype) == 2): return self._mimetype else: raise NodeError('given _mimetype attribute must be an 2 ' 'element list or tuple') - mtype,encoding = mimetypes.guess_type(self.name) + mtype, encoding = mimetypes.guess_type(self.name) if mtype is None: if self.is_binary: @@ -322,7 +322,7 @@ class FileNode(Node): else: mtype = 'text/plain' encoding = None - return mtype,encoding + return mtype, encoding @LazyProperty def mimetype(self): @@ -392,8 +392,8 @@ class FileNode(Node): """ Returns True if file has binary content. """ - bin = '\0' in self.content - return bin + _bin = '\0' in self.content + return _bin @LazyProperty def extension(self): @@ -406,6 +406,10 @@ class FileNode(Node): """ return bool(self.mode & stat.S_IXUSR) + def __repr__(self): + return '<%s %r @ %s>' % (self.__class__.__name__, self.path, + self.changeset.short_id) + class RemovedFileNode(FileNode): """ @@ -537,6 +541,10 @@ class DirNode(Node): return size + def __repr__(self): + return '<%s %r @ %s>' % (self.__class__.__name__, self.path, + self.changeset.short_id) + class RootNode(DirNode): """ diff --git a/rhodecode/lib/vcs/utils/diffs.py b/rhodecode/lib/vcs/utils/diffs.py --- a/rhodecode/lib/vcs/utils/diffs.py +++ b/rhodecode/lib/vcs/utils/diffs.py @@ -15,17 +15,17 @@ from rhodecode.lib.vcs.exceptions import from rhodecode.lib.vcs.nodes import FileNode, NodeError -def get_udiff(filenode_old, filenode_new,show_whitespace=True): +def get_udiff(filenode_old, filenode_new, show_whitespace=True): """ Returns unified diff between given ``filenode_old`` and ``filenode_new``. """ try: - filenode_old_date = filenode_old.last_changeset.date + filenode_old_date = filenode_old.changeset.date except NodeError: filenode_old_date = None try: - filenode_new_date = filenode_new.last_changeset.date + filenode_new_date = filenode_new.changeset.date except NodeError: filenode_new_date = None diff --git a/rhodecode/templates/files/files_annotate.html b/rhodecode/templates/files/files_annotate.html --- a/rhodecode/templates/files/files_annotate.html +++ b/rhodecode/templates/files/files_annotate.html @@ -34,8 +34,8 @@
${h.form(h.url('files_diff_home',repo_name=c.repo_name,f_path=c.f_path),method='get')} - ${h.hidden('diff2',c.file.last_changeset.raw_id)} - ${h.select('diff1',c.file.last_changeset.raw_id,c.file_history)} + ${h.hidden('diff2',c.file.changeset.raw_id)} + ${h.select('diff1',c.file.changeset.raw_id,c.file_history)} ${h.submit('diff','diff to revision',class_="ui-btn")} ${h.submit('show_rev','show at revision',class_="ui-btn")} ${h.end_form()} @@ -46,7 +46,7 @@
-
${h.link_to("r%s:%s" % (c.file.last_changeset.revision,h.short_id(c.file.last_changeset.raw_id)),h.url('changeset_home',repo_name=c.repo_name,revision=c.file.last_changeset.raw_id))}
+
${h.link_to("r%s:%s" % (c.file.changeset.revision,h.short_id(c.file.changeset.raw_id)),h.url('changeset_home',repo_name=c.repo_name,revision=c.file.changeset.raw_id))}
${h.format_byte_size(c.file.size,binary=True)}
${c.file.mimetype}
diff --git a/rhodecode/templates/files/files_browser.html b/rhodecode/templates/files/files_browser.html --- a/rhodecode/templates/files/files_browser.html +++ b/rhodecode/templates/files/files_browser.html @@ -47,7 +47,7 @@ ${_('Name')} ${_('Size')} ${_('Mimetype')} - ${_('Revision')} + ${_('Last Revision')} ${_('Last modified')} ${_('Last commiter')} @@ -70,7 +70,7 @@ %for cnt,node in enumerate(c.file): - ${h.link_to(node.name,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=h.safe_unicode(node.path)),class_=file_class(node)+" ypjax-link")} + ${h.link_to(node.name,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=h.safe_unicode(node.path)),class_=file_class(node)+" ypjax-link")} %if node.is_file(): diff --git a/rhodecode/templates/files/files_edit.html b/rhodecode/templates/files/files_edit.html --- a/rhodecode/templates/files/files_edit.html +++ b/rhodecode/templates/files/files_edit.html @@ -42,7 +42,7 @@
-
${h.link_to("r%s:%s" % (c.file.last_changeset.revision,h.short_id(c.file.last_changeset.raw_id)),h.url('changeset_home',repo_name=c.repo_name,revision=c.file.last_changeset.raw_id))}
+
${h.link_to("r%s:%s" % (c.file.changeset.revision,h.short_id(c.file.changeset.raw_id)),h.url('changeset_home',repo_name=c.repo_name,revision=c.file.changeset.raw_id))}
${h.format_byte_size(c.file.size,binary=True)}
${c.file.mimetype}
diff --git a/rhodecode/templates/files/files_source.html b/rhodecode/templates/files/files_source.html --- a/rhodecode/templates/files/files_source.html +++ b/rhodecode/templates/files/files_source.html @@ -3,8 +3,8 @@
${h.form(h.url('files_diff_home',repo_name=c.repo_name,f_path=c.f_path),method='get')} - ${h.hidden('diff2',c.file.last_changeset.raw_id)} - ${h.select('diff1',c.file.last_changeset.raw_id,c.file_history)} + ${h.hidden('diff2',c.file.changeset.raw_id)} + ${h.select('diff1',c.file.changeset.raw_id,c.file_history)} ${h.submit('diff','diff to revision',class_="ui-btn")} ${h.submit('show_rev','show at revision',class_="ui-btn")} ${h.end_form()} @@ -16,27 +16,27 @@
-
${h.link_to("r%s:%s" % (c.file.last_changeset.revision,h.short_id(c.file.last_changeset.raw_id)),h.url('changeset_home',repo_name=c.repo_name,revision=c.file.last_changeset.raw_id))}
+
${h.link_to("r%s:%s" % (c.file.changeset.revision,h.short_id(c.file.changeset.raw_id)),h.url('changeset_home',repo_name=c.repo_name,revision=c.file.changeset.raw_id))}
${h.format_byte_size(c.file.size,binary=True)}
${c.file.mimetype}
- ${h.link_to(_('show annotation'),h.url('files_annotate_home',repo_name=c.repo_name,revision=c.file.last_changeset.raw_id,f_path=c.f_path),class_="ui-btn")} - ${h.link_to(_('show as raw'),h.url('files_raw_home',repo_name=c.repo_name,revision=c.file.last_changeset.raw_id,f_path=c.f_path),class_="ui-btn")} - ${h.link_to(_('download as raw'),h.url('files_rawfile_home',repo_name=c.repo_name,revision=c.file.last_changeset.raw_id,f_path=c.f_path),class_="ui-btn")} + ${h.link_to(_('show annotation'),h.url('files_annotate_home',repo_name=c.repo_name,revision=c.file.changeset.raw_id,f_path=c.f_path),class_="ui-btn")} + ${h.link_to(_('show as raw'),h.url('files_raw_home',repo_name=c.repo_name,revision=c.file.changeset.raw_id,f_path=c.f_path),class_="ui-btn")} + ${h.link_to(_('download as raw'),h.url('files_rawfile_home',repo_name=c.repo_name,revision=c.file.changeset.raw_id,f_path=c.f_path),class_="ui-btn")} % if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name): % if not c.file.is_binary: - ${h.link_to(_('edit'),h.url('files_edit_home',repo_name=c.repo_name,revision=c.file.last_changeset.raw_id,f_path=c.f_path),class_="ui-btn")} + ${h.link_to(_('edit'),h.url('files_edit_home',repo_name=c.repo_name,revision=c.file.changeset.raw_id,f_path=c.f_path),class_="ui-btn")} % endif % endif
- gravatar + gravatar
-
${h.person(c.file.last_changeset.author)}
+
${h.person(c.file.changeset.author)}
-
${h.urlify_commit(c.file.last_changeset.message,c.repo_name)}
+
${h.urlify_commit(c.file.changeset.message,c.repo_name)}
%if c.file.is_binary: @@ -46,7 +46,7 @@ ${h.pygmentize(c.file,linenos=True,anchorlinenos=True,lineanchors='L',cssclass="code-highlight")} %else: ${_('File is too big to display')} ${h.link_to(_('show as raw'), - h.url('files_raw_home',repo_name=c.repo_name,revision=c.file.last_changeset.raw_id,f_path=c.f_path))} + h.url('files_raw_home',repo_name=c.repo_name,revision=c.file.changeset.raw_id,f_path=c.f_path))} %endif