Mercurial > public > src > rhodecode
comparison pylons_app/controllers/files.py @ 129:42d46deb124d
implemented simple diffs for history of files.
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Tue, 04 May 2010 00:54:00 +0200 |
parents | 9deb6f1d5b90 |
children | ffddbd80649e |
comparison
equal
deleted
inserted
replaced
128:9deb6f1d5b90 | 129:42d46deb124d |
---|---|
23 c.files_list = c.changeset.get_node(f_path) | 23 c.files_list = c.changeset.get_node(f_path) |
24 | 24 |
25 c.file_history = self._get_history(repo, c.files_list, f_path) | 25 c.file_history = self._get_history(repo, c.files_list, f_path) |
26 return render('files/files.html') | 26 return render('files/files.html') |
27 | 27 |
28 | 28 def diff(self, repo_name, f_path): |
29 hg_model = HgModel() | |
30 diff1 = request.GET.get('diff1') | |
31 diff2 = request.GET.get('diff2') | |
32 c.f_path = f_path | |
33 c.repo = hg_model.get_repo(c.repo_name) | |
34 c.changeset_1 = c.repo.get_changeset(diff1) | |
35 c.changeset_2 = c.repo.get_changeset(diff2) | |
36 | |
37 c.file_1 = c.changeset_1.get_node(f_path).content | |
38 c.file_2 = c.changeset_2.get_node(f_path).content | |
39 c.diff1 = 'r%s:%s' % (c.changeset_1.revision, c.changeset_1._short) | |
40 c.diff2 = 'r%s:%s' % (c.changeset_2.revision, c.changeset_2._short) | |
41 from difflib import unified_diff | |
42 d = unified_diff(c.file_1.splitlines(1), c.file_2.splitlines(1)) | |
43 c.diff = ''.join(d) | |
44 return render('files/file_diff.html') | |
45 | |
29 def _get_history(self, repo, node, f_path): | 46 def _get_history(self, repo, node, f_path): |
30 from vcs.nodes import NodeKind | 47 from vcs.nodes import NodeKind |
31 if not node.kind is NodeKind.FILE: | 48 if not node.kind is NodeKind.FILE: |
32 return [] | 49 return [] |
33 changesets = list(node.history) | 50 changesets = node.history |
34 changesets.reverse() | |
35 hist_l = [] | 51 hist_l = [] |
36 for chs in changesets: | 52 for chs in changesets: |
37 n_desc = 'r%s:%s' % (chs.revision, chs._short) | 53 n_desc = 'r%s:%s' % (chs.revision, chs._short) |
38 hist_l.append((chs._short, n_desc,)) | 54 hist_l.append((chs._short, n_desc,)) |
39 return hist_l | 55 return hist_l |