2020-10-20
kit
00

目录

项目背景

kit,一个用于管理工作文档版本的工具。项目地址:https://github.com/tsingkk/kit。

编写这个工具的目的有两个:

  • 自学练习 Python 编程;
  • 学以致用,试图解决自身工作中,文件和版本过多导致分不清文件版本的问题。

勘察设计行业的工作成果为设计文件,以 Word 文档和 CAD 图纸这类二进制文件为主,有别于 IT 行业常用文本文件。git 并不适合用于管理二进制文件,但非常喜欢 git 对版本的管理流程,因此就参考 git 的一般操作流程,写了 kit。对,名字也是模仿的。对 git 的模仿也仅限于操作流程和名字,原因是作为非专业人员看不懂 git 的代码和算法。对版本的管理流程也根据自己工作需要做了简化。

目前 kit 属于自己练手项目,功能有限,bug 估计很多。打算先以一个个单独 Python 脚本完成不同功能,后续尝试编写成命令行工具。

功能

目前实现了以下 5 个功能,后续会添加其他功能。

以下功能只对当前目录下的 1工作 目录中的文件起作用。

  • init.py:对工作目录进行初始化,生成 .kit 目录和相关的配制文件;

  • status.py:查看当前目录下的 1工作 目录中的文件的变化;

  • add.py:将 1工作 目录中有变化的文件全部添加到暂存区;

  • commit.py:将暂存区文件提交至版本库;

  • release.py:选择版本发布文件。

安装

一个很土的安装方法

下载脚本,然后将脚本放在本地合适目录里,再给终端模拟器添加 aliases。用 Cmder 举例,添加自定义 aliases 如下:

kitstatus=python f:\myscripts\status.py kitinit=python f:\myscripts\init.py kitadd=python f:\myscripts\add.py kitcommit=python f:\myscripts\commit.py kitrelease=python f:\myscripts\release.py

以上代码中 kitstatus 是我自己定义的快捷命令名称,可按喜好随意命名。

一个更土的安装方法

不用安装,直接把脚本下载拷贝到工作目录中,在工作目录中运行脚本。

依赖

  • Python 运行环境
  • osjsontimefilecmpshutil 这 5 个 Python 内置包
  • 这几个脚本有相互依赖关系,需要放在一个目录中

使用

再次注意,以下功能只对当前目录下的 1工作 目录中的文件起作用。 也就是说,当前目录下的 1工作 目录相当于 git 中的工作区。

首先需要在当前目录中,创建两个新目录 1工作2发布 1工作 目录中存放要编辑的文件,这些文件会被进行版本管理。2发布 目录用来存放编辑完成需要发布的文件包。

目前设置中,1工作 目录必须包含以下 5 个子目录。

  • 1专业成稿编辑
  • 2提出条件编辑
  • 3过程控制文件编辑
  • 4工艺计算
  • 5校核

以上子目录对应 5 种文件包类型,发布文件包时可供选择。

然后运行 init.py 对当前目录进行初始化,会生成 .kit 目录,用来存放所有提交的历史版本的文件,以及配制文件。

python init.py

如果当前目录曾经被初始化过,运行 init.py 则不会重新创建 .kit 目录和配置文件,而是使用原有的。

初始化后,在 1工作 目录中添加、修改、删除文件后,运行 status.py 查看工作区中文件变更。

python status.py

如果要忽略对某一类型文件的变更查看和版本管理,可以将文件类型的扩展名写入 .kit/ign.json 中。比如忽略对 AutoCAD 自动生成的 baklsp 格式文件的版本管理,.kit/ign.json 中添加如下:

{"ign": ["bak", "lsp"]}

接着运行 add.py,将工作区中的文件变更添加至暂存区。(目前只能将变更一次性全部添加,无法指定文件添加。)

python add.py

将暂存区文件提交至版本库中,使用 commit.py

python commit.py

运行脚本后会提示输入本次提交的变更说明。提交说明会存储在 .kit/log.json 中,同时会生成 .kit/log.mdmarkdown 格式文件方便查看提交说明。

当需要将某一版文件成套发布时,运行 release.py,会提示可选择的版本号以及文件包类型,然后输入发布文件包的版本名称。

python release.py

接着会生成要发布的文件包并保存在 2发布/[选择的文件包类型]/[版本名称] 目录中。该目录中同时会生成本次发布的 更新说明. md 文件,内容为本次发布的更新说明与之前历次发布的更新说明。本次发布的更新说明为合并的本次发布版本号与上一次发布版本号之间所有的提交说明。

本文作者:tsingk

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!