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 :))
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!
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.
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
.
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.
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].