##// END OF EJS Templates
orginized test module...
orginized test module - separated test models into separate files - added scripts for script tests - few fixes and renames for readability

File last commit:

r2461:015a42e9 beta
r2527:95624ce4 beta
Show More
files.py
504 lines | 20.1 KiB | text/x-python | PythonLexer
fixes #79 cut off limit was added into .ini config files
r812 # -*- coding: utf-8 -*-
"""
rhodecode.controllers.files
~~~~~~~~~~~~~~~~~~~~~~~~~~~
renamed project to rhodecode
r547
fixes #79 cut off limit was added into .ini config files
r812 Files controller for RhodeCode
source code cleanup: remove trailing white space, normalize file endings
r1203
fixes #79 cut off limit was added into .ini config files
r812 :created_on: Apr 21, 2010
:author: marcink
2012 copyrights
r1824 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
fixes #79 cut off limit was added into .ini config files
r812 :license: GPLv3, see COPYING for more details.
"""
fixed license issue #149
r1206 # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
renamed project to rhodecode
r547 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
renamed project to rhodecode
r547 # You should have received a copy of the GNU General Public License
fixed license issue #149
r1206 # along with this program. If not, see <http://www.gnu.org/licenses/>.
archive file fixes for python 2.5
r2291 from __future__ import with_statement
added os.sep for files controller...
r1200 import os
fixes #79 cut off limit was added into .ini config files
r812 import logging
Added server side file editing with commit
r1305 import traceback
cleanup code of get archive for repositories
r2267 import tempfile
fixes #79 cut off limit was added into .ini config files
r812
implements #308 rewrote diffs to enable displaying full diff on each file...
r1789 from pylons import request, response, tmpl_context as c, url
renamed project to rhodecode
r547 from pylons.i18n.translation import _
from pylons.controllers.util import redirect
Implemented #111 copy github node finder solution
r1452 from pylons.decorators import jsonify
Use paste fileapp to properly send the archive size
r2294 from paste.fileapp import FileApp, _FileIter
fixes #79 cut off limit was added into .ini config files
r812
utils/conf...
r2109 from rhodecode.lib import diffs
from rhodecode.lib import helpers as h
moved soon-to-be-deleted code from vcs to rhodecode...
r1753
implements #308 rewrote diffs to enable displaying full diff on each file...
r1789 from rhodecode.lib.compat import OrderedDict
utils/conf...
r2109 from rhodecode.lib.utils2 import convert_line_endings, detect_mode, safe_str
Added server side file editing with commit
r1305 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
from rhodecode.lib.base import BaseRepoController, render
from rhodecode.lib.utils import EmptyChangeset
utils/conf...
r2109 from rhodecode.lib.vcs.conf import settings
from rhodecode.lib.vcs.exceptions import RepositoryError, \
ChangesetDoesNotExistError, EmptyRepositoryError, \
ImproperArchiveTypeError, VCSError, NodeAlreadyExistsError
from rhodecode.lib.vcs.nodes import FileNode
Added server side file editing with commit
r1305 from rhodecode.model.repo import RepoModel
utils/conf...
r2109 from rhodecode.model.scm import ScmModel
fixes for tests on Windows
r2255 from rhodecode.model.db import Repository
utils/conf...
r2109
implements #308 rewrote diffs to enable displaying full diff on each file...
r1789 from rhodecode.controllers.changeset import anchor_url, _ignorews_url,\
_context_url, get_line_ctx, get_ignore_ws
utils/conf...
r2109
Added server side file editing with commit
r1305
renamed project to rhodecode
r547 log = logging.getLogger(__name__)
fixed issue with vcs stream
r1134
another major codes rewrite:...
r1045 class FilesController(BaseRepoController):
Fixes for raw_id, needed for git...
r636
moved login required into seperate calls for files due to optional API access option...
r2457
renamed project to rhodecode
r547 def __before__(self):
super(FilesController, self).__before__()
fixed small issue made on latest patches
r813 c.cut_off_limit = self.cut_off_limit
renamed project to rhodecode
r547
Added initial support for creating new nodes in repos
r1483 def __get_cs_or_redirect(self, rev, repo_name, redirect_after=True):
another major codes rewrite:...
r1045 """
clean and fixes in files controller
r1137 Safe way to get changeset if error occur it redirects to tip with
proper message
source code cleanup: remove trailing white space, normalize file endings
r1203
another major codes rewrite:...
r1045 :param rev: revision to fetch
:param repo_name: repo name to redirect after
"""
try:
return c.rhodecode_repo.get_changeset(rev)
except EmptyRepositoryError, e:
Added initial support for creating new nodes in repos
r1483 if not redirect_after:
return None
url_ = url('files_add_home',
repo_name=c.repo_name,
added uploading of files from web interface directly into repo
r1485 revision=0, f_path='')
add_new = '<a href="%s">[%s]</a>' % (url_, _('add new'))
h.flash(h.literal(_('There are no files yet %s' % add_new)),
Added initial support for creating new nodes in repos
r1483 category='warning')
another major codes rewrite:...
r1045 redirect(h.url('summary_home', repo_name=repo_name))
except RepositoryError, e:
h.flash(str(e), category='warning')
redirect(h.url('files_home', repo_name=repo_name, revision='tip'))
fixes for rawfile, annotation, download. It will check now if it's a filenode....
r1189 def __get_filenode_or_redirect(self, repo_name, cs, path):
"""
Returns file_node, if error occurs or given path is directory,
it'll redirect to top level path
source code cleanup: remove trailing white space, normalize file endings
r1203
fixes for rawfile, annotation, download. It will check now if it's a filenode....
r1189 :param repo_name: repo_name
:param cs: given changeset
:param path: path to lookup
"""
try:
file_node = cs.get_node(path)
if file_node.is_dir():
raise RepositoryError('given path is a directory')
except RepositoryError, e:
h.flash(str(e), category='warning')
redirect(h.url('files_home', repo_name=repo_name,
revision=cs.raw_id))
return file_node
moved login required into seperate calls for files due to optional API access option...
r2457 @LoginRequired()
Added server side file editing with commit
r1305 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
'repository.admin')
unified annotation view with file source view
r2177 def index(self, repo_name, revision, f_path, annotate=False):
implements #308 rewrote diffs to enable displaying full diff on each file...
r1789 # redirect to given revision from form if given
clean and fixes in files controller
r1137 post_revision = request.POST.get('at_rev', None)
if post_revision:
files: fixes error when passing a diff without parameters and caused server crash...
r1224 cs = self.__get_cs_or_redirect(post_revision, repo_name)
clean and fixes in files controller
r1137 redirect(url('files_home', repo_name=c.repo_name,
revision=cs.raw_id, f_path=f_path))
Fixes for raw_id, needed for git...
r636
clean and fixes in files controller
r1137 c.changeset = self.__get_cs_or_redirect(revision, repo_name)
c.branch = request.GET.get('branch', None)
c.f_path = f_path
unified annotation view with file source view
r2177 c.annotate = annotate
clean and fixes in files controller
r1137 cur_rev = c.changeset.revision
Fixes for raw_id, needed for git...
r636
implements #308 rewrote diffs to enable displaying full diff on each file...
r1789 # prev link
clean and fixes in files controller
r1137 try:
prev_rev = c.rhodecode_repo.get_changeset(cur_rev).prev(c.branch)
c.url_prev = url('files_home', repo_name=c.repo_name,
revision=prev_rev.raw_id, f_path=f_path)
if c.branch:
c.url_prev += '?branch=%s' % c.branch
except (ChangesetDoesNotExistError, VCSError):
c.url_prev = '#'
Changed prev/next in file browser to new vcs methods
r883
implements #308 rewrote diffs to enable displaying full diff on each file...
r1789 # next link
clean and fixes in files controller
r1137 try:
next_rev = c.rhodecode_repo.get_changeset(cur_rev).next(c.branch)
c.url_next = url('files_home', repo_name=c.repo_name,
revision=next_rev.raw_id, f_path=f_path)
if c.branch:
c.url_next += '?branch=%s' % c.branch
except (ChangesetDoesNotExistError, VCSError):
c.url_next = '#'
Fixes for raw_id, needed for git...
r636
implements #308 rewrote diffs to enable displaying full diff on each file...
r1789 # files or dirs
clean and fixes in files controller
r1137 try:
new files views...
r1737 c.file = c.changeset.get_node(f_path)
use cs get history instead of node.history, node history have to much reference calls
r1190
new files views...
r1737 if c.file.is_file():
Add authors into file view
r2456 _hist = c.changeset.get_file_history(f_path)
c.file_history = self._get_node_history(c.changeset, f_path,
_hist)
c.authors = []
for a in set([x.author for x in _hist]):
c.authors.append((h.email(a), h.person(a)))
use cs get history instead of node.history, node history have to much reference calls
r1190 else:
Add authors into file view
r2456 c.authors = c.file_history = []
some changes for #45....
r644 except RepositoryError, e:
h.flash(str(e), category='warning')
clean and fixes in files controller
r1137 redirect(h.url('files_home', repo_name=repo_name,
revision=revision))
some changes for #45....
r644
renamed project to rhodecode
r547 return render('files/files.html')
moved login required into seperate calls for files due to optional API access option...
r2457 @LoginRequired()
Added server side file editing with commit
r1305 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
'repository.admin')
renamed project to rhodecode
r547 def rawfile(self, repo_name, revision, f_path):
clean and fixes in files controller
r1137 cs = self.__get_cs_or_redirect(revision, repo_name)
fixes for rawfile, annotation, download. It will check now if it's a filenode....
r1189 file_node = self.__get_filenode_or_redirect(repo_name, cs, f_path)
another major codes rewrite:...
r1045
fixes for rawfile, annotation, download. It will check now if it's a filenode....
r1189 response.content_disposition = 'attachment; filename=%s' % \
fixes for tests on Windows
r2255 safe_str(f_path.split(Repository.url_sep())[-1])
fixes for rawfile, annotation, download. It will check now if it's a filenode....
r1189
renamed project to rhodecode
r547 response.content_type = file_node.mimetype
return file_node.content
whitespace cleanup
r2461
moved login required into seperate calls for files due to optional API access option...
r2457 @LoginRequired()
Added server side file editing with commit
r1305 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
'repository.admin')
renamed project to rhodecode
r547 def raw(self, repo_name, revision, f_path):
clean and fixes in files controller
r1137 cs = self.__get_cs_or_redirect(revision, repo_name)
fixes for rawfile, annotation, download. It will check now if it's a filenode....
r1189 file_node = self.__get_filenode_or_redirect(repo_name, cs, f_path)
another major codes rewrite:...
r1045
changed raw action to show images instead of saying about binary file...
r1241 raw_mimetype_mapping = {
# map original mimetype to a mimetype used for "show as raw"
# you can also provide a content-disposition to override the
# default "attachment" disposition.
# orig_type: (new_type, new_dispo)
# show images inline:
'image/x-icon': ('image/x-icon', 'inline'),
'image/png': ('image/png', 'inline'),
'image/gif': ('image/gif', 'inline'),
'image/jpeg': ('image/jpeg', 'inline'),
'image/svg+xml': ('image/svg+xml', 'inline'),
}
mimetype = file_node.mimetype
try:
mimetype, dispo = raw_mimetype_mapping[mimetype]
except KeyError:
# we don't know anything special about this, handle it safely
if file_node.is_binary:
# do same as download raw for binary files
mimetype, dispo = 'application/octet-stream', 'attachment'
else:
# do not just use the original mimetype, but force text/plain,
# otherwise it would serve text/html and that might be unsafe.
# Note: underlying vcs library fakes text/plain mimetype if the
PEP8ify - controllers
r1245 # mimetype can not be determined and it thinks it is not
# binary.This might lead to erroneous text display in some
# cases, but helps in other cases, like with text files
# without extension.
changed raw action to show images instead of saying about binary file...
r1241 mimetype, dispo = 'text/plain', 'inline'
if dispo == 'attachment':
dispo = 'attachment; filename=%s' % \
Unicode fixes, added safe_str method for global str() operations +better test sandboxing
r1401 safe_str(f_path.split(os.sep)[-1])
changed raw action to show images instead of saying about binary file...
r1241
response.content_disposition = dispo
response.content_type = mimetype
renamed project to rhodecode
r547 return file_node.content
Fixes for raw_id, needed for git...
r636
moved login required into seperate calls for files due to optional API access option...
r2457 @LoginRequired()
Added server side file editing with commit
r1305 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
def edit(self, repo_name, revision, f_path):
r_post = request.POST
c.cs = self.__get_cs_or_redirect(revision, repo_name)
c.file = self.__get_filenode_or_redirect(repo_name, c.cs, f_path)
disabled edition of binary files
r1313 if c.file.is_binary:
return redirect(url('files_home', repo_name=c.repo_name,
revision=c.cs.raw_id, f_path=f_path))
Added server side file editing with commit
r1305 c.f_path = f_path
if r_post:
old_content = c.file.content
Added support for ascendent characters for inMemoryCommit
r1306 sl = old_content.splitlines(1)
first_line = sl[0] if sl else ''
Added server side file editing with commit
r1305 # modes: 0 - Unix, 1 - Mac, 2 - DOS
Added support for ascendent characters for inMemoryCommit
r1306 mode = detect_mode(first_line, 0)
Added server side file editing with commit
r1305 content = convert_line_endings(r_post.get('content'), mode)
Added support for ascendent characters for inMemoryCommit
r1306
Added server side file editing with commit
r1305 message = r_post.get('message') or (_('Edited %s via RhodeCode')
% (f_path))
moved out commit into scm model, and added cache invalidation after commit.
r1311 author = self.rhodecode_user.full_contact
Added server side file editing with commit
r1305
if content == old_content:
h.flash(_('No changes'),
category='warning')
Added support for ascendent characters for inMemoryCommit
r1306 return redirect(url('changeset_home', repo_name=c.repo_name,
revision='tip'))
Added server side file editing with commit
r1305 try:
moved out commit into scm model, and added cache invalidation after commit.
r1311 self.scm_model.commit_change(repo=c.rhodecode_repo,
repo_name=repo_name, cs=c.cs,
logged local commit with special action via action_logger,
r1312 user=self.rhodecode_user,
moved out commit into scm model, and added cache invalidation after commit.
r1311 author=author, message=message,
content=content, f_path=f_path)
Added server side file editing with commit
r1305 h.flash(_('Successfully committed to %s' % f_path),
category='success')
Added support for ascendent characters for inMemoryCommit
r1306
moved out commit into scm model, and added cache invalidation after commit.
r1311 except Exception:
Added server side file editing with commit
r1305 log.error(traceback.format_exc())
h.flash(_('Error occurred during commit'), category='error')
return redirect(url('changeset_home',
repo_name=c.repo_name, revision='tip'))
return render('files/files_edit.html')
moved login required into seperate calls for files due to optional API access option...
r2457 @LoginRequired()
Added initial support for creating new nodes in repos
r1483 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
def add(self, repo_name, revision, f_path):
r_post = request.POST
added uploading of files from web interface directly into repo
r1485 c.cs = self.__get_cs_or_redirect(revision, repo_name,
Added initial support for creating new nodes in repos
r1483 redirect_after=False)
if c.cs is None:
c.cs = EmptyChangeset(alias=c.rhodecode_repo.alias)
c.f_path = f_path
if r_post:
unix_mode = 0
content = convert_line_endings(r_post.get('content'), unix_mode)
message = r_post.get('message') or (_('Added %s via RhodeCode')
% (f_path))
location = r_post.get('location')
filename = r_post.get('filename')
added uploading of files from web interface directly into repo
r1485 file_obj = r_post.get('upload_file', None)
if file_obj is not None and hasattr(file_obj, 'filename'):
filename = file_obj.filename
content = file_obj.file
Added initial support for creating new nodes in repos
r1483 node_path = os.path.join(location, filename)
author = self.rhodecode_user.full_contact
if not content:
h.flash(_('No content'), category='warning')
return redirect(url('changeset_home', repo_name=c.repo_name,
revision='tip'))
fixed small issues with adding new filenodes
r1484 if not filename:
h.flash(_('No filename'), category='warning')
return redirect(url('changeset_home', repo_name=c.repo_name,
added uploading of files from web interface directly into repo
r1485 revision='tip'))
Added initial support for creating new nodes in repos
r1483
try:
self.scm_model.create_node(repo=c.rhodecode_repo,
various fixes for git and mercurial with InMemoryCommit backend and non-ascii files...
r2199 repo_name=repo_name, cs=c.cs,
user=self.rhodecode_user,
author=author, message=message,
content=content, f_path=node_path)
Added initial support for creating new nodes in repos
r1483 h.flash(_('Successfully committed to %s' % node_path),
category='success')
added uploading of files from web interface directly into repo
r1485 except NodeAlreadyExistsError, e:
h.flash(_(e), category='error')
Added initial support for creating new nodes in repos
r1483 except Exception:
log.error(traceback.format_exc())
h.flash(_('Error occurred during commit'), category='error')
return redirect(url('changeset_home',
repo_name=c.repo_name, revision='tip'))
return render('files/files_add.html')
moved login required into seperate calls for files due to optional API access option...
r2457 @LoginRequired()
Added server side file editing with commit
r1305 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
'repository.admin')
implemented #91,...
r872 def archivefile(self, repo_name, fname):
fixed error when trying to make download on empty repository
r945
added branch/tag options to download links in summary
r942 fileformat = None
revision = None
fixed archival in rhodecode to use new functions from vcs
r948 ext = None
fixes #214 added support for downloading subrepos in download menu.
r1450 subrepos = request.GET.get('subrepos') == 'true'
fixed error when trying to make download on empty repository
r945
fixes for vcs settings module
r1480 for a_type, ext_data in settings.ARCHIVE_SPECS.items():
fixed archival in rhodecode to use new functions from vcs
r948 archive_spec = fname.split(ext_data[1])
if len(archive_spec) == 2 and archive_spec[1] == '':
fileformat = a_type or ext_data[1]
added branch/tag options to download links in summary
r942 revision = archive_spec[0]
fixed archival in rhodecode to use new functions from vcs
r948 ext = ext_data[1]
implemented #91,...
r872
try:
another major codes rewrite:...
r1045 dbrepo = RepoModel().get_by_repo_name(repo_name)
another major code rafactor, reimplemented (almost from scratch)...
r1038 if dbrepo.enable_downloads is False:
implemented #84 downloads can be enabled/disabled per each repository from now.
r962 return _('downloads disabled')
fix archive download for git
r1809 if c.rhodecode_repo.alias == 'hg':
# patch and reset hooks section of UI config to not run any
# hooks on fetching archives with subrepos
for k, v in c.rhodecode_repo._repo.ui.configitems('hooks'):
c.rhodecode_repo._repo.ui.setconfig('hooks', k, None)
fixes issue with mercurial 2.0 and archival of subrepos....
r1664
another major codes rewrite:...
r1045 cs = c.rhodecode_repo.get_changeset(revision)
fixes for vcs settings module
r1480 content_type = settings.ARCHIVE_SPECS[fileformat][0]
implemented #91,...
r872 except ChangesetDoesNotExistError:
return _('Unknown revision %s') % revision
fixed error when trying to make download on empty repository
r945 except EmptyRepositoryError:
return _('Empty repository')
fixed typo in exception
r961 except (ImproperArchiveTypeError, KeyError):
fixed archival in rhodecode to use new functions from vcs
r948 return _('Unknown archive type')
implemented #91,...
r872
fixes issue #455 Creating an archive generates an exception on Windows...
r2318 fd, archive = tempfile.mkstemp()
t = open(archive, 'wb')
cs.fill_archive(stream=t, kind=fileformat, subrepos=subrepos)
t.close()
Use paste fileapp to properly send the archive size
r2294
fixes issue #455 Creating an archive generates an exception on Windows...
r2318 def get_chunked_archive(archive):
stream = open(archive, 'rb')
while True:
data = stream.read(16 * 1024)
if not data:
stream.close()
os.close(fd)
os.remove(archive)
break
yield data
changes for archivals in rhodecode. Also made it work for git that way
r1308
fixes issue #455 Creating an archive generates an exception on Windows...
r2318 response.content_disposition = str('attachment; filename=%s-%s%s' \
% (repo_name, revision[:12], ext))
response.content_type = str(content_type)
return get_chunked_archive(archive)
fixed archival in rhodecode to use new functions from vcs
r948
moved login required into seperate calls for files due to optional API access option...
r2457 @LoginRequired()
Added server side file editing with commit
r1305 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
'repository.admin')
renamed project to rhodecode
r547 def diff(self, repo_name, f_path):
Added handling of ignore whitespace flag in changesets...
r1752 ignore_whitespace = request.GET.get('ignorews') == '1'
added line context control to diffs
r1768 line_context = request.GET.get('context', 3)
implements #308 rewrote diffs to enable displaying full diff on each file...
r1789 diff1 = request.GET.get('diff1', '')
diff2 = request.GET.get('diff2', '')
renamed project to rhodecode
r547 c.action = request.GET.get('diff')
c.no_changes = diff1 == diff2
c.f_path = f_path
Added show as raw into big diff
r1273 c.big_diff = False
implements #308 rewrote diffs to enable displaying full diff on each file...
r1789 c.anchor_url = anchor_url
c.ignorews_url = _ignorews_url
c.context_url = _context_url
c.changes = OrderedDict()
c.changes[diff2] = []
renamed project to rhodecode
r547 try:
if diff1 not in ['', None, 'None', '0' * 12, '0' * 40]:
another major codes rewrite:...
r1045 c.changeset_1 = c.rhodecode_repo.get_changeset(diff1)
renamed project to rhodecode
r547 node1 = c.changeset_1.get_node(f_path)
else:
files: fixes error when passing a diff without parameters and caused server crash...
r1224 c.changeset_1 = EmptyChangeset(repo=c.rhodecode_repo)
renamed project to rhodecode
r547 node1 = FileNode('.', '', changeset=c.changeset_1)
Fixes for raw_id, needed for git...
r636
renamed project to rhodecode
r547 if diff2 not in ['', None, 'None', '0' * 12, '0' * 40]:
another major codes rewrite:...
r1045 c.changeset_2 = c.rhodecode_repo.get_changeset(diff2)
renamed project to rhodecode
r547 node2 = c.changeset_2.get_node(f_path)
else:
files: fixes error when passing a diff without parameters and caused server crash...
r1224 c.changeset_2 = EmptyChangeset(repo=c.rhodecode_repo)
renamed project to rhodecode
r547 node2 = FileNode('.', '', changeset=c.changeset_2)
except RepositoryError:
auto white-space removal
r1818 return redirect(url('files_home', repo_name=c.repo_name,
implements #308 rewrote diffs to enable displaying full diff on each file...
r1789 f_path=f_path))
renamed project to rhodecode
r547
if c.action == 'download':
moved soon-to-be-deleted code from vcs to rhodecode...
r1753 _diff = diffs.get_gitdiff(node1, node2,
added line context control to diffs
r1768 ignore_whitespace=ignore_whitespace,
context=line_context)
implements #308 rewrote diffs to enable displaying full diff on each file...
r1789 diff = diffs.DiffProcessor(_diff, format='gitdiff')
changed raw and download diffs to gitdiff
r1044
renamed project to rhodecode
r547 diff_name = '%s_vs_%s.diff' % (diff1, diff2)
response.content_type = 'text/plain'
fixed raw_changeset for git, accidentally it was generated with hg patch headers...
r2083 response.content_disposition = (
'attachment; filename=%s' % diff_name
)
renamed project to rhodecode
r547 return diff.raw_diff()
Fixes for raw_id, needed for git...
r636
renamed project to rhodecode
r547 elif c.action == 'raw':
moved soon-to-be-deleted code from vcs to rhodecode...
r1753 _diff = diffs.get_gitdiff(node1, node2,
added line context control to diffs
r1768 ignore_whitespace=ignore_whitespace,
context=line_context)
implements #308 rewrote diffs to enable displaying full diff on each file...
r1789 diff = diffs.DiffProcessor(_diff, format='gitdiff')
fixed raw diff as purly raw without html
r649 response.content_type = 'text/plain'
return diff.raw_diff()
fixed annotation bug, added history to annotation....
r662
renamed project to rhodecode
r547 else:
implements #308 rewrote diffs to enable displaying full diff on each file...
r1789 fid = h.FID(diff2, node2.path)
line_context_lcl = get_line_ctx(fid, request.GET)
ign_whitespace_lcl = get_ignore_ws(fid, request.GET)
memory optimizations, call diffs only when needed ie. after checking for binary, and cutoff limit....
r1149
implements #308 rewrote diffs to enable displaying full diff on each file...
r1789 lim = request.GET.get('fulldiff') or self.cut_off_limit
utils/conf...
r2109 _, cs1, cs2, diff, st = diffs.wrapped_diff(filenode_old=node1,
implements #308 rewrote diffs to enable displaying full diff on each file...
r1789 filenode_new=node2,
cut_off_limit=lim,
ignore_whitespace=ign_whitespace_lcl,
line_context=line_context_lcl,
enable_comments=False)
Added show as raw into big diff
r1273
implements #308 rewrote diffs to enable displaying full diff on each file...
r1789 c.changes = [('', node2, diff, cs1, cs2, st,)]
Fixes for raw_id, needed for git...
r636
renamed project to rhodecode
r547 return render('files/file_diff.html')
Fixes for raw_id, needed for git...
r636
Add authors into file view
r2456 def _get_node_history(self, cs, f_path, changesets=None):
if changesets is None:
changesets = cs.get_file_history(f_path)
renamed project to rhodecode
r547 hist_l = []
added tags, and branches to file history select box, fixed annotation changeset errors crash on wrongly given revions
r774
changesets_group = ([], _("Changesets"))
branches_group = ([], _("Branches"))
tags_group = ([], _("Tags"))
remove branch from git filenode history drop-down
r2046 _hg = cs.repository.alias == 'hg'
renamed project to rhodecode
r547 for chs in changesets:
remove branch from git filenode history drop-down
r2046 _branch = '(%s)' % chs.branch if _hg else ''
n_desc = 'r%s:%s %s' % (chs.revision, chs.short_id, _branch)
added tags, and branches to file history select box, fixed annotation changeset errors crash on wrongly given revions
r774 changesets_group[0].append((chs.raw_id, n_desc,))
hist_l.append(changesets_group)
another major codes rewrite:...
r1045 for name, chs in c.rhodecode_repo.branches.items():
added tags, and branches to file history select box, fixed annotation changeset errors crash on wrongly given revions
r774 branches_group[0].append((chs, name),)
hist_l.append(branches_group)
another major codes rewrite:...
r1045 for name, chs in c.rhodecode_repo.tags.items():
added tags, and branches to file history select box, fixed annotation changeset errors crash on wrongly given revions
r774 tags_group[0].append((chs, name),)
hist_l.append(tags_group)
renamed project to rhodecode
r547 return hist_l
Implemented #111 copy github node finder solution
r1452
moved login required into seperate calls for files due to optional API access option...
r2457 @LoginRequired()
Implemented #111 copy github node finder solution
r1452 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
'repository.admin')
moved login required into seperate calls for files due to optional API access option...
r2457 @jsonify
Implemented #111 copy github node finder solution
r1452 def nodelist(self, repo_name, revision, f_path):
if request.environ.get('HTTP_X_PARTIAL_XHR'):
cs = self.__get_cs_or_redirect(revision, repo_name)
implements #330 api method for listing nodes at particular revision...
r1810 _d, _f = ScmModel().get_nodes(repo_name, cs.raw_id, f_path,
flat=False)
removed JSON array envelope from filter files function...
r2428 return {'nodes': _d + _f}