linux 文件合并函数,合并代码思路

问题:

在工作中经常需要自动生成代码。比如

1. 根据UI自动生成UI框架代码。这里面包括按钮点击响应函数,toggle选中/取消选中响应函数,为文本控件赋值等等...。生成的代码可能达到最终代码的60%-70%。能节省大量工作量。

2. 根据消息定义文件(不少是protobuf的*.proto文件)生成消息处理函数:消息接收处理函数和消息发送函数。就如下面这样:

18c26cb4deea

但这样有个问题,那就是当我们为这些文件添加逻辑代码以后,如果UI或proto修改就只能生成代码到别处,然后人工把两处代码合并在一起。

我见过根据标签合并的,但无所不在的标签让代码非常丑。而且也容易碰到标签影响合并。解决方法还得从Linux上面的diff和patch命令中找。

解决方法:

Linux的diff命令能比较两个文件的差异。diff file1 file2 > diff.txt。执行后把输出重定向到一个文件中。它典型的样子是这样的:

18c26cb4deea

c 表示对应行修改。 a 表示file1增加对应行与file2等价。 d 表示file1比file2多了对应一行。

c 对应项用‘---’这样的行分为两段。

假设file1是添加过代码的源文件。file2是新生成的文件。接下来是处理下这个diff.txt:

一般情况下需要把d对应项去掉:因为这是手动添加的逻辑要保留(例外是有些UI删除了。这时候就需要判断删除内容了,不过这样的很少)。保留着ac项。然后执行patch file1 diff.txt。

新的修改就合并到源文件中去了。

Window系统中并没有这两个命令文件。可以下载cygwin,里面带有比较全的Linux命令。我们需要的就这两个。

源码在这里:https://github.com/lizhipingmaster/file_merge

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值