包括来自raw.github.com的js

我有一个连接到https://raw.github.com/…/master/…/file.js的github.com演示页面,以便我不需要总是将.js文件复制到每当它改变时,都会转到gh-pages分支。 这工作在除了IE的每个浏览器,它抱怨:

SEC7112:来自https://raw.github.com/cwolves/jQuery-iMask/master/dist/jquery-imask-min.js的脚本由于MIMEtypes不匹配而被阻止

这个抱怨来源于文件被传送的事实:

 X-Content-Type-Options: nosniff Content-Type: text/plain 

我无法改变。

任何人有任何想法如何做到这一点? 不知何故,我可以链接到master分支的文件,而不必总是推到gh-pages分支?

实际页面: http : //cwolves.github.com/jQuery-iMask/

(次要更新 – 我改变了这个确切的实例gh页面,包括.js文件,所以IE不再破碎,但仍然会喜欢任何反馈:))

我不能帮助你欺骗IE,我想从这个angular度来看,你正在寻找什么是不可能的(也不鼓励,因为这不是Github的原始URL的目的)。

但是,您可以自动将更改提交给gh-pages并推动使您的生活更轻松。 您可以使用post-commit hook来自动更新gh-pages分支中的相关文件。 我编写了这样的post-commit脚本,监视某些文件的更改并将其提交给另一个分支:

 #!/bin/sh WATCH_BRANCH="master" WATCH_FILES="jquery-imask-min.js" DEST_BRANCH="gh-pages" # bail out if this commit wasn't made in the watched branch THIS_BRANCH=$(git branch --no-color | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'); if [ "$THIS_BRANCH" != "$WATCH_BRANCH" ]; then exit 0 fi # only update if watched files have changed in the latest commit CHANGED_FILES=$(git show --pretty="format:" --name-only $WATCH_BRANCH) if $(echo "$CHANGED_FILES" | grep "^$WATCH_FILES$" -q); then # checkout destination branch, then # checkout latest version of each watched file and add to index git checkout -q $DEST_BRANCH git pull -q SAVEIFS=$IFS IFS=$(echo -n "|") for file in $WATCH_FILES; do git checkout $WATCH_BRANCH -- $file git add $file > /dev/null done IFS=$SAVEIFS # commit with a chance to edit the message, then go back to watched branch LATEST_COMMIT=$(git rev-parse $WATCH_BRANCH) git commit -m "Also including changes from $WATCH_BRANCH's $LATEST_COMMIT" git push origin $DEST_BRANCH git checkout -q $WATCH_BRANCH fi 

请注意,这是一个通用脚本,尽pipe我已经为您的目的在顶部指定了configurationvariables。 $WATCH_FILES可以设置为用大括号|分隔的文件列表 如index.html|js/jquery.js 。 path必须相对于回购的根来指定。

如果您有任何疑问,请告诉我,如果脚本帮助您!

您可以尝试使用https://rawgithub.com/服务。; 只需将raw.github.comreplace为rawgithub.com。

UPDATE

Rawgithub现在是Rawgit: https ://rawgit.com/并且已经添加了一个生产cdn。

看看raw.githack.com 。 这个服务的想法来自于rawgit.com。 我只是意识到,使用整个框架(node.js + express.js)这样简单的事情,如请求代理过度使用,并使用nginx只做相同的东西。

将github / gisturl中的“githubusercontent”域名块replace为“githack”,就完成了!

此外,它支持bitbucket.com – 只需用bb.githack.comreplace整个bitbucket域。

Github的原始URL并不是一个通用的Web主机。 把这些东西推到适当的主机上,比如说pages.github.com。

我也试图做到这一点。 但是,我似乎无法从@shelhamer获得解决scheme在我的代码库中工作。 下面是我用来使其工作的更新的提交后脚本:

 #!/bin/sh WATCH_BRANCH="master" WATCH_FILES="jquery-imask-min.js" DEST_BRANCH="gh-pages" # bail out if this commit wasn't made in the watched branch THIS_BRANCH=$(git branch --no-color | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'); if [ "$THIS_BRANCH" != "$WATCH_BRANCH" ]; then exit 0 fi # only update if watched files have changed in the latest commit CHANGED_FILES=$(git show --pretty="format:" --name-only $WATCH_BRANCH) if $(echo "$CHANGED_FILES" | grep "^$WATCH_FILES$" -q); then # checkout destination branch, then # checkout latest version of each watched file and add to index git checkout -q $DEST_BRANCH git pull -q SAVEIFS=$IFS IFS=$(echo -n "|") for file in $WATCH_FILES; do git checkout $WATCH_BRANCH -- $file git add $file > /dev/null done IFS=$SAVEIFS # commit with a chance to edit the message, then go back to watched branch LATEST_COMMIT=$(git rev-parse $WATCH_BRANCH) git commit -m "Also including changes from $WATCH_BRANCH's $LATEST_COMMIT" git push origin $DEST_BRANCH git checkout -q $WATCH_BRANCH fi 

我不得不更新grep的使用,使正则expression式匹配成功(-P不是包含在Windows的Git Bash shell中的grep实现的选项),添加一个git pull和一个git push origin $DEST_BRANCH 。 噢,我必须事先添加一个空的目录和文件的shell(也许只是目录已经足够了?)。

由于这实际上是在进行推送,所以我认为最好将这个脚本切换为post-receive脚本而不是post-commit。 否则,你可能会推动代码到gh页面,从来没有成为主人[如果你select不推它]。