Jenkins可以使用插件进行构建,手动触发时上传patch文件,平台自动会应用patch文件到项目,但是如果patch中有中文,则无法处理。
谷歌、百度、修改构建机器编码、tomcat编码都不能解决问题,关键是不知道jenkins内部是怎么调用的。所以逼不得已。研究了一下patch文件,在构建时先调用如下脚本,功能:
恢复patch之前的文件
删除patch增加的文件(删除的文件不用管)
使用linux的patch工具应用patch,则不会出现乱码。
#! /bin/bash
#file : reverse_patch.sh
#author : peterguo@vip.qq.com
#date : 2014.01.28
#note : use in jenkins's patch method, should called after jenkins's "applying a patch" action and before compile ...
for file in `find . -name "*original~"`
do
cp $file ${file%.*}
done
if [ -f patch.diff ];
then
file=`grep "(revision 0)" patch.diff | awk '{print $2}'`
rm $file
patch -p0 < patch.diff
fi