diff --git a/rhodecode/apps/_base/__init__.py b/rhodecode/apps/_base/__init__.py --- a/rhodecode/apps/_base/__init__.py +++ b/rhodecode/apps/_base/__init__.py @@ -213,6 +213,13 @@ class RepoAppView(BaseAppView): return c + def _get_f_path(self, matchdict, default=None): + f_path = matchdict.get('f_path') + if f_path: + # fix for multiple initial slashes that causes errors for GIT + return f_path.lstrip('/') + + return default class DataGridAppView(object): """ diff --git a/rhodecode/apps/repository/views/repo_files.py b/rhodecode/apps/repository/views/repo_files.py --- a/rhodecode/apps/repository/views/repo_files.py +++ b/rhodecode/apps/repository/views/repo_files.py @@ -108,7 +108,7 @@ class RepoFilesView(RepoAppView): commit_id = self.request.matchdict.get( 'commit_id', default_commit_id) - f_path = self.request.matchdict.get('f_path', default_f_path) + f_path = self._get_f_path(self.request.matchdict, default_f_path) return commit_id, f_path def _get_default_encoding(self, c): @@ -375,9 +375,9 @@ class RepoFilesView(RepoAppView): renderer=None) def repo_files_diff(self): c = self.load_default_context() + f_path = self._get_f_path(self.request.matchdict) diff1 = self.request.GET.get('diff1', '') diff2 = self.request.GET.get('diff2', '') - f_path = self.request.matchdict['f_path'] path1, diff1 = parse_path_ref(diff1, default_path=f_path) @@ -461,9 +461,9 @@ class RepoFilesView(RepoAppView): """ Kept only to make OLD links work """ + f_path = self._get_f_path(self.request.matchdict) diff1 = self.request.GET.get('diff1', '') diff2 = self.request.GET.get('diff2', '') - f_path = self.request.matchdict['f_path'] if not any((diff1, diff2)): h.flash(