不像CVS,Subversion允许重命名和移动文件和目录。因此在TortoiseSVN 的子菜单中有删除和重命名的菜单项。
如果你通过TSVN删除了一个文件/目录,吗呢这个文件被移出你的工作副本并标记为删除。该文件的父目录会覆盖上一个"删除"标记。你随时可以通过在父目录调用
→ 命令来恢复该文件。如果你想在工作副本中移动文件,那么可以这样使用鼠标拖拽:
选择你要移动的文件或目录
拖拽(right-drag)他们到新的工作副本下,
松开鼠标右键
在弹出菜单选择
→ 。不要使用 SVN 移动外部连接 | |
---|---|
你不应该用TortoiseSVN的移动或重命名命令作用在一个已经用 |
如果一个 文件 是通过浏览器而不是使用TortoiseSVN 快捷菜单被删除,提交对话框也会显示这些文件并让你在提交前把他们从版本控制中移除。可是,如果你更新你的工作副本, Subversion 将会混淆这个丢失文件并替换他为版本库中的最新版本。因此,如果你需要删除一个版本控制下的文件,请始终使用 → 保证 Subversion不去猜测你到底想干什么。
如果一个 目录 是通过浏览器而不是使用TortoiseSVN 快捷菜单被删除,你的工作副本将回被损坏,并且你将不能提交。如果你更新你的工作副本,如果你更新你的工作副本, Subversion 将用版本库中的最新版本替换已丢失目录。接下来你就可以使用 → 这种正确的方法来删除它了。
提交父目录 | |
---|---|
既然重命名和移动都可以像添加之后又删除一样被执行,你必需提交该重命名/移动文件的父目录,所以重命名/移动的删除部分将出现在提交对话框中。如果你不提交重命名/移动的已删除部分,他将保留在仓库中并且你的同组人将更新该未移除的旧文件。例如,他们将有两个一老一新的副本。 你 必须在重命名目录后而在更改目录下的任何文件前进行提交,不然你的工作副本就回真的混淆。 |
找回已删除的文件或目录 | |
---|---|
如果你删除了洋文件或目录并已经提交该删除操作到版本库,那么 一个常规的 → 已不能再将其找回。但是该文件或目录并没有完全丢失。如果你知道该被删除文件或目录的版本(如果不能,使用日志对话框来查找出来),打开数据仓库的浏览器,并选择那个版本。然后选择你删除的文件或目录,右键并选择 → 作为目标执行复制操作,然后选择你的工作副本的路径。 |
万一在你的版本库中有两个名字相同但大小拼写不同(例如: TEST.TXT和test.txt)的文件,你是不能更新或者检出该包含该文件的目录的。
如果是那样的话,你得决定在这个版本库里的哪一个文件是你想保留的,哪一个是要删除(或重命名)的
这里(至少)有两种可能的解决方案来重命名文件而不丢失他的日志记录。在subversion里重命名它是很重要的。仅在浏览器中重命名将会损坏你的工作副本。
解决方案 A)(推荐)
提交你工作副本中的改变到版本库
使用版本库的浏览器立即重命名该文件的大写(小写)为小写(大写)
更新你的工作副本
解决方案 B)
使用TortoiseSVN子菜单中的重命名命令将UPPERcase重命名为UPPERcase_ 格式
提交该更改
将UPPERcase_重命名为upperCASE格式
提交该更改
防止两个文件名字相同 | |
---|---|
这有一个有用的服务器端脚本在http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/将会防止检入拼写(大小写)冲突文件。 |
有时候你的IDE会因为执行反射操作,改名文件,当然它不能告诉Subversion。如果你尝试提交修改,Subversion会发现丢失了老文件,新增了未版本控制的新文件。你可以简单的增加新文件,但是你将丢失历史记录,因为Subversion不知道这些文件的关系。
更好的方法是通知Subversion这实际上是改名,你可以在提交和检查修改对话框中做此操作。简单选择老文件(丢失的)和新文件(未版本控制的),使用 → 设置这两个文件是改名关系。