2007年8月1日星期三

SVN 日常使用指南

TortoiseSVN的设置

想知道不同的设置是干什么用的,你只需将鼠标指针在编辑框/选项框上停留一秒钟...一个帮助提示气泡就会弹出来。

常规设置

图 5.41. 设置对话框,常规设置页面

设置对话框,常规设置页面

这个对话框允许你指定自己喜欢的语言,同时也可做那些与Subversion相关的特殊设置。

语言

选择你TSVN的用户界面语言。不然你还期望从这里得到啥别的?

每周自动检查新版本

如果检查过,TSVN将每周联系它的下载站点一次,来看看程序是否有个可用的新版本。若你想马上得到结果,使用 立即检查 按钮。无论如何,新版本不会被自动下载,而只是你将收到一条提示信息对话框,告诉你有新版本可用。

系统声音

TSVN已经默认安装了三个自定义声音。

  • 错误

  • 提示

  • 警告

你可以使用Windows控制面板中的声音属性,来选择不同的声音(或是把这些声音完全关掉)。配置 按钮是一个打开控制面板声音属性的快捷方式。

全局忽略样式

全局忽略样式被用来防止非版本控制的文件在例如提交时的对话框中被列出来。那些符合样式的文件,在执行导入操作时将同样被忽略掉。通过在样式框中输入文件名或扩展名来忽略文件或文件夹。不同的样式之间将以空格分隔,例如 */bin */obj *.bak *.~?? *.jar *.[Tt]mp。例子中前两个条目表示文件夹,其他四个表示文件。这些样式将采用文件名模糊匹配的方式来匹配要忽略的文件。阅读 “忽略(Ignore)列表中的文件匹配”一节 以获得更多信息。

值得注意的是,你在这里指定的忽略样式将同样作用于你本机上的其他Subversion客户端,包括命令行客户端。

小心

如果你象下面段落那样使用Subversion配置文件来设置一个 全局-忽略 样式,那么它将覆盖你在这里做的设置。该Subversion配置文件可以象下面段落描述的那样,通过 编辑 按钮来访问。

忽略样式将作用于你所有的项目工程。因为它是非版本控制的,所以它将不会对其他的用户起作用。相对而言,你也可以使用可版本控制的 svn:ignore 属性来把要忽略的文件或文件夹排斥在版本控制之外。阅读 “忽略文件和目录”一节 以获得更多信息。

将文件日期设置为“最后提交时间”

该 选项通知TSVN在做检出或更新操作时,把文件日期设置为最后提交的时间。否则TSVN将使用当前日期。如果你在做软件开发的话,使用当前日期是总体上最 好的选择,因为那些软件构建器通常通过查看时间戳来决定需要编译哪些文件。如果你使用了“最后提交时间”并把代码文件还原到了一个旧版本,你的工程可能就 不会像你期望的那样被编译了。

Subversion配置文件

使用 编辑 按钮来直接编译Subversion配置文件。有些设置不能被TSVN直接修改,就需要在这里完成。可以阅读 运行时配置 来获得有关Subversion 配置 文件的更多信息。在 设置自动属性 中的章节介绍了可以在这里配置的特殊偏好部分。值得注意的是,Subversion可以从许多不同的位置读取配置信息,因此你也就需要了解哪一个将优先起作用。阅读 配置与Windows注册表 来获取更多信息。

使用“_svn”目录替代“.svn”目录

在使用VS.NET环境做web工程时,将无法处理 .svn 文件夹,但Subversion是要用这些文件夹来储存自己的内部信息的。这可不是Subversion的bug,这bug是VS.NET和它使用的frontpage扩展带来的。阅读 “Subversion 的工作文件夹”一节 来获得有关此问题的更多信息。

若你想改变Subversion和TSVN的这些行为,就可以使用这个选项框来设置控制这些的环境变量。

你应该注意到: 改变该选项将不会使已存在的工作副本中的管理文件夹从“_svn”自动转换到“.svn”。你需要使用一个脚本(查看我们的FAQ)来自行完成这项工作,或是简单地重新检出一个新的工作副本。

外观与样式设置

图 5.42. 设置对话框,外观与样式页面

设置对话框,外观与样式页面

该页面允许你指定: 在TortoiseSVN的主上下文菜单中哪些条目可以直接在鼠标右键菜单显示,哪些在TortoiseSVN子菜单显示。默认情况下很多项未被勾选,只在子菜单显示。

获得锁会有一个特别的情况,你可以将其提升到顶级带但,但是大多数文件不需要锁定,这样做只是添加了混乱。然而,一个标记为svn:needs-lock属性的文件每次编辑前都需要那个操作,所以这个菜单会进入顶级菜单会比较方便。选定这个选项,会使设置svn:needs-lock属性的文件的Get Lock出现在顶级菜单中。

如果在你的工作副本下有大量的文件,那么你 右键点击 该文件夹的时候将花费较长的时间使上下文菜单显示出来。这是因为在你查询文件夹状态的时候,Subversion要去获取其下所有文件的状态。你可以在这里取消对 为右键菜单获取SVN状态 选项的勾选以避免这种延迟。要注意的是,文件夹的上下文菜单有时不太正确,可能会包含一些本来不该在那儿的条目。举个例子,右键点击一个新 添加 的文件夹,你可能会看到 TortoiseSVN显示日志 的操作选项,但那个是不会起作用的,因为该文件夹还没真正提交到版本库里。

选项 使用顶级菜单的快捷键 有三种状态:

未勾选(默认)

这种状态下,菜单项全部是由TSVN画出的,不会显示任何快捷键。

已勾选

这种状态激活了TSVN命令的快捷键,但这些与浏览器右键菜单中的其他快捷键显然存在起冲突的可能。多次按下快捷键将循环匹配右键菜单中共享同个快捷键的条目。这种状态下,菜单项是被Windows画出来的,而且看上去丑的要命。

半勾选(灰色)

这种模式下快捷键被激活,同时菜单项将以纯文本的形式被画出,不显示任何图标。

图标叠加设置

图 5.43. 设置对话框,外观与样式页面

设置对话框,外观与样式页面

此页面允许你选择TSVN为哪些条目显示图标覆盖。选择网络磁盘可能会非常慢,所以默认情况下不为定位于网络共享中的工作副本显示图标覆盖。你甚至可以取消所有的图标覆盖,但那样做还剩下什么好玩儿的呢?

USB闪存看上去是个特殊情况,因为驱动类型是设备自主标识的。于是有些显示为固定驱动器,而有些显示为可移动磁盘。

默认情况下,图标覆盖将不止显示在Windows资源浏览器下,同样会显示在所有的打开/保存对话框里。如果你想让它们 仅仅 显示在Windows资源浏览器下,勾选 仅在资源管理器中显示图标覆盖 选项。

因为它要花费一段时间来获取工作副本的状态,TSVN将使用一个缓存来存储这些状态,从而使浏览器在显示图标覆盖时,资源占用的不太厉害。你可以根据你的系统和工作副本的大小来在这里选择让TSVN使用哪种类型的缓存:

默认

把所有状态信息缓存在一个独立进程中(TSVNCache.exe)。该进程监视所有驱动器的更改,并在工作副本中的文件被修改时重新获取其状态。该进程以最低优先级运行,所以其他程序不会被它挤兑。这同样意味着状态信息并不是 实时 的,因为它需要几秒钟时间处理图标覆盖的变化。

优点: 图标覆盖递归地显示状态,就是说,如果一个处在工作副本深处的文件被修改了,所有途径的文件夹包括工作副本的根目录都会显示出修改的图标覆盖。也因为该进程可以向Windows外壳发送通知,资源管理器左面的树形图通常也会更改。

缺点: 即使你已经不在项目下工作了,该进程仍然持续运行。取决于你工作副本的数量和大小,它将占用10-50 MB的RAM内存空间。

Windows外壳

缓存在外壳扩展dll中直接完成,但仅仅是为那些当前可见的文件夹。每次你浏览到其他文件夹,状态信息就会被重新获取。

优点: 仅仅需要很少的内存(大约1 MB),并且可以 实时 显示状态。

缺点: 因为仅有一个文件夹被缓存,图标覆盖不会递归地显示状态。在大一些的工作副本下,它在浏览器中显示一个文件夹将比默认缓存模式花费更多时间。而且 mime-type 列将无效。

在这种设置下,TSVN在浏览器里就完全不去获取状态了。因此,版本控制下的文件将不会获得任何图标覆盖。文件夹也仅仅有个“正常”状态的图标覆盖,其他的不会显示,也不会有其他额外的列可用。

优点: 绝对不会占用任何额外的内存,也完全不会减慢浏览器的浏览速度。

缺点: 文件、文件夹的状态信息不会显示在浏览器中。要获知你的工作副本是否被修改了,你需要使用“检查更新”对话框。

若你选择了默认选项,将同样决定如下选择: 在文件夹包含非版本控制的项目时,把文件夹图标覆盖标记为已修改。这个有用的设置可以提醒你已经创建了非版本控制的新文件。

排除路径 是被用来告诉TSVN 不用 在哪些路径下显示图标覆盖和状态列。如果你有些很大的工作副本,而这些工作副本仅仅包含你完全不想改变的库文件,从而你也不需要显示图标覆盖,这时该功能将会很有用。举个例子:

填写 f:\development\SVN\Subversion仅仅 在这个特殊文件夹上取消图标覆盖。 你仍然可以在该路径下的所有文件、文件夹上看到图标覆盖。

填写 f:\development\SVN\Subversion* 将在路径以 f:\development\SVN\Subversion 开始的 所有 文件和文件夹上取消图标覆盖。这意味着你在该路径下的任何文件/文件夹上都将看不到图标覆盖了。

包含路径 也使用同样的语法。除了有些反例: 即使该路径处在某个取消图标覆盖显示的特定驱动类型下,或是处在上面的排除路径之下, 也依然会显示图标覆盖。

TSVNCache.exe 同样使用这些路径来限制它的扫描。如果你想让它仅仅在某些特定文件夹里监视,就取消所有的驱动器类型,并仅仅包含你允许被扫描的文件夹。

图标集选择

图 5.44. 设置对话框,图标集页面

设置对话框,图标集页面

你可以选择你最喜欢的覆盖图标集。要注意的是,倘若改变了覆盖图标集,你可能需要重启计算机使更改生效。

TSVN对话框设置一

图 5.45. 设置对话框,对话框一页面

设置对话框,对话框一页面

此对话框允许你按照喜欢的方式去配置一些TSVN的对话框。

默认的日志信息数

限制你第一次选择 TortoiseSVN显示日志 时,TSVN向服务器获取的日志信息数。在服务器连接缓慢时很有用。你可以使用 全部显示下100(条) 来获得更多信息。

日志信息字体

选择日志信息显示的字体样式和大小,作用域为版本日志对话框的中间窗格,以及提交对话框时填写日志信息的窗格。

日志信息使用短日期/时间格式

如果标准长度的日期/时间信息占在用了过多的屏幕空间,可以使用短格式。

进程对话框

当一个动作正确无误地完成时,TSVN可以自动关闭所有的进程对话框。这项设置允许你选择在何种情况下关闭对话框。默认(推荐)的设置是 手动关闭 ,允许你重新浏览所有信息并检查发生了什么。当然,你可能会决定忽略某些类型的信息并在你的操作没做出什么重大改变的情况下让对话框自动关闭。

如无合并、添加、删除操作,自动关闭 意味着如果有简单更新的话,进程对话框将关闭。但如果版本库的更改和你的内容进行了合并,或若有任何文件被添加或删除,对话框将保持打开。若操作中发生什么冲突和错误这些对话框也将同样保持打开。

对本地操作自动关闭(如无合并、添加或删除操作,自动关闭) 意味着进程对话框当 如无合并、添加或删除操作 时自动关闭,但仅限于那些如添加文件、还原等本地的操作。在做远程操作时对话框将保持打开。

无冲突时自动关闭 更放宽了标准,即使在无合并、添加、删除操作时也同样关闭对话框。当然,如果操作发生了任何冲突或错误,对话框将保持打开。

如无错误,自动关闭 即使在有冲突发生时也会关闭。维持对话框打开的唯一条件是发生了错误,使得Subversion无法完成任务。举个例子,一个更新操作由于服务器不可达而失败了,或是一个提交操作因为工作副本已经过期而失败。

使用工作副本的URL作为默认的来源URL

在合并对话框里,默认行为是在每次合并中记忆 起始: 的URL。无论如何,都有某些人喜欢在他们的版本进化树中从很多不同的位置执行合并操作,他们发现从当前工作副本的URL开始更方便些。该URL可以随后被编辑来指向一个同级路径或另一个分支。

缺省检出路径

你可以指定缺省的检出路径。如果你保持所有检出在同一个地方,那么预先填写的路径是极为有用的,这样你只需要在路径末尾增加新的目录名称即可。

缺省检出URL

你可以指定缺省的检出URL。如果你经常检出一些大项目的子工程,那么预先填写的URL是极为有用的,这样你只需要在路径末尾增加新的工程名称即可。

TSVN对话框设置二

图 5.46. 设置对话框,对话框二页面

设置对话框,对话框二页面

递归处理未进行版本控制的文件夹

若这个选项框被选中(默认状态),那么一个非版本控制的文件夹,不论在 添加提交检查更新 时显示的是什么状态,它的每个子文件和子文件夹都要同样显示。取消选择将减少这些对话框中的混乱程度。这样一来如果你选择添加一个非版本控制的文件夹,将会非递归地添加。

自动完成文件路径和关键词

提交对话框包含了一个功能模块,可以解析被提交的一系列文件名。当你输入一个提交列表中某个文件的前三个字母时,自动完成对话框就会弹出来,使你随后可以点击回车来直接完成这个文件名。选择该选项来使用这个功能特性。

对自动完成进行多长时间的分析(秒)

如果有大量文件需要程序检查,自动完成解析器可能会非常慢。该超时时间设置可以防止提交对话框被长时间挂起。若你错过了某些重要的自动完成信息,你可以延长该超时时间。

仅在保留了 tsvn:projectlanguage 时才进行拼写检查

若你不愿意在所有提交操作时都进行拼写检查,就选择该选项。而后拼写检查功能将在项目属性做出明确要求时才生效。

日志中保留的最大条目数量

TSVN可以为每个版本库保存你访问时所输入的最后25条日志信息。你可以自定义该数目。若你有很多不同的版本库,你可能会希望减少该数目以防止向注册表中填入过多信息。

如果提交失败,自动重新打开提交对话框

当 一个提交操作由于某些原因(工作副本需要更新、pre-commit钩子程序拒绝了提交、网络错误等等)失败了,你可以选择该选项来使提交对话框保持打 开,以便重新操作。当然,你应该注意到这可能会导致一些问题。若发生的错误意味着你需要更新你的工作副本,而此更新操作将导致冲突,那么你必须先解决这些 事情再说。

启动时连接版本库

“检查更新”对话框将默认检查工作副本,但仅当你点击 检查版本库 时才连接你的版本库做检查。若你想总是去检查版本库,就可以使用该设置来使版本库检查的动作每次都自动启动。

按数字顺序排序

版本库浏览器可以使用一个更智能的排序算法,该算法处理包含数字的路径的效果比纯按ASCII排序效果要好。这在某些时候会变得很有用,比如用来使版本号标签排成正确的顺序。该选项可以控制你所使用的默认排序类型。

TortoiseSVN 颜色设置

图 5.47. 设置对话框,颜色页面

设置对话框,颜色页面

此对话框允许你按照你喜欢的方式来配置TSVN对话框使用的文本颜色。

可能或确实有冲突/有问题

当更新时或合并时发生了冲突。如果对应于版本控制下的文件/文件夹,存在一个同名的非版本控制的文件/文件夹,此时做更新将被阻碍。

此颜色同样被用在进程对话框的错误信息中。

添加文件

向版本库添加的条目。

丢失/已删除/已替换

已从工作副本中遗失的条目;已从版本库中删除;或已经从工作副本删除并且被另一个同名文件替换。

合并

从版本库所做的更改被成功地合并到工作副本,并无任何冲突产生。

已修改/已复制

已经增加(现在只是修改),或者在版本库中复制。也在包含复制条目的日志对话框中使用。

删除的节点

一个已经从版本库中删除了的条目。

添加的节点

一个通过添加、复制或移动操作,已经被添加到版本库的条目。

重命名的节点

一个在版本库中已经被重命名的条目。

替换的节点

该原始条目已经被删除,且有同名条目替换了的条目。

网络设置

如果需要穿透你公司的防火墙,在这里可以配置你的代理服务器。

如果你需要对每个版本库建立一套代理设置,你必须使用Subversion服务器文件来配置。使用编辑来直接访问该配置文件(servers.txt)。该文件的细节和使用方法可以参考运行时配置

你 同样可以在此指定SSH客户端程序,用来支持TortoiseSVN同使用svn+ssh协议的版本库建立安全连接。我们推荐您使用 TortoisePlink.exe。这是著名的Plink程序的一个定制版本, 并且业已包含在TortoiseSVN之中,但它被编译成了一个无窗口的应用,因此当你每次认证的时候将不会看到弹出的DOS窗口。

这里有个不弹出窗口的副作用: 将没有什么错误信息可供你追踪。因此倘若认证失败你将得到一个信息说: “Unable to write to standard output”。这样一来,我们就推荐你第一次设置时使用原始的Plink程序;而当一切工作正常之时,再使用定制版的TortoisePlink,并且重复利用那些相同的参数。

外部程序设置

图 5.48. 设置对话框,差异查看页面

设置对话框,差异查看页面

在这里你可以定义你自己的差异查看/合并工具. 默认设置是使用与TortoiseSVN一同安装的TortoiseMerge。

阅读 “其他的比较/合并工具”一节 来了解人们为配合TortoiseSVN工作而使用的外部差异查看/合并程序列表。

差异查看器

有时你可能需要一个外部的差异查看程序来比较不同版本的文件。在为你的命令行填写各种可选参数的同时,要确保这些外部程序从中获得文件名。在TortoiseSVN编辑命令行时,使用以 % 开头的替代参数。当外部程序执行至遇到这些替代参数,它将从TortoiseSVN那里获取那些实际的值。参数的填写顺序将依赖于你使用的差异查看程序。

%base

没更改的原始文件

%bname

原始文件的窗口标题

%mine

你更改过的新文件

%yname

你新文件的窗口标题

窗口标题并不一定代表真正的文件名。TortoiseSVN把它伪装成一个名字用来创建和显示。因此,倘若你在对比一个版本为123的文件和你当前工作副本中的文件,名字将显示为 文件名 : 版本 123文件名 : 工作副本

例如,使用 ExamDiff Pro:

C:\Path-To\ExamDiff.exe %base %mine

或者使用 KDiff3:

C:\Path-To\kdiff3.exe %base %mine --L1 %bname --L2 %yname

或者使用 WinMerge:

C:\Path-To\WinMerge.exe -e -ub -dl %bname -dr %yname %base %mine

或者使用 Araxis:

C:\Path-To\compare.exe /max /wait /title1:%bname /title2:%yname
%base %mine

如果你使用了 svn:keywords 属性来扩展关键词,特别是那些 revision 版本关键词,那么在那些纯粹在关键词上取值不同的文件之间对比将有一些不同。同样如果你使用 svn:eol-style = native,那么在工作基础版本文件只有纯粹的 LF (换行)结束符的地方,你的文件将有完整的 CR-LF (回车-换行)结束符。TSVN在做差异对比操作之前,通常会先行对那些扩展关键词和结束符等格式进行解析转换,从而自动隐藏这些差异。无论如何,在遇到大文件时这样做无疑会经过一个很长的处理时间。如果取消对 与基础版本比较时转换文件 的勾选,那么TSVN将忽略这些对文件的预处理。

合并工具

外部合并程序被用来解决文件冲突。像差异查看程序那样,替代参数同样被用在命令行中。

%base

没有被你或他人更改的原始文件

%bname

原始文件的窗口标题

%mine

你更改过的新文件

%yname

你新文件的窗口标题

%theirs

档案库中存放的文件

%tname

档案库中文件的窗口标题

%merged

发生冲突的文件,同时将被合并后的文件替换

%mname

合并文件的窗口标题

例如,使用 Perforce Merge:

C:\Path-To\P4Merge.exe %base %theirs %mine %merged

或者使用 KDiff3:

C:\Path-To\kdiff3.exe %base %mine %theirs -o %merged
--L1 %bname --L2 %yname --L3 %tname

或者使用 Araxis:

C:\Path-To\compare.exe /max /wait /3 /title1:%tname /title2:%bname
/title3:%yname %theirs %base %mine %merged /a2

差异查看/合并工具的高级设置

图 5.49. 高级差异比较设置/高级合并设置的对话框

高级差异比较设置/高级合并设置的对话框

在高级设置中,你可以为每种文件类型都定义一个不同的差异比较/合并程序。例如,你可以指定Photoshop作为.jpg文件的 “比较” 程序 :-) 也可以按照 svn:mime-type 属性指定差异/合并程序。

无需任何通配符,你仅需指定文件的扩展名,包含开始的点,但是没有任何通配符。使用 .BMP 来描述Windows位图文件,而 不是*.BMP。如果使用svn:mime-type属性,要指定多媒体文件类型,包含斜线,例如text/xml

统一的差异查看器

一个统一差异文件(补丁文件)的查看程序。不需要任何参数。默认 选项遵循先检查 .diff 文件,再检查 .txt 文件的顺序。如果你没有 .diff 文件的查看器,就需要用记事本来查看了。

原始Windows记事本程序对未使用标准“回车-换行”结束符的文件支持的并不好。而很多统一差异文件都仅仅使用“换行”结束符,因此他们的格式在记事本中显示的并不好。无论如何,你可以下载一个免费的记事本2 Notepad2,它不但可以正确地显示结束符,更可以为差异文件中添加和删除的那些行做颜色标记。

已保存数据的设置

图 5.50. 设置对话框,已保存数据设置页面

设置对话框,已保存数据设置页面

为您方便着想,TortoiseSVN保存了很多你用过的设置,并记录你最近浏览过的地址。如果你想清空这些数据缓存,就在这里操作。

URL历史记录

每次你检出一个工作副本,合并那些更改的文件,或仅仅是在使用版本库浏览器时,TortoiseSVN都将保存一个记录,记录那些最近使用过的URL,并在一个下拉列表框中显示出来。有时列表会被逐渐增多的过期URL弄得乱糟糟的,所以有定期清理一下的必要。

如果你希望从列表中删除单独的条目,可以点击下拉列表,移动鼠标到你要删除的项上,然后按组合键SHIFT+DELETE

日志信息

TortoiseSVN同时也储存你最近提交时填写的日志信息。对应每个版本库都要储存这些信息,所以如果你访问过很多版本库,这个列表将变得非常大。

窗口大小及位置

许多对话框都可以记录你最后一次使用时的窗口大小和位置。

认证数据

当 你在登陆某个Subversion服务器,填写认证信息时,用户名和密码也可以被保存在本地,你也就不用每次都输入了。但考虑到一些安全因素,你可能会有 清除这些认证信息的愿望,或者你仅仅是想换个不同的用户名登陆...John知道你正在用他的机器么?(规范点儿,用你自己的用户名登陆版本库吧,伙计 *by Jax)

如果你仅想清除某个特定版本库的认证数据,读一下 “认证”一节 有关怎样寻找缓存数据的说明。

注册表设置

一些极不常用的设置只有通过直接修改注册表的方式才能生效。

配置

通过编辑注册表 HKCU\Software\TortoiseSVN\ConfigDir,你可以为Subversion的配置文件指定一个不同位置。这将影响到TSVN的所有操作。

缓存托盘图标

要为TSVNCache程序添加一个缓存托盘图标,先在 HKCU\Software\TortoiseSVN\CacheTrayIcon 的位置,创建一个 DWORD 值,取值为1。这确实只对开发者才有点用处,因为它允许你来优雅地关闭TSVNCache,而不是在进程列表里kill掉它。(托盘图标可以显示当前已缓存了的文件夹数目 *by Jax)

Subversion 的工作文件夹

在使用VS.NET环境做web工程时,遇到.svn文件夹会出问题,但Subversion是要用这些文件夹来储存自己的内部信息的。这可不是Subversion的bug,这bug是VS.NET和它使用的frontpage扩展带来的。

在Subversion 1.3.0和TSVN 1.3.0里,你可以设置环境变量 SVN_ASP_DOT_NET_HACK,来通知Subversion用 _svn 文件夹替代 .svn 文件夹。你必须重启你系统的外壳程序来使环境变量生效,一般意味着你要重启PC。在1.4.0里这项替代工作就变得非常简单,你只需从常规设置页面选择一个单选框: 使用“_svn”目录替代“.svn”目录。——参考 “常规设置”一节

若想获得更多信息,了解避免该问题的其他方法,请读读我们 FAQ 里的文章。

钩子脚本

图 5.51. 设置对话框,钩子脚本页

设置对话框,钩子脚本页

这个对话框允许你指定当特定 Subversion 动作执行时,自动执行的钩子脚本。

应用程序,例如钩子,可能调用如SubWCRev.exe这样的程序,来更新提交后的版本号,可能还会出发重新构建。

由于各种安全理由和实现问题,钩子脚本在本地机器定义,而不是象工程属性那样。不管是谁提交,都可以定义它做什么事情。当然,你也可以选择调用一个受版本控制的脚本。

图 5.52. 设置对话框,配置钩子脚本页面

设置对话框,配置钩子脚本页面

要增加钩子脚本,直接点击 增加 ,然后输入脚本即可。

现在有六种钩子脚本类型可用

开始提交

在提交对话框之前调用。当钩子修改受版本控制的文件,影响了提交的文件列表的时候适用。

提交之前

在提交对话框点击确认之后,实际提交之前调用。

提交之后

在提交结束后调用(无论成功或失败)

开始更新

在更新到版本对话框显示之前调用

更新之前

在 Subversion 更新实际开始之前调用

更新之后

在更新之后调用(无论成功或失败)

为特定工作目录定义的钩子。你只要指定顶级路径;如果在子目录内执行提交,TortoiseSVN 会自动向上搜索匹配路径。

然后你要指定要执行的命令行,以钩子脚本或可执行文件的路径开始。它可以是批处理文件,可执行文件,或者有效的windows关联的其它文件类型,例如perl文件。

命令行可以包含被TortoiseSVN填写的几个参数。这些参数依赖于调用了什么脚本。

开始提交

%PATHS%

提交之前

%PATHS%%SELECTEDPATHS%

提交之后

%SELECTEDPATHS%%REVISION%%ERROR%

开始更新

%PATHS%

更新之前

%PATHS%

更新之后

%PATHS%%REVISION%%ERROR%

每个变量的含义如下:

%PATHS%

当操作开始时选择的路径。例如当启动提交对话框是在资源管理器中选择的路径。如果选择了多个路径,它们用*自负隔开。

%SELECTEDPATHS%

我们在提交对话框内选择的路径。如果选择了多个路径,那么它们用*字符分割。

%REVISION%

在提交完成后的版本库的版本

%ERROR%

如果操作成功,它是空的,否则操作失败时就显示错误信息。

如果你想Subversion 操作直到钩子完成才结束,就选择等待脚本结束

通常脚本运行时,你会想隐藏丑陋的控制台窗口,所以默认选择运行时隐藏脚本。为了调试,你可能想观察控制台窗口的输出。

没有评论: