搜索
bottom↓
回复: 30

贡献一个MDK下自动备份源码工具,基于Python,支持增量备份

[复制链接]

出0入0汤圆

发表于 2020-3-23 23:12:30 | 显示全部楼层 |阅读模式
本帖最后由 fnems 于 2020-3-23 23:21 编辑

自己写程序,以前有时候会出现,改过之后发现还不如旧版本,或者改了之后出问题,需要回头看都改了哪些地方,却不记得也没记录的情况。

所以后来索性写了一个小工具,每次MDK编译成功的时候,都会把整个工程打包保存。

但是用的时候也发现有不尽满意的地方,就是整个工程打包体积比较大,存起来占地方。所以也一直对这个小工具不断改进。现在比较稳定的在用了,就把它分享出来,希望能帮助到坛友们。

工具地址在Github,今天刚上传,有点晚了,懒得写Readme.md,就在后面简单写一下用法吧。
https://github.com/Felix-ZJU/py_auto_src_pack

首先需要安装Python,2或者3都可以。没有额外的依赖包,但是依赖外部工具gzip和diff。这两个工具可以在MinGW里面提取,网上应该好找,也可以问我要。

Python的主程序需要在系统路径Path里面,这样输入Python指令就能运行。

然后在MDK里面配置编译后运行工具。



添加的这条指令是“python2 E:\code\py_wheel\py_auto_src_pack.py ..”,由空格分成三个部分。
第一部分是执行脚本用的程序,是Python。
第二部分是这个脚本的名字,可以是完整路径,也可以放在Python的查找路径里面,就不需要绝对路径了。
第三部分是脚本的参数1,参数1是工程根目录。

其实后面还可以有可选的参数2和参数3,分别是打包的存放位置(没有的话默认是工程根目录/archive/下面),和存放“跳过文件列表”的txt文件。后面有需要再详细说。


实际上,我写了另一个小工具来一键设置所有新建的MDK工程,包括添加这条配置,包括编译文件位置配置,优化选项配置,调试工具配置等等。后面也会抽时间共享出来,写一写使用说明。

现在流行用CubeMX生成STM32工程了。通常工程文件在MDK-ARM子目录下面,这也是MDK运行环境的工作目录(Current Dir)。所以工程根目录(Root Dir)实际是在工作目录上层。




图片里.skiplist.txt就是“跳过文件列表”的txt文件。这个文件指定了哪些文件,和哪些目录下的文件不需要打包保存。比如二进制目标文件就不用保存,CubeMX生成代码中库文件比较固定,也不需要保存。
version.txt里面是当前工程的当前版本号。有时候打包命名时需要区分所保存的软件处于何种版本,就靠这个文件来控制打包时候的命名。

命名规则是:工程根目录名+版本号+日期_时间。

下面就是工作展示了。MDK成功编译之后,会运行这个脚本。它会搜索最近一次打包的文件,并提取文件名中的日期时间。
如果是最近刚刚备份过,那么会使用diff工具执行一次增量备份。



如果最近一段时间没有打包保存过,就进行一次完整备份,用tar和gzip打包。



这是我的一个工程文件打包存放目录,可以看到有很多完整备份包(.tgz)和更多的增量备份包(.patch.gz)。可以看出来,大小差别还是很明显的。




写在后面:有觉得好用的小伙伴,欢迎Github加星号呀~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2020-3-23 23:17:15 | 显示全部楼层
是不是可以SVN GIT这些

出0入0汤圆

发表于 2020-3-23 23:19:07 | 显示全部楼层
赞一个,看上去很不错。

出0入0汤圆

 楼主| 发表于 2020-3-23 23:20:00 | 显示全部楼层
Ray______ 发表于 2020-3-23 23:17
是不是可以SVN GIT这些


我这边是homebrew,自己在家折腾代码用的,暂时没有考虑网上存储。不过你可以扩展这些功能呀

出0入0汤圆

发表于 2020-3-23 23:25:52 | 显示全部楼层
fnems 发表于 2020-3-23 23:20
我这边是homebrew,自己在家折腾代码用的,暂时没有考虑网上存储。不过你可以扩展这些功能呀 ...

git可以本地的,不过你这个思路真的非常好。手动添加其实是存在忘记的情况.....

出0入50汤圆

发表于 2020-3-23 23:27:42 | 显示全部楼层
谢谢分享!我现在电脑是用git在本地建了个仓库,有新功能写完就提交一次,用sourcetree操作起来也还方便

出0入0汤圆

发表于 2020-3-23 23:30:15 | 显示全部楼层
不错,赞一个

出0入0汤圆

发表于 2020-3-24 02:24:03 | 显示全部楼层
sourcetree

出0入119汤圆

发表于 2020-3-24 08:12:38 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2020-3-24 08:20:44 | 显示全部楼层
谢谢分享,先收藏

出0入0汤圆

 楼主| 发表于 2020-3-24 08:46:27 来自手机 | 显示全部楼层
752438771 发表于 2020-3-23 23:27
谢谢分享!我现在电脑是用git在本地建了个仓库,有新功能写完就提交一次,用sourcetree操作起来也还方便 ...

看到不少人推荐git本地仓库和sourcetree,回去我也了解一下

出0入0汤圆

发表于 2020-3-24 08:49:36 | 显示全部楼层
pycharm  开发django  设置好远程部署的服务器以后能够做到每次修改文件自动上传一次服务器,但是是覆盖上传
如果 svn,git等工具能够做到自动备份也就更好了

出0入8汤圆

发表于 2020-3-24 08:54:44 | 显示全部楼层
这就是版本控制系统该干的事情。

版本控制系统,应该都可以本地的吧,这应该是基本功能。

出0入0汤圆

发表于 2020-3-24 09:00:53 | 显示全部楼层
感觉很有用啊,非常感谢楼主分享

出0入8汤圆

发表于 2020-3-24 09:05:11 | 显示全部楼层
QL攻城狮 发表于 2020-3-24 09:00
感觉很有用啊,非常感谢楼主分享

思路是有用,但我总觉得,这是在造轮子,
不过楼主如果没意识到版本控制系统,本身就已经能干这事,而且干得很好,
所以才自己琢磨,也无妨。

出0入0汤圆

发表于 2020-3-24 09:05:32 | 显示全部楼层
git不香吗?!

出0入0汤圆

发表于 2020-3-24 09:05:49 | 显示全部楼层
楼主自主创造蛮好,我选Git

出0入0汤圆

发表于 2020-3-24 09:25:45 | 显示全部楼层
git也可以本地的  如果要远程直接推过去就可以了  

出0入0汤圆

发表于 2020-3-24 09:36:45 | 显示全部楼层
赞一个, Good

出0入0汤圆

发表于 2020-3-24 11:00:44 | 显示全部楼层
如果是那种几百M的工程文件,编译一次是不是要等很久.

出0入0汤圆

发表于 2020-3-24 11:22:36 | 显示全部楼层
多谢共享,收藏了.....

出0入0汤圆

发表于 2020-3-24 13:37:53 | 显示全部楼层
security 发表于 2020-3-24 09:05
思路是有用,但我总觉得,这是在造轮子,
不过楼主如果没意识到版本控制系统,本身就已经能干这事,而且 ...

确实是,我们公司git,svn什么的都不用,手动备份, 所以,我自己用vs备份之后,但是公司要保密就有删了

出0入76汤圆

发表于 2020-3-24 17:45:45 | 显示全部楼层
这个应该是git, svn等来做的事, 不过也佩服LZ的研究精神....

出0入0汤圆

发表于 2020-3-24 20:52:38 | 显示全部楼层
支持,研究下,我做的都是小项目,git都没有用,直接ZIP+日期 打包备份,简单粗暴.

出0入0汤圆

发表于 2020-3-24 21:08:25 来自手机 | 显示全部楼层
fnems 发表于 2020-3-23 23:20
我这边是homebrew,自己在家折腾代码用的,暂时没有考虑网上存储。不过你可以扩展这些功能呀 ...

你说的自动配置项目更实用

出105入79汤圆

发表于 2020-3-24 22:42:03 | 显示全部楼层
可以做出git的效果,对比文件校验值,变化时才打包.并且记录上下顺序, 支持解压回退版本.

出0入0汤圆

发表于 2020-3-24 22:55:38 | 显示全部楼层
改为调用git命令不更香?

出715入1076汤圆

发表于 2020-3-25 02:32:12 | 显示全部楼层
樓主用 git 來管理他的自動備份源碼的工具的源碼。。。

出0入0汤圆

发表于 2020-3-25 06:40:58 来自手机 | 显示全部楼层
souretree很香了,就是注册麻烦点,但相对其他软件和命令行,已经很友好了

出0入8汤圆

发表于 2020-3-25 08:23:59 来自手机 | 显示全部楼层
dukelec 发表于 2020-3-25 02:32
樓主用 git 來管理他的自動備份源碼的工具的源碼。。。

好吧,你赢了。

出0入0汤圆

发表于 2020-3-25 10:11:00 | 显示全部楼层
zyqcome 发表于 2020-3-25 06:40
souretree很香了,就是注册麻烦点,但相对其他软件和命令行,已经很友好了

sourcetree可以不注册的,安装的时候修改两个文件,就可以跳过注册了!我没联网的电脑使用,也是很方便
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-13 01:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表