当您查看存储库的网页时,GitHub.com提供了一个有用的上游分支链接。例如:
我想要一个简单的方法来做相反的事情。当我查看上游的fork页面时,我想知道我是否已经分叉它并快速找到我的前叉。有一个简单的方法吗?
答案 0 :(得分:1)
我总是通过点击上游分支的网络图来摸索,我厌倦了它。
我写了一些Javascript,它会在你的用户名下面找到一个与你当前正在查看的存储库名称相同的存储库。它通过发出200
请求并检查var me = 'fgreg'
状态代码来执行此操作。
如果它在您的用户名下找到一个具有相同名称的存储库,它会认为它是一个分支并在页面上插入一个链接以便于访问。如果找不到,它什么都不做。
如果您想使用此代码,请确保将var HttpClient = function() {
this.get = function(aUrl, aCallback) {
var anHttpRequest = new XMLHttpRequest();
anHttpRequest.onreadystatechange = function() {
if (anHttpRequest.readyState == 4)
aCallback(anHttpRequest);
}
anHttpRequest.open( "HEAD", aUrl, true );
anHttpRequest.send( null );
}
}
if (!String.prototype.format) {
String.prototype.format = function() {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] != 'undefined'
? args[number]
: match
;
});
};
}
var client = new HttpClient();
var pathname = window.location.pathname
var author = pathname.split('/')[1];
var repoName = pathname.split('/')[2];
console.debug("Extracted {0}/{1} as repo name".format(author, repoName))
var me = 'fgreg'
if(author != me && repoName){
var forkedUrl = "https://github.com/{0}/{1}".format(me, repoName);
console.debug("Looking for repo at {0}".format(forkedUrl));
client.get(forkedUrl, function(anHttpRequest){
if(anHttpRequest.status == 200){
var newHtml = '<span class="text">looks like you have a fork: <a href="/{0}/{1}">{0}/{1}</a></span>'.format(me, repoName);
var forkElement = document.createElement("span")
forkElement.className = "fork-flag"
forkElement.innerHTML = newHtml
var elementPath = "//*[@id=\"js-repo-pjax-container\"]/div[1]/div/h1";
var element = document.evaluate(elementPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
console.debug("Found element {0}".format(element))
element.appendChild(forkElement)
}else{
console.debug("No repo found at {0}".format(forkedUrl));
}
});
}
更改为您的github用户名。
免责声明:我不是Javascript程序员,这可能不是高效的代码。
经过测试:启用了Injector 1.0.4扩展程序的Google Chrome版本64.0.3282.140(官方版本)(64位)
return this.Json(iil, System.Web.Mvc.JsonRequestBehavior.AllowGet);
这就是它最终看起来像: