svn:文件名大小写修改后的问题

遇到这样的问题:需要把svn中一个文件名的某个(某些)字母大小写(如把Abc.sh改为abc.sh)修改一下。第一反应是这样一系列操作:

  1. 在finder(或xcode,或cli)中直接改大小写为 abc.sh
  2. svn up(试图取到库里的文件)
  3. svn del old
  4. 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一下,取到!

所以,上面问题的正确做法应该是下面这样吧?

  1. svn mv Abc.sh abc.sh
  2. 引用的地方重新引用文件

但是,但是,这仍然没能解决问题!!! svn提示:

.../abc.sh is not a directory

其实还是svn不区分大小写的原因。归根结底,还是得先从库中删除,再添加。正确做法:

  1. svn del Abc.sh –keep-local (为了能让本地磁盘仍保留文件)
  2. mv Abc.sh abc.sh
  3. svn add abc.sh
  4. 引用的地方重新引用文件

或者先保存一份文件(以免误删了劳动成果)

  1. cp Abc.sh bbc.sh
  2. svn del Abc.sh
  3. mv bbc.sh abc.sh
  4. svn add abc.sh
  5. 引用的地方重新引用文件
    原文作者:NoteCode
    原文地址: https://www.jianshu.com/p/eff7d1952544
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞