2011-08-24 4 views
53

私はhttps://raw.github.com/.../master/.../file.jsにリンクしているgithub.comデモページを持っています変更するたびに.jsファイルをgh-pagesブランチにコピーする必要はありません。これは文句を言いIE以外のすべてのブラウザで動作します。rawgithub.comからjsを含む

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/

(マイナーアップデート - :) IEはもはや壊れているので、私は、.jsファイルを含めるには、この正確なインスタンスでGH-ページを変更していないが、それでもどんなフィードバックたいと思います)

答えて

14

私はIEを騙すのを手伝ってくれることはできません。あなたが探している角度からは不可能です(Githubの生のURLの目的ではないので、やめてください)。

ただし、変更をコミットしてgh-pagesに自動化して、簡単に作業を進めることができます。 post-commit hookでそれを実行して、gh-pagesブランチ内の関連するファイルを自動的に更新することができます。私はあなたのために先頭に設定VARSを指定しているものの、これは、一般的なスクリプトであることを

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

注:私は、特定のファイルの変更を監視し、別のブランチにそれらをコミットするようにpost-commitスクリプトを調理しました目的。 $WATCH_FILESは、index.html|js/jquery.jsなどの中括弧|で区切られたファイルのリストに設定できます。パスは、リポジトリのルートを基準にして指定する必要があります。

ご不明な点がありましたら教えてください。

5

Githubの生のURLは一般的なWebホストではありません。 pages.github.comのように、その情報を適切なホストにプッシュします。

+2

ええ、問題は、ページブランチにコピーしてファイルをコピーするためにマスターにコミットするたびに余分な作業が必要だということです。私はちょうど不要と思われるのでこれを避けようとしている –

0

私もこれを達成しようとしています。しかし、私は@shelhamerのソリューションを自分のコードベースで動作させるようには思えません。以下は、私はそれが働いて取得するために使用される更新後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/* \(.*\)/\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 

私は正規表現が正常に一致させるためにはgrepの使用を更新しなければならなかった(-Pが含まgrepの実装上の選択肢ではありませんでしたWindowsの場合はGit Bashシェルで)git pullgit push origin $DEST_BRANCHを追加します。ああ、私はディレクトリとファイルの空のシェルを事前に追加しなければなりませんでした(たぶんディレクトリは十分でしょうか?)。

これは実際にプッシュしているので、このスクリプトをポストコミットの代わりにポスト受信スクリプトに切り替えるほうが良いかもしれません。さもなければ、それをマスターにしたことのないghページにコードをプッシュすることができます。

59

https://rawgithub.com/サービスを試すことができます。 raw.github.comをrawgithub.comに置き換えてください。

UPDATE

Rawgithubは今Rawgitです:https://rawgit.com/と同様に生産CDNを追加しました。

+1

その場合あなたはすでにgithubとaffillatedでないサイトを使用していたので、同様にhttp://cdnjs.com/を使用するかもしれません –

+0

ありがとう、rawgithubは完璧です。 –

+2

[raw.githack.com](http://raw.githack.com)もご覧ください。そのアイデアは同じですが、少し速く動作するはずのplain-nginxの解決策です:) – neoascetic

6

raw.githack.comをご覧ください。このサービスのアイデアはrawgit.comからインスピレーションを受けています。私はちょうど、リクエストプロキシーのような単純なことのためにフレームワーク全体(node.js + express.js)を使用することは過度の仕掛けであり、nginxだけを使って同じものを作ったことに気付きました。

github/gistのURLにある "githubusercontent"ドメイン名チャンクを "githack"に置き換えれば完了です!

さらに、bitbucket.comをサポートします。ビットバケットドメイン全体をbb.githack.comに置き換えるだけです。

関連する問題