如果每次在IDE中向项目添加一个新文件时, 都能马上把该文件添加到CVS中, 那么就不需要下面所说的做法, 在实践中, 我发现我不是这样的人, 我不希望在新产生一个源文件时被打断, 额外地把它添加到CVS中, 以便Tortoise CVS可以自动识别出这是待提交的文件. 根据我们同事的经验, 大家也都会经常发生一个项目在自己本地编译的好好的, 一天工作下来, 也把该提交的文件提交到了CVS, 但同事新update后就会发现缺少某个文件而导致项目不能编译. 原因就是, Tortoise CVS在对一个目录做Commit files...的检查时, 会漏掉你新添加到项目中, 但又没有添加到CVS中的那些文件, 这些文件只在你本地存在, 所以你的同事会漏掉这些文件. 其中一个症状是, 你的vsproj或vcproj文件中列出了某个源文件, 但打开项目后这个提示这个文件不存在.
还有一种情况, 面对添加新特性与保持某个分支的版本稳定的双重需求, 你可能需要在多个目录下工作, 在其中一个目录上工作一段时间后, 因项目需要被切换到另一个目录上, 这样, 原来的目录就闲置了一阵子, 几天之后再看这个目录, 你很可能会忘记就有哪些文件是新添加到项目中, 而需要add 到 CVS中的了, 如果仅仅是源文件还好办, 因为这些文件会出现在vsproj/vcproj文件中, 检查这些文件可以得到这些待添加的文件列表(但.h文件除外, 因为C/C++的编译行为, 一个.h文件也完全可能实际上是编译时所需要的必不可少的一个文件, 但又不出现在vcproj文件中)就行了. 但对于文档和其它的不列在vsproj文件, 仅仅通过检查项目文件就把不住这一关.
gfind -type d '(' -iname obj -o -iname bin ')' | tee obj_bin.txt
tar cf obj_bin.tar $(cat obj_bin.txt) && rm -fr $(cat obj_bin.txt)
使用Tortoise CVS在你要检查的顶层目录上, 执行"CVS Add Contents..."这一项.
之后会弹出一个对话框:
Tortoise CVS中这一功能的不便, 正是我需要先执行前面两个命令的原因. 对于一个稍具规模的项目来说, 会有很多 obj, bin目录产生出来, 这些文件会混在真正需要添加的文件中间, 让你注意力分散, 所以要通过这个界面中来集中审查哪些漏检的文件, 最好的办法是先行清除确定不是要添加的那些文件. 一个一个手工排除这些目录也是可以的. 但是要排除的目录比较多时, 这一点就变得不可行了.
Tortoise CVS不提供一个递归排除某些目录的功能, CVS有一个Ignore files列表, 但是, 它不是给Add文件时用的, Tortoise CVS也不会检查这个列表:
在上面的界面中, Type, Add 两个列很重要, 分别点击这两个列的标题, 可以按文件类型或是否需要添加到CVS中来排序, 这样就可以集中检查为数不多的一些文件, 看是否有漏检的文件.
gfind 就是 Unix下的find, 因为有讨厌的windows自带find.exe, 所以不得不给它一个别名.
阅读(1504) | 评论(0) | 转发(0) |