jasmine214--love

只有当你的内心总是充满快乐、美好的愿望和宁静时,你才能拥有强壮的体魄和明朗、快乐或者宁静的面容。
posts - 731, comments - 60, trackbacks - 0, articles - 0

svn版本暗中偷换妙法

Posted on 2010-11-15 11:44 幻海蓝梦 阅读(337) 评论(0)  编辑  收藏 所属分类: 版本管理

http://tieba.baidu.com/f?kz=739070271


使用Subversion 管理代码和文档时,最苦恼的事情莫过去错误地Import了不该导入的东西,比较obj文件、ncb文件、bsc文件等,不仅浪费了Subversion 数据库的空间(或者磁盘空间),也常常因为这些无用文件的微小变化使整个Project的版本信息发生变化。若是不留神把代码目录下的大量样本或者几个几 百兆的AVI也Import了,那么,想象一下飞刀李每天下班后守夜备份源代码时痛苦表情吧……
最让人气愤的是,我们常用的 tortoisesvn工具并未提供取消本次Import的功能,Update to revision也不会把误导入的东西从Subversion数据库中清除。这意味着,面对错误的Import,你有权保持沉默,你所讲的一切将会没人理 睬。
不过,tortoise再狡猾也斗不过好程序员,经过昨夜雨疏风骤的一番尝试,终于发现了一个瞒天过海的办法,和兄弟们共享一下,看起来我们 的后半生再也不必为错误的Import而丧心病狂地重建Subversion数据库了。
具体方法——
1.Subversion数据库目录 结构为
├—conf
├—dav
├—db
│ ├—revprops
│ ├—revs
│ └—transactions
├—hooks
└—locks
其中,db"revprops和db"revs分别保存各版本的增量 变化和各版本的属性信息(如最后修改时间、作者等)。
2.假设该数据库存放在C:"SourceCode,且db"revprops和db "revs目录中文件列表分别为:
C:"SourceCode"db"revprops"0
C:"SourceCode"db"revprops"1
C:"SourceCode"db"revprops"2
C:"SourceCode"db"revprops"3
C:"SourceCode"db"revprops"4
C:"SourceCode"db"revprops"5
C:"SourceCode"db"revprops"6
C:"SourceCode"db"revprops"7
C:"SourceCode"db"revprops"8
C:"SourceCode"db"revprops"9
C:"SourceCode"db"revprops"10
C:"SourceCode"db"revprops"11
C:"SourceCode"db"revprops"12
C:"SourceCode"db"revprops"13
C:"SourceCode"db"revprops"14
C:"SourceCode"db"revprops"15
C:"SourceCode"db"revprops"16
C:"SourceCode"db"revprops"17
C:"SourceCode"db"revprops"18
C:"SourceCode"db"revprops"19
C:"SourceCode"db"revprops"20
C:"SourceCode"db"revprops"21
C:"SourceCode"db"revprops"22
C:"SourceCode"db"revprops"23
C:"SourceCode"db"revprops"24
C:"SourceCode"db"revprops"25
C:"SourceCode"db"revprops"26
C:"SourceCode"db"revprops"27
C:"SourceCode"db"revprops"28
C:"SourceCode"db"revprops"29
C:"SourceCode"db"revprops"30
C:"SourceCode"db"revprops"31

C:"SourceCode"db"revs"0
C:"SourceCode"db"revs"1
C:"SourceCode"db"revs"2
C:"SourceCode"db"revs"3
C:"SourceCode"db"revs"4
C:"SourceCode"db"revs"5
C:"SourceCode"db"revs"6
C:"SourceCode"db"revs"7
C:"SourceCode"db"revs"8
C:"SourceCode"db"revs"9
C:"SourceCode"db"revs"10
C:"SourceCode"db"revs"11
C:"SourceCode"db"revs"12
C:"SourceCode"db"revs"13
C:"SourceCode"db"revs"14
C:"SourceCode"db"revs"15
C:"SourceCode"db"revs"16
C:"SourceCode"db"revs"17
C:"SourceCode"db"revs"18
C:"SourceCode"db"revs"19
C:"SourceCode"db"revs"20
C:"SourceCode"db"revs"21
C:"SourceCode"db"revs"22
C:"SourceCode"db"revs"23
C:"SourceCode"db"revs"24
C:"SourceCode"db"revs"25
C:"SourceCode"db"revs"26
C:"SourceCode"db"revs"27
C:"SourceCode"db"revs"28
C:"SourceCode"db"revs"29
C:"SourceCode"db"revs"30
C:"SourceCode"db"revs"31

3. 假设C:"SourceCode"db"current内容为
31 21r 2
这表明当前版本为第31版

4.假设最后一 次导入(revision = 31)出现失误,希望回到前一个版本并放弃本次导入的全部内容,可以直接删除
C:"SourceCode"db "revs"31和C:"SourceCode"db"revprops"31两个文件,并使用UltraEdit-32打开C:"SourceCode "db"current文件(注意此时不要选择转换到DOS格式),将其中的31修改为30即可。

5.使用tortoisesvn工具提 供的show log功能,就可以看到目前的最新版本已经是30了,那些不想要的文件也不见了。

转自:创意安天论坛


只有注册用户登录后才能发表评论。


网站导航: