你的修改
=======
来自版本库中的代码
>>>>>>>revision
此时,你可以选择:
打开冲突文件手动合并冲突
用上述3个文件中的任意一个覆盖你更改后的文件
用revert放弃修改。
如果你选择继续修改,在解决冲突后,选择“TortoiseSVN->已解决”项来通知SVN,此时SVN将删除3个临时文件,而你可以继续你的提交。
8.更新至版本N(Updatetorevision)
如果想看某文件的某个版本,可用“TortoiseSVN->更新至版本”项来实现,在弹出的对话框中可以选择:
更新至最新版本,或者
某一指定版本。
如果忘记了具体的版本号,可以点击“显示日志”,然后参照日志对话框中的日志信息来进行选择。
如果你只是简单地想要一个旧版本文件的本地复本,最好用如下方法:
用此方法是直接打开了日志对话框来进行操作。
不过用后应注意,不要在下次提交的时候把这个复本也提交进去。
9.显示日志(Showlog)
一个完整的版本日志对话框如下图所示:
此对话框的两个右键菜单比较有用,而且,选一个、两个或多个文件时,右键菜单均不相同。
可依据个人习惯选择使用。
默认只显示最近100条日志信息。
如果你要查看更多的日志信息,点击“Next100”,以获取下100个日志信息。
下述统计及3个过滤功能只对所列出的日志信息起作用。
“ShowAll”可以设定所查看日志信息的版本范围。
也可以通过时间范围来过滤日志信息。
通过“From……To”来设定。
放大镜提供日志信息的其它过滤功能。
可通过输入下列选项的相关内容来过滤日志信息:
“Statistics”是对日志信息的统计。
可选择使用。
10.添加(Add)
对于本地拷贝目录中的不受控文件,其右键菜单如下:
“添加”选项会将其添加到版本库中。
此操作也可以通过提交操作来实现。
如果此文件是不必添加到库中的文件,如开发过程中的一些临时文件,可以将其“添加到忽略列表”,以后提交的时候,SVN也就不会提示你此文件不受控了。
当右键一个不受控的文件时,还会出现一个菜单,允许你将所有有相同扩展名的文件添加到忽略列表。
如果选择了多个文件,就没有这个选项。
11.删除(Delete)、重命名(Rename)和移动
删除和重命名操作分别通过右键菜单中的“TortoiseSVN->删除”和“TortoiseSVN->改名”操作来完成。
不通过菜单来进行删除或重命名操作是一个不好的习惯。
因为如果你手动删除或重命名一个文件后,如果再进行更新操作,SVN会认为此文件丢失,进而把库里的文件更新到你的本地拷贝中。
所以请始终使用TSVN的菜单来进行相关操作,不要让SVN来猜测你的意图。
对于移动操作,应该这样来实现:
选择要移动的文件或目录,按住右键将其拖到新位置
松开右键,在弹出的菜单中选择“SVN移动版本控制的文件到当前位置”。
需注意的问题:
重命名文件后,应注意从文件所在的父目录处提交。
否则文件会丢失之前的版本信息。
对于目录操作也是这样
移动文件后,应注意从文件所在的新、旧目录的共同的父目录处提交。
否则文件会丢失之前的版本信息。
对于目录操作也是这样。
重命名目录后,应该在变更此目录中的任何文件前将此改动提交到版本库。
否则可能会造成此目录下文件版本的混乱。
如果误删除了一个文件,并且删除操作已经提交提交到版本库,也可以通过操作进行此文件的恢复。
方法为,打开“版本库浏览器”,在库中找到此文件,在右键菜单中选择“复制到工作拷贝”,在弹出的窗口中选择此文件的原目录进行文件添加,最后将变更提交到版本库即可。
12.恢复(Revert)和清理(clean)
当你在本地拷贝中进行了某项改动,但是还没有将此变更提交的服务器前,你可以通过“TortoiseSVN→SVN还原”来撤销之前的改动。
多项改动可以在弹出的窗口中选择性的撤销。
有时,由于服务器问题(重启/断电),一个Subversion指令不能成功地完成,你的工作副本因此被滞留在一个不一致的状态。
此时,你需要在本地拷贝的根目录上(这是最好的选择)使用“TortoiseSVN→清理”命令。
13.分支/标签(branch/tag)及切换(Revert)
至URL:
新分支/标签在库中的位置
从此复制到版本库:
可选择分支建立的版本
库中最新版本HEAD
库中任意指定版本
本地工作拷贝。
如果需要对不同版本的多个文件进行拷贝,只能用
实现。
切换工作拷贝至新分支/标记:
勾选此选项提交后,本地拷贝直接转到新分支/标记,否则本地拷贝不变。
如果日后想切换到此分支/标记工作,需用“TortoiseSVN->切换”来进行操作。
14.合并(Merge)
进行合并的步骤:
将工作副本切换到欲保存合并结果的URL,如从分支合并回主线时是trunk,然后在右键菜单中选择“TortoiseSVN->合并”;
选择欲合并内容的起始URL,可以通过点击1打开版本库浏览器来选择主线或任一分支;
选择欲合并的版本范围,通常通过点击2打开日志对话框来选择。
注意选择的起始版本号和选择后自动生成的起始版本号有什么不同。
点击“合并”确认合并操作前,可以先通过“预检”来看一下合并结果是否你想要的。
点击“合并”后,合并操作并没有提交到版本库,需进行“提交”操作来完成。
注意:
在每次提交合并结果到版本库时,都应该在日志中注明自己本次合并的起始和中止版本,这样可以避免日后重复合并已经合并过的修改。
15.导出(Export)
可以通过“TortoiseSVN->导出”来得到不受版本控制的文件,通常此种文件用来发布。
16.设置(Settings)
常规设置
语言:
可以选择自己喜欢的界面语言。
默认为English。
其他语言需下载相关语言包。
全局忽略样式:
可填入类似“*/bin、*/obj、*.bak、*.?
?
、*.jar、*.[Tt]mp”的内容,以文件名模糊匹配方式来匹配要忽略的文件。
但最好通过svn:
ingore属性来设置,因为属性是受控的,而且属性的设置会覆盖全局忽略样式。
关于文件名模糊匹配:
*:
匹配任意字符串,包括空串
?
:
匹配任意单个字符
[]:
匹配括号里多个字符中的任意一个字符,如果在某两个字符中间有“-”字符,例如[a-d],则a、b、c、d都在可选范围内
/:
表示目录。
例如,dir/*.[a-c]匹配dir目录下的*.a、*.b、*.c文件。
图标覆盖(图标叠加/图标重载)
受SVN控制的文件和文件夹,它的图标会变的很特别:
实际上,TortoiseSVN以其独有的图标对文件夹和文件进行了覆盖。
状态不同,覆盖的图标也不同。
相关图标集将在下一节介绍。
仅在资源管理器中显示图标覆盖:
默认为不勾选,此时在所有打开/保存对话框中也会显示图标覆盖(如下图)。
勾选后,将只在资源管理器中显示图标覆盖。
状态缓存:
关系到图标覆盖占用系统内存的大小。
“默认”是将图标覆盖相关信息缓存在一个独立进程(TSVNCache.exe)中,此进程将根据你机器上工作副本的大小占用几兆到几十兆不等的内存。
其优点是可以递归地显示文件夹中的状态。
“Windows外壳”是将图标覆盖相关信息缓存在外壳扩展dll中,只占1M左右的内存。
他只显示当前可见的文件或文件夹的状态。
“无”不会占用系统内存,此时文件夹只显示正常状态,而文件则不进行图标覆盖。
如果想查看工作副本的状态,需要使用“检查更新”对话框。
在选择“默认”时,同时可以选择下面的“如果文件夹包含未版本控制的文件,则标识为已修改”。
磁盘驱动器类型:
设置在何处进行图标覆盖。
一般只选择本地硬盘。
排除路径:
告诉TSVN不用在哪些路径下显示图标覆盖。
如果你有些很大的工作副本,而这些工作副本仅仅包含你完全不想改变的库文件,从而你也不需要显示图标覆盖,这时该功能将会很有用。
包含路径:
即使该路径处在某个取消图标覆盖显示的特定驱动类型下,或是处在上面的排除路径之下,也依然会显示图标覆盖。
TSVNCache.exe同样使用这些路径来限制它的扫描。
如果你想让它仅仅在某些特定文件夹里监视,就取消所有的驱动器类型,并仅仅包含你允许被扫描的文件夹。
图标集
默认时使用的是XPStyle方案,可选择自己喜欢的方案。
选择了方案后,使用过程中你会发现并不是所有的图标被使用在你的系统上。
这是由于Windows限制图标覆盖不能超过15个。
Windows自己用了4个,剩下11个可被别的应用程序使用。
而TortoiseSVN会限制自己以便让其他程序也有覆盖的机会。
它遵循规则如下:
▲正常,已修改和冲突总是被载入,并可见。
▲已删除只要有可能的就载入,但如果没有足够的空位,就使用已修改来代替。
▲只读只要有可能就载入,但如果没有足够的空位就使用正常来代替。
▲已锁定只在少于13个覆盖已经载入的情况下才加载,如果不满足这个条件就使用正常来代替。
▲已增加只在少于14个覆盖已经载入的情况下才加载,如果不满足这个条件就使用已修改来代替。
对话框一
默认的日志信息数目:
定义“TortoiseSVN->显示日志”中显示的日志数目,默认为100条,可根据自己的情况设置。
日志信息字体:
作用域为版本日志对话框的中间窗格,以及提交对话框时填写日志信息的窗格。
可选择自己喜欢的字体及字号。
日志信息使用短日期/时间格式:
勾选时在日志对话框中的时间栏显示短格式,如“2007-4-249:
28:
16”,默认显示格式为“9:
28:
16,2007年4月24日”。
可随意选择。
进程自动关闭:
当一个动作正确完成时,TSVN可以自动关闭所有的进程对话框。
这项设置允许你选择在何种情况下关闭对话框。
默认(推荐)的设置是手动关闭,允许你重新浏览所有信息来了解发生了什么。
当然,也可以根据自己的情况来选择下拉列表中的其他选项,如下图
对话框二
自动完成文件路径和关键词(只对至少前三个字母为英文的文件名起作用):
提交对话框包含了一个功能模块,可以解析被提交的一系列文件名。
当你输入提交列表中某个文件的前三个字母时,自动完成对话框就会弹出来,此时可以点击回车来直接完成这个文件名。
选择该选项来使用这个功能特性。
对自动完成进行多长时间的分析(秒):
通常不用更改。
当有大量文件需要程序检查,自动完成解析器可能会非常慢。
该超时时间设置可以防止提交对话框被长时间挂起。
仅在设置了tsvn:
projectlanguage时才进行拼写检查:
TSVN默认为对所以输入的日志信息进行拼写检查。
但如果你觉得不方便,可以勾选此选项。
日志中保留的最大条目数量:
TSVN默认保存最近25条你输入的日志信息供你选择,减少你的重复输入量。
此条目的数量会对注册表产生一定影响。
可根据的情况自定义。
如果提交失败,自动重新打开提交对话框:
当一个提交操作由于某些原因(如网络错误等)失败了,你可以选择该选项来使提交对话框保持打开,以便重新进行提交操作。
当然,若发生的错误是由冲突等必须解决的问题引起的,你必须先解决相关问题。
启动时连接版本库:
勾选时,在“检查更新”对话框启动时,自动连接版本库。
按数字顺序排序:
勾选时,在“版本库浏览器”中的文件将按数字排序,否则按ASCII码排序。
颜色
操作及状态显示颜色,主要在“提交”和“检查更新”对话框中显示。
例图:
版本分支图,仅在“版本分支图”对话框中显示。
但在实际设置时未见不同。
外观样式
右键菜单:
未选中的条目在右键菜单中直接显示,选中的条目在右键的TortoiseSVN子菜单中显示。
为右键菜单获取SVN状态:
见上图气泡中的解释。
使用顶级菜单的快捷键:
未勾选时右键菜单中TSVN条目的快捷键不起作用,而且所有条目的图标由TSVN勾画,比较美观;
勾选时快捷键被激活,但可能与windows中的某些条目的快捷键冲突,可以通过多次按下快捷键在冲突的条目中选择。
所有条目的图标由windows勾画,有点丑;
半勾选时快捷键被激活,切所有条目以纯文本方式显示,无图标。
已保存数据
可对机器上存储的
URL历史数据、
日志信息、
窗口的大小及位置、
认证数据四项信息进行清除。
17.属性(Properties)
想查看文件或文件夹的属性,可以通过两种方法实现
Tortoise->属性,或
windows右键菜单中的属性对话框中的Subversion选项卡(如下图)。
个人认为第一种方法比较方便。
属性对话框显示如下(图A):
点击添加按钮,弹出如下对话框(图B):
文件夹的添加属性对话框和文件的稍有不同,增加了“递归应用该属性选项”,而且属性下拉列表框中的可选属性要多,如下图:
其中,以“svn:
”开头的是SVN的通用属性;以“tsvn:
”开头的是TSVN的专有属性。
以“bugtraq:
”开头的属性暂时不介绍。
属性是受版本控制的,所以更改属性后需要进行提交操作。
属性有几个重要的应用:
关键字扩展(svn:
keywords)
SVN的关键字有5个:
LastChangedDate最后的改变日期,可以缩写为Date
LastChangedRevision最后修订版,可以缩写为Revision
LastChangedBy最后的改变作者,可以缩写为Author
HeadURL最近修订版的URL,可以缩写为URL
Id是以上关键字的组成集合
单个文件的实现方法:
将被$$封闭的关键字添加到文件中,例如$Id$,然后设置svn:
keywords属性值。
多个属性值以空格分隔。
只有在属性值中定义了的关键字才能被扩展。
整个目录的实现方法:
在目录的属性下拉列表框中并不存在svn:
keywords属性,但是对于目录没有而单个文件有的属性,可以通过在目录的属性对话框中手动输入并勾选“递归应用该属性”,来实现整个目录中所有文件该属性的定义。
小窍门:
在图A中点选任一属性值行,可“保存”此属性值留待以后使用;在图B中可以“载入”以前保存的属性值,只是属性值,属性名需要在下拉列表框中选择或者手动输入。
注意:
目前关键字扩展中的中文是乱码。
日后考虑解决方案。
外部定义(svn:
externals)
如果希望你本地拷贝的子目录来自不同的版本库(同一服务器甚至不同的服务器),可以使用外部定义来实现。
注意:
外部定义只能指向目录,不能指向单个文件
外部定义必须使用绝对路径
如果你的工作拷贝A中包含通过外部定义检出的文件B,而你又改了文件B,那么B的变更只能通过提交B或者B所在在外部引用文件夹来上传到服务器,直接提交A无法提交B的变更。
设置外部定义样例:
设置日志模板(tsvn:
logtemplate)
在需要定义日志消息格式化规则的工程中使用。
在你开始提交时,这个属性的多行消息会被插入日志消息编辑框。
你可以编辑它以便包含需要的信息。
设置日志最小长度(tsvn:
logminsize)
设置提交日志的最小长度。
如果你输入的日志短于预设值,提交会被禁止。
这个属性对于提醒你为每次提交提供一个适当的描述信息非常有用。
如果不设置这个属性,或者设置为0,那么就允许空提交信息。
如果你使用了tsvn:
logminsize属性,请确认这个长度大于模版的长度,不然就会失去其保护作用。
设置拼写检查所使用的语言模块(tsvn:
projectlanguage)
默认的可能为美国英语en-US,需改为中文(zh-CN),参照下表设置其值为936或0x0804。
有特殊需求也可以在此页面查找其他相关值MSDN:
语言标示符。
Localeidentifier
Locale
Localename
ANSIcodepage
0x0c04
Chinese(HongKongSAR,PRC)
zh-HK
950
0x1404
Windows98/Me,WindowsXPandlater:
Chinese(MacaoSAR)
zh-MO
950
0x0804
Chinese(PRC)
zh-CN
936
0x1004
Chinese(Singapore)
zh-SG
936
0x0404
Chinese(Taiwan)
zh-TW
950
18.补丁(patch)
多人并行开发时,如果几个人都随意的提交自己的修改,那么很可能使项目一直处于不稳定的状态。
这时可以从几个人中推选出一个Leader,只有这个人可以向服务器提交修改,而其他Worker只有读库的权限。
Worker想发布自己的修改,必须按下述步骤来执行:
把修改以补丁的方式发邮件至Leader处。
方法为:
在顶级目录处选择“TortoiseSVN->创建补丁”,然后将补丁保存并E-mail给Leader
Leader将此补丁应用到自己的工作副本,来检查Worker的修改是否有提交到服务器的价值。
方法为:
先在顶级目录处选择“TortoiseSVN->应用补丁”,然后选择收到的patch文件并点击确定,此时将弹出一个变更文件的列表,逐个双击此列表中的各个文件,它们将依次在TortoiseMerge进行更改前后的比较,将认为有价值的更改保留并保存到你的工作副本。
全部审查完后,将所有的变更提交到服务器。
此后,所有Worker就可以通过更新来接收新的变更。
此功能对新增文件或文件夹无效。
19.版本库浏览器(Repo-browser)
不想更新工作拷贝,却想查看一下某个版本时的文件列表?
版本库浏览器可以帮你实现这个愿望。
在右键菜单中选择“TortoiseSVN->版本库浏览器”,将弹出一个对话框,点击右上角的按钮,输入你想查看的版本号,就可以很方便的进行简单的查看了。
请自己试用一下对话框的各右键菜单的功能。
用法类似日志对话框。
20.版本分支图(Revisiongraph)
想知道你的文件的分支和标签情况?
通过“TortoiseSVN->版本分支图”,你可以知道分支/标签从什么地方开始创建,以及什么时候删除。
下图为一个目录的版本分支图,从图上我们可以了解到如下信息:
在版本30的时候创建了第一个分支,起始版本号为31;
主线和分支一同时发展;
然后又在版本10创建了第二个分支,起始版本号为34;
版本分支图只显示
初始版本1;
分支的起始节点;
主线及各分支的HEAD节点;
将鼠标移到相应版本上可以显示相关日志信息;
自上而下的显示出版本的高低;
实际上,目录和单个文件的版本分支图所显示的信息会稍有不同
对目录:
不显示合并的相关信息;
对单个文件:
显示;
当删除分支后,删除的节点会在版本分支图上显示(对目录、文件);
普通的增删节点只在单个文件的版本分支图中显示;
可以在版本分支图中选择任意两个版本来进行差异比较。
21.追溯(Blame)
有时你不仅要知道哪一行做了修改,还要精确地知道谁修改了一个文件中的哪一行。
追溯文件
单个文件的右键菜单中存在“TortoiseSVN->追溯”项,可实现此功能。
在弹出的对话框中输入你想追溯的起、止版本号,如果对早期版本的修改