mirror of
https://github.com/correl/codereview.git
synced 2024-12-26 19:16:49 +00:00
Added ability to diff a tree against an arbitrary revision
This commit is contained in:
parent
0c29fa19fe
commit
52ea400423
4 changed files with 64 additions and 0 deletions
|
@ -10,4 +10,7 @@ urlpatterns = patterns('',
|
||||||
# Commit view
|
# Commit view
|
||||||
(r'^(?P<repository>.*?)/commit/(?P<ref>.*?)/$',
|
(r'^(?P<repository>.*?)/commit/(?P<ref>.*?)/$',
|
||||||
'codereview.browser.views.commit'),
|
'codereview.browser.views.commit'),
|
||||||
|
# Diff view
|
||||||
|
(r'^(?P<repository>.*?)/diff/$',
|
||||||
|
'codereview.browser.views.diff'),
|
||||||
)
|
)
|
||||||
|
|
|
@ -74,6 +74,34 @@ def commit(request, repository, ref):
|
||||||
})
|
})
|
||||||
return render_to_response('browser/view.html', data)
|
return render_to_response('browser/view.html', data)
|
||||||
@permission_required('dashboard.browse')
|
@permission_required('dashboard.browse')
|
||||||
|
def diff(request, repository):
|
||||||
|
if not request.GET:
|
||||||
|
raise Http404
|
||||||
|
if not request.GET['a']:
|
||||||
|
raise Http404
|
||||||
|
try:
|
||||||
|
repository = Repository.objects.get(name=repository)
|
||||||
|
repo = vcs.create(repository.type, repository.path)
|
||||||
|
a = request.GET['a']
|
||||||
|
commit_a = repo.commit(a)
|
||||||
|
b = None
|
||||||
|
if request.GET['b']:
|
||||||
|
b = request.GET['b']
|
||||||
|
elif commit_a.parents:
|
||||||
|
b = commit_a.parents[0]
|
||||||
|
commit_b = repo.commit(b)
|
||||||
|
diffs = repo.diff(b, a)
|
||||||
|
except:
|
||||||
|
raise Http404
|
||||||
|
data = RequestContext(request, {
|
||||||
|
'repository': repository,
|
||||||
|
'repo': repo,
|
||||||
|
'a': commit_a,
|
||||||
|
'b': commit_b,
|
||||||
|
'diffs': diffs,
|
||||||
|
})
|
||||||
|
return render_to_response('browser/diff.html', data)
|
||||||
|
@permission_required('dashboard.browse')
|
||||||
def blob(request, repository, path):
|
def blob(request, repository, path):
|
||||||
repo, ref = _repo(request, repository)
|
repo, ref = _repo(request, repository)
|
||||||
data = RequestContext(request, {
|
data = RequestContext(request, {
|
||||||
|
|
27
templates/browser/diff.html
Normal file
27
templates/browser/diff.html
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{% extends "layouts/default.html" %}
|
||||||
|
{% load gravatar %}
|
||||||
|
{% load vcs %}
|
||||||
|
|
||||||
|
{% block navigation %}
|
||||||
|
{% include "browser/navigation.html" %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h2>Diff View</h2>
|
||||||
|
<strong>{{ a.id }} => {{ b.id }}</strong>
|
||||||
|
{% comment %}
|
||||||
|
** ADD THIS WHEN REVIEWS SUPPORT MANUAL A/B DIFFS **
|
||||||
|
<form name="review" method="post" action="{% url codereview.review.views.new%}">
|
||||||
|
{{ form }}
|
||||||
|
{% csrf_token %}
|
||||||
|
<input type="submit" value="Create New Review" />
|
||||||
|
</form>
|
||||||
|
{% endcomment %}
|
||||||
|
<div class="diff-container">
|
||||||
|
<div class="diff-html">
|
||||||
|
{% for diff in diffs %}
|
||||||
|
{% include "components/diff.html" %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
|
@ -5,5 +5,11 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
<form action="{% url codereview.browser.views.diff repository=repository %}">
|
||||||
|
<label>Diff tree from revision:</label>
|
||||||
|
<input type="text" name="a" />
|
||||||
|
<input type="hidden" name="b" value="{{ ref }}" />
|
||||||
|
<input type="submit" value="Diff" />
|
||||||
|
</form>
|
||||||
{% include "browser/commitlog.html" %}
|
{% include "browser/commitlog.html" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
Loading…
Reference in a new issue