Blob Blame Raw
{% extends "repo_master.html" %}

{% block title %}Commit - {{
    repo.namespace + '/' if repo.namespace }}{{ repo.name }} - {{ commitid }}{% endblock %}
{% set tag = "commit"%}

{% block repo %}

{% set splitted_message = commit.message.split('\n') %}
<div class="row">
  <div class="col">
      {% block overviewtabs %}{{ super() }}{% endblock %}
  </div>
  <div class="col-10">
    <div class="header">
      <h4>
        <span class="label label-default" title="{{ commitid }}">Commit {{ commitid|short }}</span>
        <span>{{ splitted_message[0] }}</span>
        <div class="pull-xs-right btn-group">
          <a class="btn btn-secondary btn-sm" href="{{ url_for(
            'ui_ns.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(
            'ui_ns.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(
            'ui_ns.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(
            'ui_ns.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(
                    'ui_ns.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 class="list-group" id="diff_list" style="display:none;">
      {% set filecount = 0 %}
      {% for patch in diff %}
          {% set filecount = filecount + 1 %}
            <a class="list-group-item" href="#diff-file-{{filecount}}">
              {{  patch.delta.new_file.path | unicode }}
          <div class="pull-xs-right">
            {% if not patch.is_binary  %}
            {% 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 %}
          </div>
          {% if patch | hasattr('new_file_path') %}
            {{ patch.new_file_path | unicode }}
          {% elif patch | hasattr('delta') %}
            {{  patch.delta.new_file.path | unicode }}
          {% endif %}
        </a>
      {% endfor %}
    </div>

    <div class="m-y-1">
        {% if splitted_message|length > 1 %}
        <pre class="commit_message_body">
            {% for message in splitted_message %}
    {{ message }}
            {% endfor %}
        </pre>
        {% endif %}
    </div>

    <section class="list-group" id="flag_list">
      <div class="card" id="pr_flags">
          <ul class="list-group list-group-flush">
            {% for flag in flags %}
              <li class="list-group-item">
                <div>
                  <span>
                    <a href="{{ flag.url }}">{{ flag.username }}</a>
                  </span>
                  <div class="pull-xs-right">
                    <span class="label {{ flag | flag2label }}">
                      {{- flag.status -}}
                      {%- if flag.percent %} ({{ flag.percent }}%) {%- endif -%}
                    </span>
                  </div>
                </div>
                <small><div class="clearfix">
                    <span>{{ flag.comment }}</span>
                    <div title="{{ flag.date_created }}" class="pull-xs-right">
                    {{ flag.date_created | humanize }}</div>
                </div>
                </small>
              </li>
            {% endfor %}
          </ul>
        </div>
    </section>

    {% set filecount = 0 %}
    {% for patch in diff %}
      {% set filecount = filecount + 1 %}
    <div class="card" id="diff-file-{{filecount}}">
      <div class="card-header">
          <a href="{{ url_for(
              'ui_ns.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>
            {% if not patch.is_binary  %}
              {% 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 %}
      </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>
  </div>
</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 if repo.namespace else '' }}",
          commit_id: "{{ commitid }}",
          csrf_token: "{{ confirmationform.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=""><i class="fa fa-code-fork"></i> '
                + _br + '</div>');
        }
      });
    </script>
{% endblock %}