其它基础 - 删除文件

  • 作者:KK

  • 发表日期:2015.12.27

这个功能是将一个文件删除掉并取消版本库的登记


SVN的删除菜单

我们之前的基础经常拿a.js来做测试,你现在应该没删除吧?接下来我们将它删除

在小明这边对a.js右键选择TortoiseSVN中的删除,然后小红那边更新是不会被删除的,她还是拥有a.js,然后小明继续对目录空白的地方选择提交,提交窗口中会显示a.js的状态是删除了的

确认提交后,客户端会通知版本仓库把这个a.js给删除掉,然后小红更新才会真的不见了a.js,因为她更新时,仓库会通知她"最近a.js被删除了,你本地的文件也别要了吧"


普通删除法

还有一种操作方法就是不采用SVN的删除菜单,而是使用你平时操作文件时的删除方式,比如右键菜单中系统自带的删除

或者按Delete键删除都是普通的删除方式,删除后对空白的地方提交就会显示这个被用普通方法删除的文件状态是缺少

因为它本来是登记在版本库中的,但未经过SVN菜单操作进行删除,所以SVN并不知道它已经被你删除了,反正SVN发现它原先登记的文件不见了,所以叫做缺少,但另一个a.js是经过SVN菜单删除的,这个删除会通知SVN要删掉一个文件,然后SVN会往.svn目录的缓存数据中保存这个变化,所以它知道a.js是已被你删除的

但其实人家叫缺少的另一个原因并不只是SVN要说"你这家伙删除文件都没通知我,我的名单中有登记这个文件,但现在发现不见了它,所以是缺少"

而是这个文件不翼而飞,这可能是被你普通操作删除的,也可能是被你剪切到另一个目录去了,但它还存在磁盘上,更可能是被程序代码用了什么rename或者mv这些命令函数给换了路径,反正对于本地客户端来说就是不翼而飞

最终,这样显示只代表你本地不要了这些文件,但要告诉别人,你还是要将这些变化状态提交上去,然后服务端的版本仓库会登记为删除,别人更新也会同时删除这个文件


变更时被删除

一种少见的情况就是小红正在修改a.js,比如她添加了一些代码啦,可是小明那边删除文件并提交了,小红更新文件时就会引发冲突,所谓冲突并不仅仅代指一个文件相同位置里有两种内容修改,而是一个文件有两种变化,所谓的变化也包括了文件已经从 存在 变成了 不存在,小明触发了存在性的变化,但小红那边却在修改代码,说明小红是"需要它的 存在",这时SVN肯定不敢乱删小红正在修改的文件呀,所以这就是冲突的所在.

而如果小红不对a.js做任何修改,那么更新时自然就会被正常删除而不发生冲突,因为小红当前的开发没必要修改这个文件,它存在不存在让别人说了算吧,你这么理解就好了