improved GitLab blame

add link to skip a certain commit

当前为 2019-07-31 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name improved GitLab blame
// @namespace https://franklinyu.gitlab.io
// @description add link to skip a certain commit
// @version 0.1
// @match https://gitlab.com/*/blame/*
// @grant none
// ==/UserScript==

if (!Array.prototype.last){
  Array.prototype.last = function() {
    return this[this.length - 1]
  }
}

const projectName = encodeURIComponent(location.pathname.split('/blame')[0].slice(1))
const commits = document.getElementsByClassName('commit-sha')

;(async () => {
  for (const commit of commits) {
    const sha1 = commit.href.split('/').last()
    const resp = await fetch(`https://gitlab.com/api/v4/projects/${projectName}/repository/commits/${sha1}`)
    const jsonResp = await resp.json()
    if (jsonResp.parent_ids.length === 1) {
      const anchor = document.createElement('a')
      anchor.href = location.href.replace(/\/blame\/[\w-]+\//, `/blame/${jsonResp.parent_ids[0]}/`)
      anchor.innerText = 'prev'
      const floatRight = document.createElement('div')
      floatRight.classList.add('float-right')
      floatRight.append(anchor, '\u00A0')
      commit.parentElement.parentElement.nextElementSibling.append(floatRight)
    }
  }
})()