有个git工程:

root/
├── src
│   └── aaa
├── tmp
│   └── bbb
└── doc

然后有几个目录是git archive打包时希望排除的。查看了一下手册git help archive,里面提到man gitattributes可以知道如何添加export-ignore属性,来排序不希望的目录。

经过十几分钟的折腾与搜索,终于弄明白.gitattributes的用法和里面的目录/文件的表达方法了。记录如下:

.gitattributes可以放在任意目录下。并且根据目录的不同,内容表达也有区别。 例如想要排除 src/aaa/目录和tmp/bbb/目录,可以这样写:

1、root/目录下添加.gitattributes文件,内容如下:

/src/aaa   export-ignore

/tmp/bbb export-ignore

2、或者分别在src/和tmp/目录里各自添加文件:

# src/.gitattributes

/aaa    export-ignore

# tmp/.gitattributes

/bbb   export-ignore

这里最蛋疼的就是目录的表达,必须以/开始,而且不能以/结尾。如果想要指定某个子目录,只用一个aaa只会被解释为当前目录里的文件,子目录只有写全路径。。。

另外,如果跑去 src/目录执行git archive master,那么所有的父目录都不会被导出,父目录里的.gitattributes也是无效的。

嗯。就这么多。备忘一下。

, ,

之前没注意,原来不知何时起我的博客的邮件提示功能竟然废掉了。mail to commencter插件的【回复提醒邮件】没有发出来,wordpress本身的【评论审核邮件】也没发出来。

直接测试插件的【发送邮件】却又是成功的。很纳闷。 却也怀疑是由于服务器上的主域名不是banjuan.net导致的。

问了谷哥,他说,那就安装一个SMTP发送邮件的插件呗。于是就使用了wp-mail-smtp插件。该插件的作用如下:

Reconfigures the wp_mail() function to use SMTP instead of mail() and creates an options page to manage the settings.

然后跑去多年没使用的Google Apps上开了个blog@banjuan.net的邮件帐号,填上。从此SMTP邮件就走smtp.gmail.com:25/TSL的通道发出了。

在网页上测试了一下@user的功能,已经能收到wordpress和mail to commenter的邮件了。啊嗯。

PS:顺便鄙视一下#中国电信#昨晚的网络速度堪比拨号上网啊!!!尼玛的分配给我的IP彻底错了有木有!连接网关都需要300ms的!!

,

因为网速慢,使用在线编辑很是折磨人。因此有时喜欢把文件下载到本地进行编辑。 而dokuwiki恰好是txt进行后端存储的,可以自由编辑,所以能供我实现git管理wiki。

工作列表

安装dokuwiki和Git
配置HTTP服务器,确保dokuwiki的安全
配置服务器的Git repo
配置本地的Git repo
配置本地编辑器(VIM的语法高亮)
安装dokuwiki

这个就不用多说了。在本文中,假设dokuwiki的安装路径是
/var/www/wiki/

服务器访问的URL是:

http://banjuan.net/wiki/

安装Git

这个更不用多说了。以我的Debian 6为例:
apt-get install git-core
配置HTTP服务器

这一步的主要工作是确保dokuwiki的安全性。根据官方安全指南 上的介绍,需要确保以下目录无法通过URL进行访问:
/wiki/(data|conf|bin|inc)

本文接着所创建的Git repo,是在目录/var/www/wiki/data/下的,故而需要保证安全性。
配置Git repo

大概的命令如下,主要是设置一下git,允许作为服务器repo接受代码提交
cd /var/www/wiki/data/
git init –shared
git config receive.denyCurrentBranch ignore
git add pages/ media/
git commit -a -m ‘initial’

为了让服务器上的Git能够在版本提交时自动更新文件,需要设置hooks。下载 文件post-receive,放到.git/hooks/目录下,或使用以下代码:
cd /var/www/wiki/data/
cd .git/hooks/
cat > post-receive <<_EOF
#!/bin/sh

cd ..
env -i git reset –hard
chown www-data:www-data * -R
_EOF

然后给服务器添加定时命令,合并网页编辑wiki所产生的变更:
crontab -e

然后在最后添加一行:
0 */1 * * * cd /path/to/htdocs/wiki/data/ && git add pages/ media/ && git commit pages/ media/ -m ‘update’ &>/dev/null || true
配置本地Git repo

在本机上取出服务器上的wiki(使用ssh作为传输方式。git web服务器什么的不再此讨论范围)
git clone ssh://banjuan.net/var/www/wiki/data wiki

进去后即可看到所有的wiki页面都在pages/目录下,媒体文件则在media/目录下。

如果需要添加commit自动上传到服务器上的功能,那么给本地git repo添加hooks:
cd wiki/.git/hooks/
cat > post-commit <<_EOF
#!/bin/sh
#

echo “Auto push to server ….”
exec env -i git push
_EOF
配置vim语法高亮

因为dokuwiki的页面文件的后缀是.txt,而且它的语法与标准的wiki有些不同,因此需要额外的语法高亮支持。

此处我使用的编辑器是vim,因此可以在vim网站上下载安装dokuwiki语法高亮文件。

如果不熟悉dokuwiki的语法也没关系,版本库中自带了一个语法说明的wiki页面,路径是pages/wiki/syntax.txt,大概直接参考即可。
参考
如何自动更新服务器上的Git工作目录树: http://debuggable.com/posts/git-tip-auto-update-working-tree-via-post-receive-hook:49551efe-6414-4e86-aec6-544f4834cda3

PS:实践证明,博客是还是适合贴纯文字的文章。技术文档以后就贴去wiki里算了。

, ,