一、前言

  如果只是在本地的文件系统中修改SVN中的文件(夹)名称,然后提交,是可以达成目的的,但是该文件(夹)之前所有的修改日志都没了。

  SVN中的文件(夹)该如何重命名,并且还能保留之前的修改日志呢?


二、操作步骤

  使用SVN的rename功能。
  它的原理是:修改文件(夹)名称,相当于,新建一个新文件(夹),并删除以前的旧文件(夹)。

1. 使用SVN重命名(SVN rename)

  右击文件(夹),选择TortoiseSVN,再选择SVN重命名(SVN Rename)。

tortoisesvn修改文件修改时间怎么改 svn修改文件夹名称_svntortoisesvn修改文件修改时间怎么改 svn修改文件夹名称_svn_02

2. 输入新名称

  在“新名称(New name)”文本框中输入新的文件(夹)名称,再点击“确定(OK)”。

tortoisesvn修改文件修改时间怎么改 svn修改文件夹名称_其他_03tortoisesvn修改文件修改时间怎么改 svn修改文件夹名称_其他_04

3. 确定重命名

  此时的 V2文件夹 还不是在版本控制的状态下。tortoisesvn修改文件修改时间怎么改 svn修改文件夹名称_服务器_05

tortoisesvn修改文件修改时间怎么改 svn修改文件夹名称_服务器_06

4. 立刻进行一次提交(commit)

  不要做其他修改,立刻进行一次提交(commit)。tortoisesvn修改文件修改时间怎么改 svn修改文件夹名称_其他_07

  注意:如果在SVN重命名后,进行了其他修改操作,将会导致之前的修改日志丢失或者不好追踪。

tortoisesvn修改文件修改时间怎么改 svn修改文件夹名称_重命名_08
tortoisesvn修改文件修改时间怎么改 svn修改文件夹名称_修改文件_09

5. 补充

  提交(commit)时,需要将包含被修改文件(夹)的上一级目录整体提交,否则将会报错。

tortoisesvn修改文件修改时间怎么改 svn修改文件夹名称_其他_10


三、可能遇到的问题

1. 情况一

  操作:本地存在文件夹A,SVN重命名为文件夹B后,没有执行提交(commit)操作,执行更新(update)。
  现象:这时会把服务器上的文件夹B拉下来,且本地文件夹A会产生树冲突。
  解决:右键做conflict处理,接受当前文件夹为work copy,并重新提交commit即可。

2. 情况二

  操作:本地存在文件夹A,SVN rename修改为文件夹B,再SVN rename修改为文件夹A。
  现象:这时,会存在三个不同的主目录记录,导致追踪不到原来的日志。
  A——001
  B——002——此时提交commit,日志会追踪到文件夹A。
  C——003——此时提交commit,日志仅会追踪到002文件夹B,部分日志会丢失。

3. 情况三

  注意:一次性修改多个文件(夹)名称,可能会导致报错,尽量不要一次同时修改多个文件(夹)名称。