预览模式: 普通 | 列表

[转自上海棠盈阁软件咨询有限公司内部Wiki]

就内容而言,本文可能会包含:将RB与TortoiseSVN一同使用的注意事项、使用RB版本控制系统工程的注意事项和使用TortoiseSVN的注意事项 :-)

基本原则:使用TortoiseSVN的基本原则之一,就是所有对已由版本控制系统管理的文件的删除、重命名、移动等操作应一律使用TortoiseSVN相关的菜单,而不是资源管理器本身提供的功能来完成。

1. 新增文件或文件夹
在RB的版本控制系统(rbvcp)工程中添加了新工程项后,RB会自动在磁盘上添加一个与工程项对应的文件。如果在工程中添加了文件夹,那么RB会自动创建一个文件夹。因此在递交前要注意将这些新增文件或文件夹添加到版本控制系统中(或者说工作拷贝的仓库中),做法有二:

  • 右键单击资源管理器中的合适的目录(即含有新增文件或文件夹的目录),在弹出的右键菜单中使用TortoiseSVN子菜单中的Add命令添加所有新增项目到版本控制系统中
  • 或者,右键单击资源管理器中的合适的目录(比如整个项目的顶级目录),在弹出的右键菜单中使用Commit命令,在随后弹出的对话框中勾选左下角的“Select / deselect All”复选框,这样在递交时新增文件或文件夹会被自动先添加到版本控制系统中

注意,在使用Commit时,不要急于按下对话框上的提交按钮,要先填写好日志,检查是否要勾选“Select / deselect All”复选框,全好了之后再递交。

2. 删除文件或文件夹
从RB工程中删除新工程项(或文件夹)后,如果所删除的工程项对应的文件已被添加到版本控制系统中,那么它并不会被从版本控制系统中去除,也不会被从磁盘 上删除。此时要右键单击相应的文件或文件夹,在弹出的右键菜单中使用TortoiseSVN子菜单中的Delete命令,将它们设置为需要从版本控制系统 中删除的项目。注意,这些文件夹一般不会立即被删除,要在下次Commit后,才会被TortoiseSVN自动从磁盘上删除。

3. 删除以“.obsolete”结尾的文件或文件夹
在 从外部导入工程项(比如拖曳到RB的工程编辑器中) 并保存工程和一些其他情况下,将会产生一个.obsolete结尾的文件。比如将WinMain.rbfrm添加到另一个工程中并保存,将会产生一个 WinMain.rbfrm.obsolete备份文件,在Commit时,如果在Commit对话框上的文件列表框中发现这些文件,可以右键单击相应的 行并从随后弹出的上下文菜单中选择Delete。注意,不要递交任何.obsolete文件或文件夹,不要将它们Add到版本控制系统中。

4. Commit时忘记填log了怎么办?
可 以从TortoiseSVN子菜单中选择Show Log子菜单,在随后弹出的日志查看窗口的列表框中单击刚才递交的ChangeSet对应的行,然后在下面的文本框上右键点击,从上下文菜单中选择 “Edit Log”。TortoiseSVN会弹出日志编辑对话框以便补填日志。

5.“.obsolete”文件夹带来的递交问题的解决办法 ~NEW~
“.obsolete” 文件夹有时会带来额外的递交问题。比如工程中有一个文件夹ABC,其中有几个类或模块,当调整文件夹显示的位置(比如上移、下移)并且修改过其中的内容 后,再保存工程,磁盘上会出现一个ABC.obsolete和一个ABC文件夹。实际上RB的IDE将原来磁盘上的ABC文件夹更名为了 ABC.obsolete并重新用内存中的数据创建了ABC文件夹和其中的各个工程项文件。在递交时会遇到问题。原因分析如下:

  • 原来ABC文件夹中保存工作拷贝数据的“.svn”隐藏文件夹和其中的数据现在跑到ABC.obsolete里面去了,TortoiseSVN无法找到它们,因而ABC文件夹现在处于和尚未添加到版本控制系统的工作拷贝中的那些文件相同的状态。
  • 如果想用TortoiseSVN的Add子菜单重新添加ABC文件夹,也会失败,因为ABC曾经被添加到版本控制系统中,又没有从版本控制系统中删除的记录,因此不可能允许你再添加它

解决方法:将 ABC.obsolete里“.svn”隐藏文件夹移动到ABC文件夹中。如果看不到这个隐藏文件夹,请 先使用资源管理器的【工具】菜单的【文件夹选项】子菜单来显示隐藏文件。移动了“.svn”之后,可以试着对较顶级的文件夹(比如DocuSteward 或DocuSteward\Src)使用【TortoiseSVN】右键菜单的【Clear Up】子菜单(带扫帚图标的那个)清理下。然后删除ABC.obsolete(由于它还没被添加到版本控制系统,因此使用资源管理器或 TortoiseSVN的删除命令均可,用TortoiseSVN的ignore子菜单来忽略它也可以,反正“.obsolete”文件/文件夹里的都是 工程中不再使用的东西)。最后应该就可以正常递交了。

(未完待续)

分类:编程开发 | 固定链接 | 评论: 0 | 引用: -18 | 查看次数: 3852