放过Pygments,让Prism来给Jekyll博客加上代码高亮

jekyll目前至少支持Redcarpet和RDiscount以及kramadown几种类markdown引擎, rdiscount 是基于C实现的 markdown 引擎 discount 的ruby调用,优点不用说也知道就是快。缺点是扩展性差(不过要扩展的功能也能通过jekyll的插件来实现),关于disc...

git hook中的$GIT_DIR

一直使用githook post-update来部署我的jekyll博客,每次push到远程git仓库的时候,在vps上的生产目录会自动更新和重新生成页面和静态资源, post-update文件是这样的:

#!/bin/usr/zsh

branchName=$(git rev-parse --symbolic --abbrev-ref $1)
HOME=/home/******
BLOG_DIR=$HOME/*******

cd $BLOG_DIR
git pull origin $branchName

if [ $branchName = "master" ]; then
[ -s $HOME/.nvm/nvm.sh ] && . $HOME/.nvm/nvm.sh # This loads NVM
export PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
nvm use 113
$HOME/.rvm/bin/rvm use ruby-2.0.0
jekyll build
make front
fi

exec git update-server-info

但是执行的时候会出现一个奇怪的问题:

Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 281 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: fatal: Not a git repository: '.'
...

最后的这一句表示出错了,而且git pull也没有正确进行。

有人在这个问题中谈到解决方法,改进的部分在这里:

cd $BLOG_DIR || exit
unset GIT_DIR
git pull origin $branchName

之后果然就可以正确地pull代码了。

git小技巧七七八八

利用git rev-parse

刚来公司的时候,电脑上的项目运行环境还没有搭配好,一些前端的改动只能推到测试服务器上才能看见效果。因此在开发的时候要频繁地切换和合并开发分支到与测试环境的部署相关联的测试分支上,频繁地手敲命令checkout -> pull -> 等代码p...pu...pul...pulled-> merge-> oh conflict!-> fix conflict -> push -> checkout 然后才查看页面继续开发。 前面的各种点点点急刹人,于是我写了个小脚本,省下了敲分支名的时间:

#!/bin/bash
cur_branch=`git rev-parse --abbrev-ref HEAD`
git checkout develop && git pull && git merge $cur_branch && git push origin && git checkout $cur_branch

更多命令参数用 man 或者看git-scm 中相关内容

Web开发国内常用源

国内配置开发环境的时候经常会要用到的这几个源, thanks to G*F*W ,我们自行get找国内镜像的能力: Python PyPI (pip) $ nano ~/.pip/pip.conf 添加 [global]index-url = http://pypi.douban.com/simple Node ...