В том числе js от raw.github.com


у меня есть github.com демо-страница, которая ссылается наhttps://raw.github.com/.../master/.../file.js так что мне не нужно всегда копировать до gh-pages ветвь каждый раз, когда он меняется. Это работает в каждом браузере, кроме IE, который жалуется:

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

5 55

5 ответов:

Я не могу помочь вам обмануть IE, и я думаю, что с этой точки зрения то, что вы ищете, невозможно (и обескуражено, поскольку это не цель необработанных URL-адресов Github).

тем не менее, вы можете автоматизировать фиксацию изменений в 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/* \(.*\)//');
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

обратите внимание, что это общий скрипт, хотя я указал config vars в верхней части для ваших целей. $WATCH_FILES может быть установлен в список файлов, разделенных фигурными скобками | например index.html|js/jquery.js. Пути должны быть указаны относительно корня репозитория.

Дайте мне знать, если у вас есть какие-либо вопросы, и если сценарий поможет вам!

вы можете попробовать использовать https://rawgithub.com/ сервис. Просто замените raw.github.com с помощью rawgithub.com.

обновление

Rawgithub теперь Rawgit:https://rawgit.com/ и добавил производство cdn, а также.

взгляните на raw.githack.com. Идея этого сервиса вдохновлена rawgit.com я просто понял, что с помощью целого фреймворка (node.js + express.js) для такой простой вещи, как запросы проксирования является чрезмерным, и сделал тот же материал, используя только nginx.

замените доменное имя" githubusercontent "в своем URL-адресе GitHub/gist на" githack", и все готово!

кроме того, он поддерживает bitbucket.com - просто замените весь оба домена с bb.githack.com.

необработанные URL-адреса Github не предназначены для общего веб-узла. Отодвиньте этот материал к правильному хозяину, как говорят pages.github.com.

Я пытаюсь добиться этого. Однако я не могу получить решение от @shelhamer для работы в моей кодовой базе. Ниже приведен обновленный скрипт крючка после фиксации, который я использовал, чтобы заставить его работать:

#!/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/* \(.*\)//');
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, чтобы сделать регулярное выражение успешно совпадающим (-P не был опцией в реализации grep, включенной в оболочку Git Bash для Windows), добавьте git pull и git push origin $DEST_BRANCH. О, и мне пришлось добавить пустую оболочку из каталогов и файлов заранее (может быть, просто каталогов хватило бы?).

Так как это на самом деле делает толчок, я думаю, что может быть лучше переключить этот скрипт на сценарий post-receive вместо post-commit. В противном случае вы можете нажать код на gh-страницы, которые никогда не попадали в master [если вы решите не нажимать его].