| |
@@ -0,0 +1,255 @@
|
| |
+ {% extends "repo_master.html" %}
|
| |
+
|
| |
+ {% block title %}Commit - {{
|
| |
+ repo.namespace + '/' if repo.namespace }}{{ repo.name }} - {{ commitid }}{% endblock %}
|
| |
+ {% set tag = "commit" %}
|
| |
+
|
| |
+ {% block repo %}
|
| |
+
|
| |
+ {% set split_message = commit.message.split('\n') %}
|
| |
+ <div class="header">
|
| |
+ <h4>
|
| |
+ <span class="label label-default" title="{{ commitid }}">Commit {{ commitid|short }}</span>
|
| |
+ <span>{{ split_message[0] }}</span>
|
| |
+ <div class="pull-xs-right btn-group">
|
| |
+ <a class="btn btn-secondary btn-sm" href="{{ url_for(
|
| |
+ 'view_raw_file',
|
| |
+ repo=repo.name,
|
| |
+ username=username,
|
| |
+ namespace=repo.namespace,
|
| |
+ identifier=commitid) }}" title="View as raw">raw</a>
|
| |
+ <a class="btn btn-secondary btn-sm" href="{{ url_for(
|
| |
+ 'view_commit_patch',
|
| |
+ repo=repo.name,
|
| |
+ username=username,
|
| |
+ namespace=repo.namespace,
|
| |
+ commitid=commitid) }}">patch</a>
|
| |
+ <a class="btn btn-secondary btn-sm" href="{{ url_for(
|
| |
+ 'view_tree', username=username, namespace=repo.namespace,
|
| |
+ repo=repo.name, identifier=commitid) }}">tree</a>
|
| |
+ {% if (commit.parents|length) == 1 %}
|
| |
+ <a class="btn btn-secondary btn-sm" title={{commit.parents[0].oid.hex}} href="{{ url_for(
|
| |
+ 'view_commit',
|
| |
+ repo=repo.name,
|
| |
+ username=username,
|
| |
+ namespace=repo.namespace,
|
| |
+ commitid=commit.parents[0].oid.hex) }}">parent</a>
|
| |
+ {% elif (commit.parents|length) > 1 %}
|
| |
+ <div class="btn-group" role="group">
|
| |
+ <button id="parentsDrop" type="button" class="btn btn-secondary btn-sm dropdown-toggle"
|
| |
+ data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
| |
+ parents
|
| |
+ </button>
|
| |
+ <div class="dropdown-menu dropdown-menu-right" aria-labelledby="parentsDrop">
|
| |
+ {% for parent in commit.parents %}
|
| |
+ <a class="dropdown-item" href="{{ url_for(
|
| |
+ 'view_commit',
|
| |
+ repo=repo.name,
|
| |
+ username=username,
|
| |
+ namespace=repo.namespace,
|
| |
+ commitid=parent.oid.hex)
|
| |
+ }}" class="commitid">{{ parent.oid.hex }}</a>
|
| |
+ {% endfor %}
|
| |
+ </div>
|
| |
+ </div>
|
| |
+ {% endif %}
|
| |
+ </div>
|
| |
+ </h4>
|
| |
+ <h5 class="text-muted">
|
| |
+ {% if (commit.author|author2user) == (commit.committer|author2user) %}
|
| |
+ <a href="#" id="diff_list_link">{{ diff|count }} file{{'s' if (diff|count) > 1 }}</a>
|
| |
+ {% if (commit.parents|length) == 1 %}
|
| |
+ Authored and Committed by {{ commit.author|author2user|safe }}
|
| |
+ {% else %}
|
| |
+ Merged and Committed by {{ commit.author|author2user|safe }}
|
| |
+ {% endif %}
|
| |
+ <span data-toggle="tooltip" title="{{ commit.commit_time|format_ts }}">
|
| |
+ {{ commit.commit_time|humanize }}
|
| |
+ </span>
|
| |
+ {% else %}
|
| |
+ <a href="#" id="diff_list_link">{{ diff|count }} file{{'s' if (diff|count) > 1 }}</a>
|
| |
+ {% if (commit.parents|length) == 1 %}
|
| |
+ Authored by {{ commit.author|author2user|safe }}
|
| |
+ {% else %}
|
| |
+ Merged by {{ commit.author|author2user|safe }}
|
| |
+ {% endif %}
|
| |
+ <span data-toggle="tooltip" title="{{ commit.commit_time|format_ts }}">
|
| |
+ {{ commit.commit_time|humanize }}
|
| |
+ </span>,
|
| |
+ Committed by {{ commit.committer|author2user|safe }}
|
| |
+ <span data-toggle="tooltip" title="{{ commit.commit_time|format_ts }}">
|
| |
+ {{ commit.commit_time|humanize }}
|
| |
+ </span>,
|
| |
+ {% endif %}
|
| |
+ </h5>
|
| |
+ </div>
|
| |
+ <div id="msg_banner"></div>
|
| |
+
|
| |
+ <div class="list-group" id="diff_list" style="display:none;">
|
| |
+ {% set filecount = 0 %}
|
| |
+ {% for patch in diff %}
|
| |
+ {% set filecount = filecount + 1 %}
|
| |
+ {% if patch|hasattr('new_file_path') %}
|
| |
+ <a class="list-group-item" href="#diff-file-{{filecount}}">
|
| |
+ {{ patch.new_file_path|unicode}}
|
| |
+ {% elif patch|hasattr('delta') %}
|
| |
+ <a class="list-group-item" href="#diff-file-{{filecount}}">
|
| |
+ {{ patch.delta.new_file.path|unicode }}
|
| |
+ {% endif %}
|
| |
+ <div class="pull-xs-right">
|
| |
+ {% if not patch.is_binary %}
|
| |
+ {% if patch|hasattr('additions') %}
|
| |
+ {% if (patch.additions + patch.deletions) %}
|
| |
+ <span style="width: {{ (100.0 * patch.additions / (patch.additions + patch.deletions))|round|int }}%">
|
| |
+ {% if patch.additions > 0 %}<span class="label label-success">+{{ patch.additions }}</span>{% endif %}
|
| |
+ {% if patch.deletions > 0 %}<span class="label label-danger">-{{ patch.deletions }}</span>{% endif %}
|
| |
+ </span>
|
| |
+ {% endif %}
|
| |
+ {% else %}
|
| |
+ {% if (patch.line_stats[1] + patch.line_stats[2]) %}
|
| |
+ <span style="width: {{ (100.0 * patch.line_stats[1] / (patch.line_stats[1] + patch.line_stats[2]))|round|int }}%">
|
| |
+ {% if patch.line_stats[1] > 0 %}<span class="label label-success">+{{ patch.line_stats[1] }}</span>{% endif %}
|
| |
+ {% if patch.line_stats[2] > 0 %}<span class="label label-danger">-{{ patch.line_stats[2] }}</span>{% endif %}
|
| |
+ </span>
|
| |
+ {% endif %}
|
| |
+ {% endif %}
|
| |
+ {% endif %}
|
| |
+ </div>
|
| |
+ {{ patch.new_file_path|unicode }}
|
| |
+ </a>
|
| |
+ {% endfor %}
|
| |
+ </div>
|
| |
+
|
| |
+ <div class="m-y-1">
|
| |
+ {% if split_message|length > 1 %}
|
| |
+ <pre class="commit_message_body">
|
| |
+ {% for message in split_message %}
|
| |
+ {{ message }}
|
| |
+ {% endfor %}
|
| |
+ </pre>
|
| |
+ {% endif %}
|
| |
+ </div>
|
| |
+
|
| |
+ {% set filecount = 0 %}
|
| |
+ {% for patch in diff %}
|
| |
+ {% set filecount = filecount + 1 %}
|
| |
+ <div class="card" id="diff-file-{{filecount}}">
|
| |
+ <div class="card-header">
|
| |
+ {% if patch|hasattr('new_file_path') %}
|
| |
+ <a href="{{ url_for(
|
| |
+ 'view_file', username=username, namespace=repo.namespace,
|
| |
+ repo=repo.name, identifier=commitid,
|
| |
+ filename=patch.new_file_path) }}" title="View file as of {{ commitid|short }}">
|
| |
+ {{ patch.new_file_path|unicode }}
|
| |
+ </a>
|
| |
+ {% elif patch|hasattr('delta') %}
|
| |
+ <a href="{{ url_for(
|
| |
+ 'view_file', username=username, namespace=repo.namespace,
|
| |
+ repo=repo.name, identifier=commitid,
|
| |
+ filename=patch.delta.new_file.path) }}" title="View file as of {{ commitid|short }}">
|
| |
+ {{ patch.delta.new_file.path|unicode }}
|
| |
+ </a>
|
| |
+ {% endif %}
|
| |
+ {% if not patch.is_binary %}
|
| |
+ {% if patch|hasattr('additions') %}
|
| |
+ {% if (patch.additions + patch.deletions) %}
|
| |
+ <span style="width: {{ (100.0 * patch.additions / (patch.additions + patch.deletions))|round|int }}%">
|
| |
+ {% if patch.additions > 0 %}<span class="label label-success">+{{ patch.additions }}</span> {% endif %}
|
| |
+ {% if patch.deletions > 0 %}<span class="label label-danger">-{{ patch.deletions }}</span>{% endif %}
|
| |
+ </span>
|
| |
+ {% endif %}
|
| |
+ {% else %}
|
| |
+ {% if (patch.line_stats[1] + patch.line_stats[2]) %}
|
| |
+ <span style="width: {{ (100.0 * patch.line_stats[1] / (patch.line_stats[1] + patch.line_stats[2]))|round|int }}%">
|
| |
+ {% if patch.line_stats[1] > 0 %}<span class="label label-success">+{{ patch.line_stats[1] }}</span> {% endif %}
|
| |
+ {% if patch.line_stats[2] > 0 %}<span class="label label-danger">-{{ patch.line_stats[2] }}</span>{% endif %}
|
| |
+ </span>
|
| |
+ {% endif %}
|
| |
+ {% endif %}
|
| |
+ {% endif %}
|
| |
+ </div>
|
| |
+
|
| |
+ {% if patch.is_binary %}
|
| |
+ <p class="noresult">Binary diffs cannot be rendered.</p>
|
| |
+ {% else %}
|
| |
+ {% autoescape false %}
|
| |
+ {{ patch|patch_to_diff|html_diff}}
|
| |
+ {% endautoescape %}
|
| |
+ {% endif %}
|
| |
+ </div>
|
| |
+
|
| |
+ {% endfor %}
|
| |
+
|
| |
+ {% endblock %}
|
| |
+
|
| |
+
|
| |
+
|
| |
+ {% block jscripts %}
|
| |
+ {{ super() }}
|
| |
+ <script type="text/javascript">
|
| |
+ $(function(){
|
| |
+ $('#diff_list_link').click(function(){
|
| |
+ $('#diff_list').toggle();
|
| |
+ });
|
| |
+ });
|
| |
+ $.ajax({
|
| |
+ url: '{{ url_for("internal_ns.get_branches_of_commit") }}' ,
|
| |
+ type: 'POST',
|
| |
+ data: {
|
| |
+ repo: "{{ repo.name }}",
|
| |
+ repouser: "{{ repo.user.user if repo.is_fork else '' }}",
|
| |
+ namespace: "{{ repo.namespace }}",
|
| |
+ commit_id: "{{ commitid }}",
|
| |
+ csrf_token: "{{ form.csrf_token.current_token }}",
|
| |
+ },
|
| |
+ dataType: 'json',
|
| |
+ success: function(res) {
|
| |
+ if (res.branches.length == 0){
|
| |
+ return;
|
| |
+ }
|
| |
+ var _br = '';
|
| |
+ for (var i = 0; i < res.branches.length; ++i) {
|
| |
+ if (_br.length > 0){
|
| |
+ _br += ', ';
|
| |
+ }
|
| |
+ _br += res.branches[i]
|
| |
+ }
|
| |
+ var el = $('#diff-file-1');
|
| |
+ if (!el){
|
| |
+ return;
|
| |
+ }
|
| |
+ el.before(
|
| |
+ '<div class=""><span class="oi" data-glyph="fork"></span> '
|
| |
+ + _br + '</div>');
|
| |
+ }
|
| |
+ });
|
| |
+ {% if config.get('RESULTSDB_URL') %}
|
| |
+ var _base_url = '{{ config.get("RESULTSDB_URL").rstrip("/") }}/api/v2.0/';
|
| |
+ var _url = _base_url
|
| |
+ + "results/latest?rev=" + '{{ commitid }}'
|
| |
+ + "&repo=" + '{{ repo.name }}'
|
| |
+ + "&namespace=" + '{{ repo.namespace }}'
|
| |
+ + "&testcases=org.centos.prod.ci.pipeline.complete";
|
| |
+ $.ajax({
|
| |
+ url: _url ,
|
| |
+ type: 'GET',
|
| |
+ dataType: 'jsonp',
|
| |
+ success: function(res) {
|
| |
+ var el = $('#msg_banner');
|
| |
+ ref_url = res.data[0]['ref_url'];
|
| |
+ status = res.data[0]['outcome'];
|
| |
+ var _lbl = 'label-danger';
|
| |
+ if (status == 'PASSED') {
|
| |
+ _lbl = 'label-success';
|
| |
+ }
|
| |
+ var html = '<div class="pull-xs-right">'
|
| |
+ + '<a class="small label label-sm ' + _lbl + '" data-toggle="tooltip"'
|
| |
+ + 'href="' + ref_url + '"'
|
| |
+ + 'title="{{ commitid }} ' + status +' the Fedora Atomic CI pipeline">'
|
| |
+ + status + ' Atomic CI</a></div>';
|
| |
+ el.html(html);
|
| |
+ }
|
| |
+ });
|
| |
+ {% endif %}
|
| |
+ </script>
|
| |
+ {% endblock %}
|
| |