天天看点

svn常用操作–windows

另附一个全面介绍svn的ppt(与下面内容不同) : SVN使用指南——Windows环境版

不像 CVS,Subversion 允许重命名和移动文件和目录。因此在 TortoiseSVN 的子菜单中有删除和更名的菜单项。

svn常用操作–windows

删除文件/文件夹

使用 TortoiseSVN → 删除 从 subversion 中删除文件或文件夹。

当你 TortoiseSVN → 删除 一个文件后,该文件立刻就从工作副本中移除,并且被标记,在下次提交时从版本库删除。该文件的父文件夹会覆盖上一个“已删除”重载图标。在你提交修改之前,你可以在父文件夹通过 TortoiseSVN →SVN 还原 命令找回文件。

当你TortoiseSVN → 删除一个文件夹,它仍旧在你的工作副本中,但是重载图标指出了它标记为删除。在你提交修改之前,你可以通过 TortoiseSVN → SVN 还原 命令找回文件夹。文件和文件夹处理方式的区别是 Subversion 的特性,与 TortoiseSVN 无关。

如果你想从版本库删除项目,但是在本地作为非版本控制的文件/文件夹保留,可以使用 扩展右键菜单 → 删除(保留本地副本)。为了看到扩展右键菜单,当你在文件管理器列表窗格(右窗格)中的项目上点击右键时,必须同时按下Shift 键。

如果一个 文件 是通过浏览器而不是使用TortoiseSVN 快捷菜单被删除,提交对话框也会显示这些文件并让你在提交前把他们从版本控制中移除。可是,如果你更新你的工作副本, Subversion 将会混淆这个丢失文件并替换他为版本库中的最新版本。因此,如果你需要删除一个版本控制下的文件,请始终使用TortoiseSVN → Delete保证 Subversion不去猜测你到底想干什么。

如果一个 目录 是通过浏览器而不是使用TortoiseSVN 快捷菜单被删除,你的工作副本将回被损坏,并且你将不能提交。如果你更新你的工作副本,如果你更新你的工作副本, Subversion 将用版本库中的最新版本替换已丢失目录。接下来你就可以使用TortoiseSVN → Delete这种正确的方法来删除它了。

找回已删除的文件或目录

如果你删除了洋文件或目录并已经提交该删除操作到版本库,那么 一个常规的TortoiseSVN →Revert已不能再将其找回。但是该文件或目录并没有完全丢失。如果你知道该被删除文件或目录的版本(如果不能,使用日志对话框来查找出来),打开数据仓库的浏览器,并选择那个版本。然后选择你删除的文件或目录,右键并选择Context Menu → Copy to…作为目标执行复制操作,然后选择你的工作副本的路径。

移动文件和文件夹

如果你仅想重命名文件或文件夹,使用 右键菜单 → 改名… 为此条目输入新的名称就可以了。

如果你想在工作副本中移动文件,可能是移动到一个不同的子文件夹下,那么使用鼠标右键拖拽:

  1. 选择你要移动的文件或目录
  2. 用鼠标右键拖拽它们到工作副本的新位置
  3. 松开鼠标右键
  4. 在弹出菜单选择右键菜单 → SVN 移动版本控制的条目到当前位置。

提交父目录

既然重命名和移动都是像添加之后跟随着删除一样被执行,你必需提交该重命名/移动文件的父文件夹,所以重命名/移动的删除部分将出现在提交对话框中。如果你不提交重命名/移动的已删除部分,他将保留在仓库中并且你的同组人更新工作副本时,该文件也不会被删除。例如,他们将有两个一老一新的副本。

你必须在重命名文件夹后立刻进行提交,在提交前不要更改文件夹下的任何文件,不然你的工作副本就会真的混淆。

你也可以使用版本库浏览器在版本库中移动条目。阅读 “版本库浏览器”一节 以获得更多信息。

不要使用 SVN 移动外部连接

你不应该用 TortoiseSVN 的移动或改名命令作用在用 

svn:externals

 创建的目录上。因为这个动作可能会导致外部元素(item)从它的父版本库中删除,这可能会使其它人烦恼。如果你需要移动外部目录,你应该使用普通的外壳移动,然后调整源和目的之父目录的 

svn:externals

 属性。

改变文件名称大小写

在 Windows 中,使用 Subversion 修改文件名称的大小写需要小技巧,因为在改名期间,两个文件名称需要同时存在。因为 Windows 的文件系统是大小写不敏感的,所以使用平常的改名命令是不能工作的。

这里(至少)有两种可能的解决方案来重命名文件而不丢失它的日志记录。在 subversion 里重命名是很重要的。仅在 Windows 资源管理器中重命名将会损坏你的工作副本!

解决方案 A)(推荐)

  1. 提交你工作副本中的改变到版本库
  2. 使用版本库的浏览器立即重命名该文件的大写(小写)为小写(大写)
  3. 更新你的工作副本

解决方案 B)

  1. 使用TortoiseSVN子菜单中的重命名命令将UPPERcase重命名为UPPERcase_ 格式
  2. 提交该更改
  3. 将UPPERcase_重命名为upperCASE格式
  4. 提交该更改

处理文件名称大小写冲突

万一在你的版本库中有两个名字相同但大小拼写不同(例如: 

TEST.TXT

 和 

test.txt

)的文件,你是不能在 Windows 客户端更新或者检出该包含该文件的目录的。当 Subversion 支持大小写敏感的文件名时,Windows 不支持。

它偶尔在两个人在独立的工作副本提交时发生,文件名称相同,只有大小写不同。它也会在具有大小写敏感的文件系统的系统中提交文件时发生,例如 Linux。

如果是那样的话,你得决定在这个版本库里的哪一个文件是你想保留的,哪一个是要删除(或重命名)的

防止两个文件名字相同

这有一个有用的服务器端脚本在http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/将会防止检入拼写(大小写)冲突文件。

修复文件改名

有时候你的IDE会因为执行反射操作,改名文件,当然它不能告诉Subversion。如果你尝试提交修改,Subversion会发现丢失了老文件,新增了未版本控制的新文件。你可以简单的增加新文件,但是你将丢失历史记录,因为Subversion不知道这些文件的关系。

更好的方法是通知Subversion这实际上是改名,你可以在提交和检查修改对话框中做此操作。简单选择老文件(丢失的)和新文件(未版本控制的),使用右键菜单 → 修复移动设置这两个文件是改名关系。

删除未版本控制的文件

通常你可以在Subversion中设置自己的忽略列表,例如忽略所有产生的文件。但是你如何清理这些忽略的项目,从而产生一个干净的构建呢?通常你在makefile中清理,但是如果你在调试makefile,或者修改构建系统,那么有一个清理方法是极为有用的。

TortoiseSVN 提供了使用扩展上下文菜单 → 删除未版本控制的项目…来清理工作副本。你可以在目录上右键操作时,保持 Shift按下,就可以看到这个上下文菜单。它会出现一个对话框,列出工作副本中的所有未版本控制的文件。你可以选择或取消删除的项目。

当删除这些项目时,使用了垃圾箱。所以如果你犯了错误,删除了应该版本控制的文件,你仍旧可以恢复。

上一篇: git回滚操作

继续阅读