Подтвердить что ты не робот

Включение 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 больше не сломан, но все равно понравится любая обратная связь:))

4b9b3361

Ответ 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-страницы, которые никогда не делали его мастером [если вы не хотите его нажимать].