358 lines
15 KiB
HTML
358 lines
15 KiB
HTML
|
{% extends "repo_master.html" %}
|
||
|
|
||
|
{% block title %}{{ select.capitalize() }} - {{
|
||
|
repo.namespace + '/' if repo.namespace }}{{ repo.name }}{% endblock %}
|
||
|
{% set tag = "home" %}
|
||
|
|
||
|
{% block repo %}
|
||
|
<div class="row">
|
||
|
{% if g.repo_obj and g.repo_obj.is_empty %}
|
||
|
<div class="col-md-8">
|
||
|
<div class="alert {% if category == 'error' %}alert-warning{% else %}alert-info{%endif%}" role="alert">
|
||
|
<p>This repo is brand new!</p>
|
||
|
{% if authenticated and g.repo_admin %}
|
||
|
<p>If you already have a git repo:</p>
|
||
|
<pre>git remote add origin {{ config.get('GIT_URL_SSH') }}{% if repo.parent %}forks/{% endif %}{{ repo.fullname }}.git
|
||
|
git push -u origin master</pre>
|
||
|
|
||
|
<p>If you have not created your git repo yet:</p>
|
||
|
<pre>git clone {{ config.get('GIT_URL_SSH') }}{% if repo.parent %}forks/{% endif %}{{ repo.fullname }}.git
|
||
|
cd {{ repo.name }}
|
||
|
touch README.rst
|
||
|
git add README.rst
|
||
|
git commit -m "Add README file"
|
||
|
git push -u origin master</pre>
|
||
|
{% else %}
|
||
|
<p>The Project Creator has not pushed any code yet</p>
|
||
|
{% endif %}
|
||
|
</div>
|
||
|
</div>
|
||
|
{% else %}
|
||
|
<div class="col-md-8">
|
||
|
{% if readme %}
|
||
|
<section class="readme">
|
||
|
{% if safe %}
|
||
|
{{ readme | noJS |safe }}
|
||
|
{% else %}
|
||
|
{{ readme | noJS }}
|
||
|
{% endif %}
|
||
|
</section>
|
||
|
{% else %}
|
||
|
<section class="no-readme">
|
||
|
<div class="card">
|
||
|
<div class="card-header text-xs-center text-muted p-t-2 p-b-2">
|
||
|
The {{repo.name}} project has not checked in a README file yet
|
||
|
</div>
|
||
|
</div>
|
||
|
</section>
|
||
|
{% endif %}
|
||
|
</div>
|
||
|
{% endif %}
|
||
|
<div class="col-md-4">
|
||
|
<div class="card">
|
||
|
<div class="card-block">
|
||
|
<h5><strong>Owners</strong></h5>
|
||
|
<div class="m-b-2">
|
||
|
<div>
|
||
|
<a href="{{ url_for('view_user', username=repo.user.user)}}">
|
||
|
{{ repo.user.default_email | avatar(20) | safe }}
|
||
|
{{ repo.user.fullname }} ({{ repo.user.user }}) - creator
|
||
|
</a>
|
||
|
</div>
|
||
|
{% for user in repo.users %}
|
||
|
<div>
|
||
|
<a href="{{ url_for('view_user', username=user.user)}}">
|
||
|
{{ user.default_email | avatar(20) | safe }}
|
||
|
{{ user.fullname }} ({{ user.user }})
|
||
|
</a>
|
||
|
</div>
|
||
|
{% endfor %}
|
||
|
{% for group in repo.groups %}
|
||
|
<div>
|
||
|
<a href="{{ url_for('view_group', group=group.group_name)}}">
|
||
|
@{{ group.group_name }}
|
||
|
</a>
|
||
|
</div>
|
||
|
{% endfor %}
|
||
|
</div>
|
||
|
<h5><strong>Branches</strong></h5>
|
||
|
<div class="m-b-2">
|
||
|
{% if head %}
|
||
|
<div id="branch-{{ head }}" class="repoinfo-branchlistitem row">
|
||
|
<div class="branch_name col-md-10">
|
||
|
{% if branchname == head %}
|
||
|
<span class="oi text-muted" data-glyph="random"
|
||
|
title="Default branch"></span>
|
||
|
<strong title="Currently viewing branch {{ head }}" data-toggle="tooltip">{{ head }}</strong>
|
||
|
{% else %}
|
||
|
<span class="oi text-muted" data-glyph="random"
|
||
|
title="Default branch"></span>
|
||
|
<a href="{{ url_for('view_repo_branch',
|
||
|
repo=repo.name,
|
||
|
username=username,
|
||
|
namespace=repo.namespace,
|
||
|
branchname=head) }}"
|
||
|
title="{{ head }}" data-toggle="tooltip">
|
||
|
{{ head }}
|
||
|
</a>
|
||
|
{% endif %}
|
||
|
</div>
|
||
|
<div class="branch_del col-md-2">
|
||
|
<span class="oi text-muted" data-glyph="star"
|
||
|
title="Default branch"></span>
|
||
|
</div>
|
||
|
</div>
|
||
|
{% endif %}
|
||
|
|
||
|
{% for branch in g.branches if branch != head%}
|
||
|
<div id="branch-{{ branch }}" class="repoinfo-branchlistitem row">
|
||
|
<div class="branch_name col-md-8">
|
||
|
<span class="oi text-muted" data-glyph="random"></span>
|
||
|
{% if branchname != branch %}
|
||
|
<a class="" href="{{ url_for('view_repo_branch',
|
||
|
repo=repo.name,
|
||
|
username=username,
|
||
|
namespace=repo.namespace,
|
||
|
branchname=branch) }}"
|
||
|
title="{{ branch }}" data-toggle="tooltip">{{ branch }}
|
||
|
</a>
|
||
|
{% else %}
|
||
|
<strong title="Currently viewing branch {{branch}}" data-toggle="tooltip">{{ branch }}</strong>
|
||
|
{% endif %}
|
||
|
|
||
|
</div>
|
||
|
<div class="branch_del col-md-4">
|
||
|
{% if g.repo_admin and branch != head %}
|
||
|
<form id="delete_branch_form-{{ branch | replace('/', '_') }}" action="{{
|
||
|
url_for('.delete_branch',
|
||
|
repo=repo.name,
|
||
|
username=username,
|
||
|
namespace=repo.namespace,
|
||
|
branchname=branch)
|
||
|
}}" method="post" class="inline icon del_icon"
|
||
|
onsubmit="return confirm('Are you sure you want to remove the branch: {{ branch }}?\nThis cannot be un-done!');">
|
||
|
{{ form.csrf_token }}
|
||
|
<a title="Remove branch {{ branch }}" href="#"
|
||
|
onclick="$('#delete_branch_form-{{ branch | replace('/', '_') }}').submit();">
|
||
|
<span class="oi" data-glyph="trash"></span>
|
||
|
</a>
|
||
|
</form>
|
||
|
{% endif %}
|
||
|
</div>
|
||
|
</div>
|
||
|
{% endfor %}
|
||
|
</div>
|
||
|
<h5><strong>Source GIT URLs</strong>{% if
|
||
|
(authenticated and g.repo_admin) or
|
||
|
(config['DOC_APP_URL'] and repo and
|
||
|
repo.settings.get('project_documentation', True))
|
||
|
%}
|
||
|
<span class="pull-xs-right"><a data-toggle="collapse" href="#moregiturls"
|
||
|
aria-expanded="false" aria-controls="moregiturls"
|
||
|
id="more_gits">more</a></span>{%endif%}</h5>
|
||
|
<div>
|
||
|
<div class="form-group">
|
||
|
<div class="input-group input-group-sm">
|
||
|
<div class="input-group-addon">SSH</div>
|
||
|
<input class="form-control" type="text" value="{{
|
||
|
config.get('GIT_URL_SSH') }}{{ repo.fullname }}.git" readonly>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="form-group">
|
||
|
<div class="input-group input-group-sm">
|
||
|
<div class="input-group-addon">GIT</div>
|
||
|
<input class="form-control" type="text" value="{{
|
||
|
config.get('GIT_URL_GIT') }}{{ repo.fullname }}.git" readonly>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="collapse" id="moregiturls">
|
||
|
{% if config['DOC_APP_URL']
|
||
|
and repo
|
||
|
and repo.settings.get('project_documentation', True) %}
|
||
|
<h5><strong>Docs GIT URLs</strong></h5>
|
||
|
{% if authenticated and g.repo_admin %}
|
||
|
<div class="form-group">
|
||
|
<div class="input-group input-group-sm">
|
||
|
<div class="input-group-addon">SSH</div>
|
||
|
<input class="form-control" type="text" value="{{
|
||
|
config.get('GIT_URL_SSH') }}docs/{{ repo.fullname }}.git" readonly>
|
||
|
</div>
|
||
|
</div>
|
||
|
{% endif %}
|
||
|
<div class="form-group">
|
||
|
<div class="input-group input-group-sm">
|
||
|
<div class="input-group-addon">GIT</div>
|
||
|
<input class="form-control" type="text" value="{{
|
||
|
config.get('GIT_URL_GIT') }}docs/{{ repo.fullname }}.git" readonly>
|
||
|
</div>
|
||
|
</div>
|
||
|
{% endif %}
|
||
|
{% if authenticated and g.repo_admin %}
|
||
|
{% if config.get('ENABLE_TICKETS', True)
|
||
|
and repo.settings.get('issue_tracker', True) %}
|
||
|
<h5><strong>Issues GIT URLs</strong></h5>
|
||
|
<div class="form-group">
|
||
|
<div class="input-group input-group-sm">
|
||
|
<div class="input-group-addon">SSH</div>
|
||
|
<input class="form-control" type="text" value="{{
|
||
|
config.get('GIT_URL_SSH') }}tickets/{{ repo.fullname }}.git" readonly>
|
||
|
</div>
|
||
|
</div>
|
||
|
{% endif %}
|
||
|
<h5><strong>Pull Requests GIT URLs</strong></h5>
|
||
|
<div class="form-group">
|
||
|
<div class="input-group input-group-sm">
|
||
|
<div class="input-group-addon">SSH</div>
|
||
|
<input class="form-control" type="text" value="{{
|
||
|
config.get('GIT_URL_SSH') }}requests/{{ repo.fullname }}.git" readonly>
|
||
|
</div>
|
||
|
</div>
|
||
|
{% endif %}
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="repo_date" title="{{repo.date_created}}">
|
||
|
created {{repo.date_created|humanize}}
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
{% if last_commits %}
|
||
|
<div class="card">
|
||
|
<div class="card-header">
|
||
|
<strong>Recent Commits in
|
||
|
<span class="pr-toplabel">
|
||
|
<span class="oi" data-glyph="random"></span>
|
||
|
{{branchname}}
|
||
|
</span>
|
||
|
</strong>
|
||
|
</div>
|
||
|
<div class="card-block p-a-0">
|
||
|
<div class="list-group list-group-flush">
|
||
|
{% for commit in last_commits %}
|
||
|
<a href="{{
|
||
|
url_for('view_commit',
|
||
|
repo=repo.name,
|
||
|
username=username,
|
||
|
namespace=repo.namespace,
|
||
|
commitid=commit.hex) }}" class="list-group-item">
|
||
|
<div class="commitdate" title="{{ commit.commit_time|format_ts }}">
|
||
|
<small>
|
||
|
<strong>
|
||
|
{{ commit.author | author2avatar(20) | safe }}
|
||
|
{{ commit.author.name }}
|
||
|
</strong>
|
||
|
commited {{ commit.commit_time|humanize }}
|
||
|
</small>
|
||
|
</div>
|
||
|
<div><small>
|
||
|
{{ commit.message.split('\n')[0] }}
|
||
|
{% if diff_commits and commit.oid.hex in diff_commits %}
|
||
|
<span class="new_commit" title="Commit not in the main repo">*</span>
|
||
|
{% endif %}
|
||
|
</small></div>
|
||
|
</a>
|
||
|
{% endfor %}
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
{% endif %}
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
{% endblock %}
|
||
|
|
||
|
{% block jscripts %}
|
||
|
{{ super() }}
|
||
|
<script type="text/javascript">
|
||
|
$(document).ready(function() {
|
||
|
$(".extra_gits").hide();
|
||
|
});
|
||
|
|
||
|
$(function() {
|
||
|
$( "#more_gits" ).click(function() {
|
||
|
if ($( "#more_gits" ).html() == 'more') {
|
||
|
$( "#more_gits" ).html('less');
|
||
|
} else {
|
||
|
$( "#more_gits" ).html('more');
|
||
|
}
|
||
|
});
|
||
|
|
||
|
{% if authenticated and g.repo_admin %}
|
||
|
$.ajax({
|
||
|
url: '{{ url_for("internal_ns.get_pull_request_ready_branch") }}' ,
|
||
|
type: 'POST',
|
||
|
data: {
|
||
|
repo: "{{ repo.name }}",
|
||
|
repouser: "{{ repo.user.user if repo.is_fork else '' }}",
|
||
|
csrf_token: "{{ form.csrf_token.current_token }}",
|
||
|
},
|
||
|
dataType: 'json',
|
||
|
success: function(res) {
|
||
|
if (res.code == 'OK'){
|
||
|
for (branch in res.message.new_branch){
|
||
|
var url = "{{ url_for(
|
||
|
'new_request_pull',
|
||
|
repo=repo.name,
|
||
|
username=repo.user.user if repo.is_fork else None,
|
||
|
namespace=repo.namespace,
|
||
|
branch_to=head or 'master',
|
||
|
branch_from='') }}";
|
||
|
html = '<div class="alert alert-info" role="alert"> \
|
||
|
The branch ' + branch +' contains '
|
||
|
+ res.message.new_branch[branch].length
|
||
|
+ ' commits not in the main branch \
|
||
|
<span class="pr-toplabel"> \
|
||
|
<span class="oi" data-glyph="random"> </span> \
|
||
|
{{ head }}</span> \
|
||
|
<div id="request_pull" class="col-md-2"> \
|
||
|
<a class="btn btn-primary btn-sm" href="' + url + branch + '"> Request pull </a> \
|
||
|
</div></div>';
|
||
|
/*$($('.bodycontent').find('.row').children()[0]).before(html);*/
|
||
|
{% if repo.is_fork %}
|
||
|
html2 = ' \
|
||
|
<a class="small label label-sm label-primary" data-toggle="tooltip" \
|
||
|
href="' + url + branch + '"\
|
||
|
title="' + branch +' contains '
|
||
|
+ res.message.new_branch[branch].length+' \
|
||
|
commit not in the upstream project. Click to create new PR now.'+'"> New PR</a> \
|
||
|
</div>';
|
||
|
{% else %}
|
||
|
html2 = ' \
|
||
|
<a class="small label label-sm label-primary" data-toggle="tooltip" \
|
||
|
href="' + url + branch + '"\
|
||
|
title="' + branch +' contains '
|
||
|
+ res.message.new_branch[branch].length+' \
|
||
|
commit not in the main branch. Click to create new PR now.'+'"> New PR</a> \
|
||
|
</div>';
|
||
|
{%endif%}
|
||
|
$('#branch-'+branch+' .branch_del').prepend(html2);
|
||
|
$('[data-toggle="tooltip"]').tooltip({placement : 'bottom'});
|
||
|
}
|
||
|
for (branch in res.message.branch_w_pr){
|
||
|
var url = "{{ url_for(
|
||
|
'request_pull',
|
||
|
repo=repo.name,
|
||
|
username=repo.user.user if repo.is_fork else None,
|
||
|
namespace=repo.namespace,
|
||
|
requestid=-100) }}";
|
||
|
url = url.replace(-100, res.message.branch_w_pr[branch]);
|
||
|
var html = ' \
|
||
|
<a class="small label label-sm label-success" data-toggle="tooltip" \
|
||
|
href="' + url + '"\
|
||
|
title="' + branch +' is already in an opened pull-request">'
|
||
|
+ 'PR#' + res.message.branch_w_pr[branch] + ' </a> \
|
||
|
</div>';
|
||
|
console.log(html);
|
||
|
$('#branch-' + branch + ' .branch_del').prepend(html);
|
||
|
$('[data-toggle="tooltip"]').tooltip({placement : 'bottom'});
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
{% endif %}
|
||
|
});
|
||
|
</script>
|
||
|
{% endblock %}
|