git hooks
on 2014-12-09
git hooks
和其他版本控制系統一樣,當某些重要事件發生時,Git 有方法可以觸發自訂腳本。有兩組掛鉤(hooks):用戶端和伺服器端。用戶端掛鉤用於用戶端的操作,如提交和合併。伺服器端掛鉤用於 Git 伺服器端的操作,如接收被推送的提交。你可以為了各種不同的原因使用這些掛鉤,下面會講解其中一些。
git hooks 簡單的說就是在進行版本控管時可以再額外多做一些事
在以前我們公司在前端開發上是用前輩大大寫好的 hook 做一些事 但前輩大大們陸續離開後, 架構又改了 新專案沒法用原有的 hook 所以只好跳進來寫 hook 了
可以用來幹嘛?
Client side
- lint 檢查
- coding style 檢查
- 完善要推的 code
- 做自動化測試
- …
Server side
- deploy code to production
- auto build
- …
打算用來幹嘛?
身為一隻前端攻城獅, 只要顧好 client side 就好了 預計完成
- phpcs
- jshint
image trans to png8 ?multi-lang file check ?
Log
使用 pre-commit 在 commit 前檢查 使用 php 撰寫(基本上都可以指定用哪個程式語言寫 ex: php、ruby、python …)
#!/usr/bin/php
# first npm install -g jshint
# jshint
<?php
$error = false;
// $path = "~/miiitv_plus/";
$path = "";
exec("git diff --cached --name-only --diff-filter=ACM | grep '\.js'", $output_js, $return_var);
if (!empty($output_js))
{
foreach ($output_js as $file) {
$file_path = $path . $file;
if (!empty(shell_exec("jshint " . $file_path . "")))
{
echo $file_path;
echo "\n";
echo "--------------------";
echo "\n";
echo shell_exec("jshint " . $file_path . "");
echo "\n";
echo "====================";
$error = true;
}
}
}
# http://tedshd.logdown.com/posts/246406-php-install-phpcsphp-codesniffer
# phpcs
exec("git diff --cached --name-only --diff-filter=ACM | grep '\.php'", $output_php, $return_var);
if (!empty($output_php))
{
foreach ($output_php as $file) {
$file_path = $path . $file;
if (!empty(shell_exec("phpcs " . $file_path . "")))
{
echo $file_path;
echo "\n";
echo "--------------------";
echo "\n";
echo shell_exec("phpcs " . $file_path . "");
echo "\n";
echo "====================";
$error = true;
}
}
}
if ($error)
{
exit(1);
}
else
{
exit(0);
}
?>
不過使用 phpcs 會太悲催, 就跟用 jslint 一樣, 所以之後又請後端改成適合的 sniffer
Git - GitHub gh-pages
on 2014-08-16
Git - GitHub gh-pages
有時在 GitHub 上亂晃 常常發現一個問題就是有一些很有趣的前端實作, 或別人寫的一些功能沒有所謂的 demo page(當然有些是不需要 demo page) 我不知道是把 GitHub 當成備份的 codebase 或是覺得 demo 不重要所以沒放, 又或者是根本不知道要怎麼放 But 這都不重要 其實 GitHub 提供一個 gh-pages 的 branch(或者說是功能)可以讓我們這些前端攻城獅快速的建出個 demo page(但不包含後端功能)
如何使用?
1. 從 master 建出名為 gh-pages
的 branch
git branch gh-pages
2. 切到 gh-pahes 的 branch
git checkout gh-pages
3. 把 gh-pages git push
上 GitHub
git push
因為剛建出新的 branch, 該 branch 還未在 GitHub 上所以會提示你要用 git push --set-upstream origin gh-pages
4. 快樂的去 GitHub 拿網址
gh-pages 的 url 結構一律都是 http:// + <GitHub user name>
+ .github.io/ + <repository name>
5. 等等.. 網頁沒東西?
需注意的是該 url root 的 html 必須是 index.html
才會出預設的網頁, 其他的檔案路徑都是建立在該 url 上
6. Update
其實後續維護不太容易, 必須要熟悉 git 才知道要怎麼做
通常會在 master
or 切出個 dev
來開發, 等開發完在 merge
所以在持續開發時, 要更新 demo page, 就必須要在 gh-pages merge 要更新的 branch
據說好像 grunt 還是 gulp 有套件可以自動 build, 但還沒試驗就是了