web-dev-qa-db-fra.com

Y compris js de raw.github.com

J'ai une page de démonstration github.com qui est liée à https://raw.github.com/.../master/.../file.js pour que je n'aie pas besoin de toujours copier le .js fichier sur le gh-pages branche à chaque changement. Cela fonctionne dans tous les navigateurs sauf IE qui se plaint:

SEC7112: Le script de https://raw.github.com/cwolves/jQuery-iMask/master/dist/jquery-imask-min.js a été bloqué en raison d'une incompatibilité de type MIME

Cette plainte provient du fait que le dossier est transféré avec:

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

que je ne peux pas changer.

Quelqu'un a des idées sur la façon d'accomplir cette même chose? D'une certaine manière, me permettant de créer un lien vers le fichier dans la branche master sans avoir à toujours le pousser vers le gh-pages branche?

Page réelle: http://cwolves.github.com/jQuery-iMask/

(Mise à jour mineure - j'ai changé les pages gh dans cette instance exacte pour inclure le fichier .js, donc IE n'est plus cassé, mais j'aimerais quand même avoir des commentaires :))

55
Mark Kahn

Je ne peux pas vous aider à tromper IE, et je pense que sous cet angle, ce que vous recherchez est impossible (et découragé, car ce n'est pas le but des URL brutes de Github).

Cependant, vous pouvez automatiser la validation des modifications dans gh-pages et en poussant pour vous faciliter la vie. Vous pouvez le faire avec un post-commit hook pour mettre à jour les fichiers appropriés dans le gh-pages branche automatiquement. J'ai préparé un tel post-commit script qui surveille les modifications apportées à certains fichiers et les valide dans une autre branche:

#!/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

Notez qu'il s'agit d'un script général, bien que j'aie spécifié les variables de configuration en haut pour vos besoins. $WATCH_FILES peut être défini sur une liste de fichiers délimités par des accolades | tel que index.html|js/jquery.js. Les chemins doivent être spécifiés par rapport à la racine du référentiel.

Faites-moi savoir si vous avez des questions et si le script vous aide!

14
shelhamer

Vous pouvez essayer d'utiliser le service https://rawgit.com/ . Remplacez simplement raw.github.com par rawgit.com

[~ # ~] mise à jour [~ # ~]

Le service Rawgit (ancien Rawgithub) a été fermé.

RawGit a atteint la fin de sa durée de vie utile 8 octobre 2018

Les référentiels GitHub qui ont diffusé du contenu via RawGit au cours du dernier mois continueront d'être diffusés jusqu'au moins octobre 2019. Les URL des autres référentiels ne sont plus diffusées.

Si vous utilisez actuellement RawGit, veuillez cesser de l'utiliser dès que possible.

62
H Sampat

Jetez un œil à raw.githack.com . L'idée de ce service est inspirée de rawgit.com. Je viens de réaliser que l'utilisation d'un framework entier (node.js + express.js) pour une chose aussi simple que le proxy de requêtes est exagéré, et j'ai fait les mêmes choses en utilisant uniquement nginx.

Remplacez le morceau de nom de domaine "githubusercontent" dans votre URL github/Gist par "githack" et vous avez terminé!

En outre, il prend en charge bitbucket.com - remplacez simplement le domaine bitbucket entier par bb.githack.com.

7
neoascetic

Les URL brutes de Github ne sont pas conçues pour être un hôte Web générique. Envoyez ces informations à l'hôte approprié, par exemple pages.github.com.

6
Tekkub

J'essaie également d'y parvenir. Cependant, je n'arrive pas à obtenir la solution de @shelhamer pour travailler dans ma base de code. Voici le script de hook post-commit mis à jour que j'ai utilisé pour le faire fonctionner:

#!/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

J'ai dû mettre à jour l'utilisation de grep pour que la regex corresponde avec succès (-P n'était pas une option sur l'implémentation grep incluse dans Git Bash Shell pour Windows), ajoutez un git pull et un git Push Origin $DEST_BRANCH. Oh, et j'ai dû ajouter un shell vide des répertoires et des fichiers à l'avance (peut-être que les répertoires auraient suffi?).

Puisqu'il s'agit en fait d'un push, je pense qu'il vaut peut-être mieux passer ce script à un script de post-réception au lieu de post-commit. Sinon, vous pourriez pousser du code vers des pages gh qui ne l'ont jamais transformé en maître [si vous choisissez de ne pas le pousser].

0
James M. Greene