技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 528|回复: 5
收起左侧

【VB6】本地版本控制

[复制链接]

85

主题

263

帖子

3428

积分

用户组: 管理员

No. 418

UID
418
精华
13
威望
52 点
宅币
1969 个
贡献
1027 次
宅之契约
0 份
在线时间
252 小时
注册时间
2014-8-9
发表于 2017-4-9 18:12:59 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

x
已经好久没有“威逼利诱”VB6地写过程序了。因为最近有了需求,所以用VB6实现了一个Windows UI的本地版本控制。
0.png
接下来我使用我的一个工程“GILIB https://www.0xaa55.com/forum.php ... amp;highlight=gilib ”做个示范。
1.png
首先在程序主界面上将“Project 工程”文件夹定位到当前工程。然后使用“Export Hash for Dir1”对当前工程进行导出散列记录的操作。(这个阶段在工程比较大、目录比较多的时候会有延迟。需要耐心等待。)
将添加散列记录后的工程复制到备份目录下进行备份。我选择了 “C:\Backup\” 这个目录作为备份目录。在使用时也可以将备份目录选择至其他外存。
4.png 5.png 7.png
然后我在当前工程目录下做了一些修改。修改后我又在程序主界面执行“Export Hash for Dir1”功能。确认我的修改。
后来我假设发现工程需要回滚,这时我将主界面下的“Dir2 Repository”目录定位到我的备份目录。定位到备份目录后,如果目录下存在散列记录,程序将自动读取记录文件。
3.png
这时候我使用主界面下的“Validate Changes 校验修改”功能比较我对工程做了那些修改。结果如下:
8.png
从上图中我们可以看出:自上一次备份后我做的修改如下:
添加了一个目录名叫“Test”,删除了src子目录下的6个文件。修改了文件“gilib_kernel.c”。在src目录下添加了文件“Test.c”。
(注意,图中的 <DIR_REMOVE> 表示“如果我执行回滚操作”,那么将要删除那些目录。那么 <FILE_ADD> 表示我自上一次备份后删除了某某文件,执行回滚后文件被添加了回来。而<FILE_CHANGE> 则表示自上一次备份后我修改过的文件。DIR_ADD, FILE_REMOVE 概念相似。)
选中需要进行的操作后,首先要考虑我是否还需要对当前版本进行备份。假如我还需要对当前版本进行备份,那么我需要在“Change Viewer 变更查看器”中选择:“Make a Backup for Dir1 为当前工程做个备份” 假设我要备份在“C:\Backup\New\”下:
15.png
执行备份后,程序会自动为备份做一次散列记录。如果为备份做的散列记录生成失败,程序会提示。那么用户需要手动生成散列记录。生成散列记录的方法就是将主界面下的Dir1 Project—当前工程目录手动设置到刚刚备份的新目录,然后点击“Export Hash For Dir1”。过后记得将当前工程目录修改回来。
回到“Change Viewer 变更查看器”中,我们执行已经选中的更改,把当前工程重置到第一次备份的时候。这时候我选择了执行所有的操作。点击“Execute changes 执行变更”。会弹出警告:“这个操作不能回滚,你要继续吗?”。所以在执行变更以前最好备份一下工程的当前状态。
10.png
点击“是”,以后,继续弹出警告:“当前的程序目录比备份库中的目录新,你要继续吗?” 这是因为我要做回滚操作,当然要覆盖掉较新的内容。如果我要将新版本覆盖掉老版本,则不会出现此类提示了。继续点击“是”。
11.png
片刻过后,程序提示操作完成。如果还有没有做完的操作剩下,“Change Viewer 变更查看器” 并不会自动退出。但是如果进行完了列表框内所有的操作程序会提示:“Done!完成!”。
12.png
完成了所有的操作,意味着此时的工程回到了我第一次备份时候的状态。这时再次点击“Validate Changes 校验修改”程序会提示:“找不到更改。(然而并没有更改)”:
13.png
然后我解释一下其他的几个附加功能。在“Change Viewer 变更查看器”中有个功能叫做“Export changes 导出更改”就是把列表框内的内容导出到文本文件中方便比较查看。还有个功能叫“View Record File Info 查看散列记录信息”就是查看散列记录信息,呸,就是检索散列记录的信息。反正就是那个意思啦。我们会看到如下窗体的弹出:
14.png 6.png
这个功能在主界面下的 Tools 菜单内也有。通过这个功能,你可以看到当前备份是什么时候做的(生成散列记录时的时间)。
“Change Viewer 变更查看器”中还有一些功能,比如“Open Content In Dir1 查看Dir1下的内容”、“View Properties In Dir2 在Dir2下查看文件属性”。注意要添加的文件/目录(有<DIR_ADD>、<FILE_ADD>标记的条目)是无法进行“Open Content In Dir1”和“View Properties In Dir1”的,要铲除的文件/目录是无法进行“Open Content In Dir2”和“View Properties In Dir3”的。请自己思索以上原因。还有,目录可以“查看内容”但是还不支持“查看属性”。

这个程序只能在两个目录之间进行操作,而且仅仅支持Windows 平台。程序不能将工程打包。
这里是关于能打包工程的帖子: https://www.0xaa55.com/forum.php?mod=viewthread&tid=1596

整个程序代码将近1000行。其实都是些交互逻辑处理。这里放出可执行文件:
LOCVC_EXE.ZIP (31.96 KB, 下载次数: 9)

评分

参与人数 1威望 +10 宅币 +5 收起 理由
0xAA55 + 10 + 5 屌!

查看全部评分

本帖被以下淘专辑推荐:

In the beginning I was not the best.
And the world was also not the best.
But I still know that I am who I am.
Because I think that it is good.
I have been working hard.
I have been keeping growth with the world.
And it was so.

85

主题

263

帖子

3428

积分

用户组: 管理员

No. 418

UID
418
精华
13
威望
52 点
宅币
1969 个
贡献
1027 次
宅之契约
0 份
在线时间
252 小时
注册时间
2014-8-9
 楼主| 发表于 2017-4-9 18:51:50 | 显示全部楼层
只要知道哪个文件被修改了以后,用一个合适的文件比较工具来查看修改了那些地方是非常容易的事情。
比如我的两个C文件:
aaa.png
这里我使用了 “Ultra Compare”
ccc.png
In the beginning I was not the best.
And the world was also not the best.
But I still know that I am who I am.
Because I think that it is good.
I have been working hard.
I have been keeping growth with the world.
And it was so.

0

主题

8

帖子

27

积分

用户组: 初·技术宅

UID
2163
精华
0
威望
0 点
宅币
19 个
贡献
0 次
宅之契约
0 份
在线时间
1 小时
注册时间
2017-1-5
发表于 2017-4-21 17:50:52 | 显示全部楼层
新人学习一下。

1

主题

15

帖子

15

积分

用户组: 初·技术宅

UID
2735
精华
0
威望
0 点
宅币
0 个
贡献
0 次
宅之契约
0 份
在线时间
6 小时
注册时间
2017-7-28
发表于 2017-10-8 20:40:34 | 显示全部楼层
新人学习一下。

0

主题

17

帖子

44

积分

用户组: 初·技术宅

UID
3001
精华
0
威望
0 点
宅币
27 个
贡献
0 次
宅之契约
0 份
在线时间
2 小时
注册时间
2017-10-23
发表于 2017-10-23 17:48:06 | 显示全部楼层
现在学习,还来的及吗

1

主题

86

帖子

91

积分

用户组: 小·技术宅

UID
3026
精华
0
威望
1 点
宅币
3 个
贡献
0 次
宅之契约
0 份
在线时间
6 小时
注册时间
2017-10-31
发表于 2017-11-7 08:06:27 | 显示全部楼层
好东西,收藏学习

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号|网站地图

GMT+8, 2018-5-25 18:37 , Processed in 0.085583 second(s), 19 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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