1

gh-pagesコミットするときはいつでも、コミットハッシュとコミットメッセージの最初の数文字をブランチ内のファイルに自動的に挿入したいと思いますmaster

現在このpost-commitフックを使用しています:

#!/bin/bash
#Ensures we are in master branch
[ `git rev-parse --abbrev-ref HEAD` != "master" ] && exit 1
git checkout gh-pages
git merge master
# update the js file with commit identification information from git
# I can't seem to get this to work without generating a *_bak file. Whatever.
# I have a section in my source that has delimiters #% %# that I use to stuff the
# git commit into, so I can view the version of source I am testing on my device
# very easily (you can't imagine how much more definite and efficient this is compared
# to what we do at my work)
sed -i _bak "s/#%.*%#/#% `git log master -1 --format="%h %s"` %#/" source.js
git commit -a -m"this commit made by a script"
git checkout master

これをフックに変換することcommit-msgで、生成される余分なコミットの量を減らすことができるとは思えません(2つはマスターをgh-pagesにマージし、もう1つはマスターコミットに使用したcommit-msgをファイルに書き込みます)でコミットを実行するときはいつでもmaster、少なくともcommit -nforを実行することで簡単にスキップできます--no-verifyが、post-commitフックを使用すると、フックファイルのexecフラグを設定解除して、一時的に無効にする必要があります。

これは機能しますか?私はそれを試してみるべきだと思います。しかし、Gitは何をしますか?私のbashスクリプトが戻り値0を発行する限り、コミットの実行に進みますか?

4

2 に答える 2

0

それが機能しない場合、フックの解決策は、(他のリポジトリを参照するために)gitコマンドのオプションを使用して(すでにチェックアウトされているgh-pages)別のローカルリポジトリで同じコマンドを実行することです。--git-dir--work-tree

次に、そのブランチをリポジトリにフェッチします(同じフック内にあります)。


2016年8月の更新:よりシンプルなGitHub Pages公開により、ページファイルを同じブランチのサブフォルダーに保持できるようになりました(不要になりましgh-pagesた)。

これで、リポジトリ設定でソースを選択でき、GitHubPagesがそこでコンテンツを検索します。

したがって、同じブランチのサブフォルダのコンテンツを今すぐ更新するだけで済みます。

于 2013-01-11T07:14:59.613 に答える
0

コミットは大きな問題ではありません。それ自体を実際に使用することはできませんがgit commit、配管コマンドを使用してコミットを作成できます (これにより、実際に作業ツリーに触れることなく、別のインデックス ファイルを使用して別のブランチにコミットを追加できます)。より大きな問題はmergeです。これは、失敗してツリーが手動の介入を必要とする状態のままになる可能性があるためです。

于 2013-01-11T09:21:44.963 に答える