遇到这样的问题:需要把svn中一个文件名的某个(某些)字母大小写(如把Abc.sh改为abc.sh)修改一下。第一反应是这样一系列操作:
- 在finder(或xcode,或cli)中直接改大小写为 abc.sh
- svn up(试图取到库里的文件)
- svn del old
- svn add new
但是,在第2步失败了。嗯?怎么会呢,然后svn st一下,结果:
? abc.sh
! Abc.sh
很奇怪,既然原来文件已经提示我missing(!表示)了,那为啥不给我从svn库中restore呢?反复svn up,仍无效果。这跟我的认知不一样啊!!(之前,如果删除了文件或文件夹,svn up一下,立马restore回来)。难道rename和delete还不一样对待?
反复尝试、思量半天,终于得到解决:似乎svn是大小写不敏感的,虽svn st中提示?和!,但试图从库中取文件下来时,发现有一个同名文件,就不取了。所以,我把abc.sh删除,或改为其它名字(忽略大小写不重名),再svn up一下,取到!
所以,上面问题的正确做法应该是下面这样吧?
- svn mv Abc.sh abc.sh
- 引用的地方重新引用文件
但是,但是,这仍然没能解决问题!!! svn提示:
.../abc.sh is not a directory
其实还是svn不区分大小写的原因。归根结底,还是得先从库中删除,再添加。正确做法:
- svn del Abc.sh –keep-local (为了能让本地磁盘仍保留文件)
- mv Abc.sh abc.sh
- svn add abc.sh
- 引用的地方重新引用文件
或者先保存一份文件(以免误删了劳动成果)
- cp Abc.sh bbc.sh
- svn del Abc.sh
- mv bbc.sh abc.sh
- svn add abc.sh
- 引用的地方重新引用文件