其它基础 - 忽略文件

  • 作者:KK

  • 发表日期:2015.12.27


忽略指定文件或文件夹

慢慢地,你总会有个别文件/文件夹是临时存放,或只想你自己使用,但你只要对空白的地方点提交,总是会把它们列出来,还可能不小心钩上,这样导致其他开发人员也会下载到这些文件,所以就要用到这个忽略功能了

办法就是对文件/文件夹用TortoiseSVN忽略菜单来进行忽略咯,我想你已经不是第一天注意到这个菜单了,一旦添加到忽略名单中的文件,在提交时再也不会被列出来

重要知识点:这时候由于你添加了忽略,文件夹从没有忽略文件 变成了 有忽略文件,这是一种变更,所以文件夹会呈现红色叹号,需要你提交通知仓库,其他开发人员更新下来时也会同步你的忽略。平时一般很多新手都很难理解为什么一些目录动不动会有叹号,但他没有添加/删除文件,虽然官方使用手册有讲解,但都是书面语言,而且一般人不看,所以我这里用通俗语言告诉你原因了,从没有忽略文件 变成了 有忽略文件就是其中一种变更,你以后要多理解什么叫变更


忽略文件夹下所有东西

这个小知识点需要用到时很重要,务必跟着操作一下试试看,平时确实很少用,项目发展起来后总会有需要用它的时候

  • 需求场景:

    假如某程序框架设定项目的/runtime目录是运行时目录,这个目录会产生log,cache,data三个子目录分别保存日志,缓存和临时数据,并且按照开发需求还可能会增加更多不同类型的子目录来保存更多动态文件

    由于是动态生成的目录,按管理经验来说是不应该添加到仓库里的,那么我们马上就想到了忽略,可是如果你对其中一个文件夹右键添加到忽略,也只是忽略了这个文件夹,别的文件夹没有被忽略,就算所有文件夹都忽略了,但是未来如果再产生一个叫“api-data"的目录你又要添加忽略了是吧,包括对文件忽略也是这样的,一个上传目录,你忽略了 .png 但没忽略 .jpg等,各种类型你都要添加忽略,然后它还有。txt存在里面。..真麻烦

    你会问“忽略runtime目录不行吗?",这样的话版本仓库就不会有runtime目录了,别人更新下来就不会有这个目录,程序出错时就没有目录可以写日志或产生缓存了

    你会问“自动生成runtime目录不就行了吗?"这个在windows下还好,但是在linux系统下,如果设定了runtime让你可读写,但runtime的父目录不让你读写,当runtime不存在时,你想创建runtime就相当于向它的父目录写入一个子目录,可惜父目录不允许你操作,坑爹没?

    总结理念:/runtime 运行时目录是项目的一部分,但是运行时产生的东西不属于项目的一部分

  • 解决方案

    这时候要通过另一种方式设置忽略*:假如你要忽略/runtime目录下面所有东西的话,就进入runtime目录

    在空白处选择TortoiseSVN - 属性弹出文件属性设置窗口(在文件系统上,目录也是一种文件来的)

    点击右下角的新建按钮,在弹出的选项中选择其它,出来一个小面板

    属性右边的下拉选项中选择svn:ignore

    在取值下面的大框中输入*号,确定保存即可


为什么忽略了一个文件或文件夹后,它的父目录会发生变更需要提交?

如果你不想管那么多,那就只要知道这个原则:忽略一个文件或文件夹,就会触发父目录变更,需要提交父目录

如果想搞清楚原理,可以简单告诉你:目录里有什么文件,这些文件列表是记在“目录“的信息里的,多了少了文件就等于修改目录的信息,所以涉及目录变更,要提交这个目录 data储存了里面的文件和文件夹名单,名单变了,自然就对data做了修改,所以要提交data

再深一层想刨根问底的话,你去学文件系统的原理,其实目录也是一个文件,只是这种文件的类型不同,不能拿来运行,只是用来登记某个空间有哪些文件和其它信息的 可以这么实验:在linux系统里, vi xxx.txt 这样可以编辑一个指定文件,但是如果你执行 vi /usr 这样的话就等于要编辑 /usr 这个路径,可是这个路径在普通程序员眼里只是一个目录,然而这际上对于计算机来说,目录也是一个文件,于是也能进入编辑状态,编辑时就能看到里面有好多文件和文件夹名称列表了