Включение js из raw.github.com
У меня есть демонстрационная страница github.com, которая ссылается на https://raw.github.com/.../master/.../file.js, так что я не знаю, t всегда нужно копировать файл .js
в ветвь gh-pages
при каждом изменении. Это работает в каждом браузере, кроме IE, который жалуется:
SEC7112: Script из https://raw.github.com/cwolves/jQuery-iMask/master/dist/jquery-imask-min.js был заблокирован из-за несоответствия типа mime
Эта жалоба исходит из того факта, что файл передается с помощью:
X-Content-Type-Options: nosniff
Content-Type: text/plain
который я не могу изменить.
У кого-нибудь есть идеи, как это сделать? Как-то разрешить мне ссылаться на файл в ветке master
без необходимости всегда вставлять его в ветвь gh-pages
?
Фактическая страница: http://cwolves.github.com/jQuery-iMask/
(Небольшое обновление - я изменил gh-страницы в этом точном экземпляре, чтобы включить файл .js, поэтому IE больше не сломан, но все равно понравится любая обратная связь:))
Ответы
Ответ 1
Я не могу помочь вам с использованием IE, и я думаю, что с этой точки зрения то, что вы ищете, невозможно (и обескуражено, поскольку это не является целью URL-адресов Github).
Однако вы можете автоматизировать внесение изменений в gh-pages
и нажатие, чтобы сделать вашу жизнь проще. Вы можете сделать это с помощью post-commit hook
, чтобы автоматически обновлять соответствующие файлы в ветке gh-pages
. Я приготовил такой post-commit
script, который следит за изменениями определенных файлов и связывает их с другой ветвью:
#!/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 $LATEST_COMMIT"
git push origin $DEST_BRANCH
git checkout -q $WATCH_BRANCH
fi
Обратите внимание, что это общий script, хотя я указал конфигурационные vars наверху для ваших целей. $WATCH_FILES
может быть установлен в список файлов, ограниченных фигурными скобками |
, таких как index.html|js/jquery.js
. Пути должны быть указаны относительно корня репо.
Сообщите мне, если у вас есть какие-либо вопросы, и если script поможет вам!
Ответ 2
Вы можете попробовать использовать службу https://rawgithub.com/.
Просто замените raw.github.com на rawgithub.com.
UPDATE
Rawgithub теперь Rawgit: https://rawgit.com/ и добавил также cdn производства.
Ответ 3
Посмотрите raw.githack.com. Идея этого сервиса вдохновлена rawgit.com. Я просто понял, что использование всей структуры (node.js + express.js) для такой простой вещи, как проксирование запросов, является излишним и делает тот же материал, только с использованием nginx.
Замените кусок доменного имени "githubusercontent" в вашем github/gist URL с помощью "githack", и все готово!
Кроме того, он поддерживает bitbucket.com - просто замените весь домен bitbucket на bb.githack.com
.
Ответ 4
URL-адреса Github не предназначены для общего веб-хоста. Надавите это на правильный хост, например, на страницы .github.com.
Ответ 5
Я также пытаюсь добиться этого. Тем не менее, я не могу найти решение от @shelhamer для работы в моей кодовой базе. Ниже приведен обновленный крюк post-commit script, который я использовал для его работы:
#!/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 $LATEST_COMMIT"
git push origin $DEST_BRANCH
git checkout -q $WATCH_BRANCH
fi
Мне нужно было обновить использование grep, чтобы регулярное выражение успешно совпадало (-P не был вариантом реализации grep, включенным в оболочку Git Bash для Windows), добавьте git pull
и a git push origin $DEST_BRANCH
. О, и мне пришлось добавить пустую оболочку каталогов и файлов заранее (возможно, достаточно было бы каталогов?).
Так как это действительно делает push, я думаю, что лучше переключить этот script на post-receive script вместо post-commit. В противном случае вы могли бы нажимать код на gh-страницы, которые никогда не делали его мастером [если вы не хотите его нажимать].