SVN安装与使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一篇服务器配置方案
我们所选用的客户端软件是TortoiseSVN,服务器软件提供以下三种方案。
可以依据自身条件选择。
假设我们已经安装了客户端软件,如果没有安装,请到官方网站TortoiseSVN下载Subversion的Windows客户端TortoiseSVN。
在Download页面的我们可以选择下载最新版本。
/tortoisesvn/TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi?dow nload或者/downloads.html下载。
注意:如果使用方案一,那么客户端软件最好和服务器软件匹配,否则在版本库管理会出现找不到版本库的问题。
有可能是服务端找不到客户端建的版本库。
在客户端软件店的“关于”菜单可以看到客户端匹配的服务器软件版本号。
方案一SVN服务器+TortoiseSVN客户端
1. 软件下载
到官方网站的下载二进制安装文件,来到二进制包下载部分,找到Windows NT, 2000, XP and 2003部分,然后选择" this directory ",这样我们可以看到许多下载的内容。
选择合适的版本。
2. 服务器和客户端安装
服务器安装。
直接运行svn-1.4.0-setup.exe(根据客户端使用匹配的服务器软件)。
然后根据提示安装即可,这样我们就有了一套服务器可以运行的环境。
3. 建立版本库(Repository)
运行Subversion服务器需要首先要建立一个版本库(Repository),可以看作服务器上存放数据的数据库,在安装了Subversion服务器之后,可以直接运行,如:
svnadmin create E:/svndemo/repository
就会在目录E:/svndemo/repository下创建一个版本库。
我们也可以使用TortoiseSVN图形化的完成这一步:
在目录E:/svndemo/repository下"右键->TortoiseSVN->Create Repository here...“,然后可以选择版本库模式,这里使用默认即可,然后就创建了一系列目录和文件。
4. 配置用户和权限
来到E:/svndemo/repository/conf目录,修改svnserve.conf:
# [general]
# password-db = passwd
改为:
[general]
password-db = passwd 然后修改同目录的passwd文件,去掉下面三行的注释:
# [users]
# harry = harryssecret
# sally = sallyssecret
最后变成:
[users]
harry = harryssecret
sally = sallyssecret
如此,可以使用用户名harry提交与下载版本库,要求输入的密码为harryssecret。
也可以创建其他用户名和密码,只要按照上面的格式写就好。
5. 运行独立服务器
在任意目录下运行:
svnserve -d -r E:/svndemo/repository 我们的服务器程序就已经启动了。
注意不要关闭命令行窗口,关闭窗口也会把svnserve停止。
为简便起见,可以在新建一个SVNStart.cmd。
内容如下:
svnserve -d -r E:/svndemo/repository
并在桌面建立快捷方式,以后双击该文件,就可以启动服务器程序。
6. 初始化导入
来到我们想要导入的项目根目录,在这个例子里是E:/svndemo/initproject,目录下有一个readme.txt文件:
右键->TortoiseSVN->Import...
URL of repository输入“svn://localhost/”
ok
完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了我们刚才定义的版本库中。
需要注意的是,这一步操作可以完全在另一台安装了TortoiseSVN的主机上进行。
例如运行svnserve的主机的IP是133.96.121.22,则URL部分输入的内容就是“svn://133.96.121.22/”。
7,基本客户端操作
取出版本库到一个工作拷贝:
来到任意空目录下,在本例中是E:/svndemo/wc1,运行右键->Checkout,在URL of repository中输入svn://localhost/,这样我们就得到了一份工作拷贝。
在工作拷贝中作出修改并提交:
打开readme.txt,作出修改,然后右键->Commit...,这样我们就把修改提交到了版本库,我们可以运行。
察看所作的修改:
readme.txt上右键->TortoiseSVN->Show Log,这样我们就可以看到我们对这个文件所有的提交。
在版本1上右键->Compare with working copy,我们可以比较工作拷贝的文件和版本1的区别。
方案二Apache服务器+ TortoiseSVN
1.准备安装过程中需要的资源
Subversion的安装包。
Subversion可在/下载最新版本。
和其它开源的项目一样,Subversion提供了源码包和二进制包下载,如果仅是使用它的话,下载已做好的二进制包就可以了。
对于Windows平台,还有一些网友把二进制包做成了安装程序,但个人觉得不必要下载,因为这些安装程序除了创建了一些快捷方式之外,没有做更多的事情了。
Apache Web服务器安装包。
如果需要将Subversion挂到Apache上,则需要下载Apache。
Apache可以在其官方网站下载。
Subversion官方网站提供的1.4.2版二进制包只支持Apache 2.0.x,还不支持Apache 2.2.x,下载时要注意。
2.安装
安装Subversion很简单,只要将其二进制包解压到某个目录里即可。
为了能比较方便地访问Subversion的各个命令行工具,可以把安装目录下的bin子目录加入到Windows的PATH 环境变量中。
Apache的安装过程也很简单。
无非是填写与服务器相关的一些信息,确认服务器使用
的端口号、指定安装路径等。
端口号默认为80;如果你的机器上已经有其它服务器(例如IIS)使用了这个端口,可以在安装完毕后修改配置文件,使用另一个端口号即可。
以下假定Apache安装在D:\Apache2目录里。
3. 创建版本库
3.1确定你仅需要一个版本库,还是需要多个版本库。
使用前者,配置和访问的时候会简单一点,但所有的信息都放到同一个库中,可能不便于分类。
由于只有一个库,它可能会变得很大,不利于维护。
使用多个库的优缺点恰好相反。
3.2确定你的版本库存放的位置。
一般需要为版本库创建单独的目录,如果只打算创建一个库,那么该目录可以直接存放该版本库;如果打算创建多个库,这些版本库应该在该目录下使用独立的子目录。
以下假定使用D:\svn_repos存放版本库,并且未来可能创建多个库。
3.3创建版本库。
在命令行提示符下输入svnadmin create repository_path来创建版本库,其中repository_path是存放版本库的完整目录(如D:\svn_repos\test)。
版本库创建完毕后在repository_path里会有一组子目录,分别用于不同的目的。
4. 配置
这里说的配置是指服务器端的配置,其实也是这篇文章的重点。
Subversion提供了5种访问版本库的方式:
1)直接版本库访问。
客户端使用file:///打头的URL访问存储在本地磁盘上的版本库。
这种情况下几乎不需要其它的配置即可访问,缺陷是版本库必须在本地磁盘上,而且没有用户授权管理。
2)svnserve。
在Subversion的手册中介绍:这是一个轻型的服务器,可以同客户端通过
在TCP/IP基础上的自定义有状态协议通信。
它默认使用3690端口并采用自定义的协议来提供服务,客户端使用svn://打头的URL访问服务器上的资源。
3)Apache+mod_dav_svn。
这种方式更灵活(例如无须开放额外的端口),但它的配置会
复杂一些。
Subversion通过Apache使用WebDA V协议来提供服务,客户端使用标准的http://打头的URL访问服务器上的资源。
4)svnserve+SSH。
在第二种方式的基础上增加了SSH封装以提高安全性,客户端使用
svn+ssh://打头的URL访问服务器资源。
5)Apache+mod_dav_svn+SSL。
在第三种方式的基础上增加了SSL加密,客户端使用
https://打头的URL访问服务器上的资源。
关于各种访问方式更详细的信息请查阅Subversion的手册,本文暂时只介绍第二种和第三种方式。
4.1配置Apache+mod_dav_svn
4.1.1首先要保证Apache本身能正常工作,通常安装完Apache后通常就应该测试一下。
4.1.2停止Apache服务
4.1.3将Subversion安装目录下的子目录bin里的所有后缀为.so的文件复制到Apache安装目录下的modules目录里
4.1.4将Subversion安装目录下的子目录bin里的所有后缀为.dll的文件复制到Apache安装目录下的bin目录里
4.1.5使用记事本或其它纯文本编辑工具打开Apache安装目录下的conf目录里的httpd.conf 文件
4.1.6找到配置文件中的LoadModule dav_module modules/mod_dav.so和LoadModule dav_fs_module modules/mod_dav_fs.so,将该两行前的#号去掉,在此两行后增加如下两行:LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
4.1.7在配置文件末尾添加如下段:
<Location /test>
DAV svn
SVNParentPath D:/svn_repos
AuthType Basic
AuthName "Subversion Reporsitory"
AuthUserFile D:/Apache2/conf/svnpasswd
AuthzSVNAccessFile D:/Apache2/conf/svnauthz
Require valid-user
</Location>
以下介绍每个选项的含义:
<Location /test> <Location> 要求Apache将路径中以/test/开头的部分交给该段中定义的代理处理
DA V svn 要求Apache将指定的路径交给指定的DA V提供者(此处为svn)处理
SVNParentPath 指定存放Subversion版本库的完整目录。
如果只使用应该版本库,可以用SVNPath选项而不是本选项
AuthType 指定系统使用的认证类型。
AuthType Basic使用基本的用户名+密码的认证方式。
保存用户名和密码的文件由AuthUserFile选项指定
AuthName 指定系统请求用户认证时显示给客户端的说明信息
AuthUserFile 保存系统中允许的用户名及其密码。
该文件通常用Apache的htpasswd工具维护
AuthzSVNAccessFile 保存版本库的访问权限定义。
该文件的格式与配置方法参见第3.2.8小节
Require valid-user 要求访问版本库时必须提供合法的用户名和密码,禁止匿名访问
4.1.8配置版本库的访问权限
可以使用记事本或其它纯文本编辑工具来配置访问权限定义文件,该文件用于定义用户组和授权,但不包括用户和密码的管理。
可以复制某个版本库的conf目录里的authz文件,在此基础上进行修改。
在修改该配置文件前需要预先规划好版本库的目录结构,这些目录结构将对哪些用户或/和组开放,是允许读还是允许读写。
该配置文件类似于一个ini文件,其中含有3种段:
1)groups段
在该段中定义组名及该组包括的用户名,格式为group_name = user1, user2, user3
2)未指定版本库的目录授权段
段名的格式为[/directory_name],directory_name是要授权的目录。
因为没有指定版本库的名称,这种段通常适用于只有一个版本库的情况。
在该段中定义用户或组对该目录的访问授权,格式为user_name = privileges或@group_name = privileges,其中privileges可以是r,w,rw或空,对应的权限分别是读,写,读写或无权限。
3)指定版本库的目录授权段
段名的格式为[repository_name:/directory_name],其中repository_name是指定的版本库名称,通常为创建版本库时的顶级目录名称。
段中定义同第2)部分。
4.2配置svnserve
4.2.1配置版本库
当使用此方式时,需要为每个版本库进行配置,需要编辑repository_path\conf目录下的svnserve.conf、passwd和authz文件。
在svnserve.conf中提供了5个选项:
anon-access 指定匿名用户对版本库的访问权限,可以是read,write或none
auth-access 指定授权用户对版本库的访问权限,可以是read,write或none
password-db 保存用户名与密码的文件,默认为同目录里的passwd。
注意该文件是明文的。
authz-db 保存版本库的目录授权信息的文件,默认为同目录里的authz。
该文件的格式参见第4.1.8小节
realm 为版本库指定一个用于验证的域名。
如果不同的版本库使用了相同的验证域名,则它们的passwd文件应该是一样的,反之亦然
默认情况下以上选项均被注释掉了,在使用前需要去掉行首的#号,并进行适当的配置。
如果打算仅允许客户端通过http:(或file:)+URL的方式访问,该文件不起作用,可以不理睬。
4.2.2启动Subversion守护进程。
执行svnserve --daemon --root D:/svn_repos/test即启动svnserve的一个实例,它以守护进程的方式运行,并保证对版本库的访问不会超出D:/svn_repos/test。
也可以使用第三方工具让其以Windows服务的方式运行。
可以在/~Embn/svnservice/下载SVNService.zip,将其中的SVNService.exe解压到Subversion安装目录下的bin目录里,然后在命令行窗口执行svnservice -install -d -r "D:/svn_repos/test",执行该命令后在Windows的服务管理器中会出现一个名为SVNService 的服务,使用服务管理器进行控制即可。
方案三VisualSVN +TortoiseSVN
用的SVN服务器通常为外部,例如Google Code的服务器,不过,做为一个程序开发人员,就算自己一个人写程序,也应该有一个SVN版本控制系统,以便对开发代码进行有
效的管理。
这里我就介绍一个在Windows环境下简单快速搭建SVN服务器的方法。
通常的SVN服务器是搭建在Linux等系统下,例如用Apache+SVN配置,Linux下的SVN性能会非常好,但配置有些繁琐,如果SVN服务器只有自己使用,那么可以直接把SVN服务器搭建在个人Windows环境下使用。
目前较为简单的方案是VisualSVN Server。
该SVN服务器是免费的,支持Windows NT,2000,XP and 2003等环境,安装非常简单。
安装的时候可以选择SVN走http协议还是https协议,http协议速度快一些,而https 协议安全性好。
两者均可以从浏览器直接访问SVN项目。
安装完成后打开,可以看到一个微软的MMS管理界面,在里面可以轻松添加设置项目。
用户权限可以使用Windows的用户,也可以单独新建用户。
如果原先有一个SVN数据,则可以在界面上导入原有的SVN数据。
SVN客户端依旧推荐使用Windows下的TortoiseSVN,两者搭配起来,非常好用。
方案比较
如果只是个人使用,仅仅安装客户端TortoiseSVN就可以了。
如果小团队使用,建议使用方案三。
因为该方案安装简单,也容易入手。
方案三也行,不过要求服务器与客户端匹配,这个可能会有点麻烦。
至于方案二,配置比较复杂。
可能安全性比较高吧。
参考资料
[1]. /ladofwind/article/details/2100200
[2]. /55742/132169
[3]. /movingboy/archive/2006/11/23/569928.html
[4] /blog/153131
[5] /archives/1879.html
第二篇客户端入门手册
TortoiseSVN——>Create repository here(创建版本库) 之前在介绍方案时,介绍过创建版本库,这里就不不多说。
可以参见前面相关内容。
TortoiseSVN——>Import (导入数据到版本库)
在将你的数据导入到版本库之前,首先你得考虑如何组织你的数据。
如果你使用一种推荐的布局,你在后面的操作将会更容易许多。
1. 如果你还没创建一个基本的文件夹结构到你的版本库中,你现在可以这样做:
●在你的硬盘上创建一个空的文件夹
●在那个文件夹下创建你想要的顶级目录--千万不要放任何文件进去!
●通过在那个文件夹右键,选择TortoiseSVN →导入... 将这个结构导入到版本库中。
这将导入临时文件夹到版本库的根目录形成一个基本的版本库布局。
注意,你所导入的那个文件夹的名字并不存在于版本库中,仅仅是它所包含的内容。
你还可以使用版本库浏览器直接在版本库中创建文件夹。
2. 在将你的项目导入到版本库之前,你还应该:删除所有构建工程不需要的文件(临时文件,编译器产生的文件,例如*.obj,生成的二进制文件,...)
3.现在进入资源管理器,选择你的项目的顶层目录,右击打开上下文菜单。
选择命令TortoiseSVN → Import,它会弹出一个对话框:
图 5.6. 导入对话框
在这个对话框中,输入你的项目导入到版本库的URL。
这个输入信息将用作提交日志。
默认情况下,匹配全局忽略模式的文件和文件夹不会被导入。
你可以使用包含忽略文件检验栏来禁止此行为。
参考“常规设置”一节以获得关于全局忽略模式的更多信息。
当你点击确认时,TortoiseSVN 会导入包含所有文件的完整目录树到版本库。
如前所述,你导入的文件夹名称不会在版本库中出现,只有这个文件夹的内容会在版本库中出现。
现在这个工程就存贮在版本库,被版本控制。
请注意,你导入的文件夹没有被版本控制!你需要检出刚才导入的版本,以便获得受版本控制的工作目录。
建议在版本库建立三个字目录分别为:
/trunk //主版本所在目录
/branches //分支所在目录,
/tags //标志所在目录
Check Out(检出工作副本)
为了得到一个工作副本,需要进行从版本库检出的操作。
在Windows资源管理器里选择一个存放工作副本的目录。
右键点击弹出右键菜单,选择Check Out命令。
然后就会看到下面的对话框。
图 5.7. 检出对话框
如果输入一个并不存在的目录名,那么这个名字的目录就会被创建出来。
重要
●你应该只检出到一个空的目录。
如果你要将你的源代码树检出到与你导入它们时相同的
目录,Subversion会给出一个错误信息它不会用已受控的文件覆盖已经存在的但未受控的文件。
你必须检出到一个不同的目录或是先将已经存在的源代码树删除。
●如果你只希望检出最顶层的文件夹而忽略子文件夹,请选中只检出顶层文件夹复选框。
●如果项目含有外部项目的引用,而这个引用你不希望同时检出,请选中忽略外部的复选
框。
⏹如果这两个选项的任何一个选中了,你应该使用TortoiseSVN → Update to revision
来更新你的工作复本而不是使用TortoiseSVN →更新。
标准的更新将会包含所有的
子文件夹和外部引用。
●强烈建议你只检出trunk的那部分目录树。
如果你在URL中指定了目录树的父路径,
你的硬盘有可能被塞满,因为你将会得到整个版本库树的复本,包括项目所有的分支和标签(tag)!
关于导出
有时你可能想要建立一个没有.svn目录的本地的复本,比如建立一个源代码压缩包。
要达到这个目的,请参考“导出一个Subversion工作副本”一节。
TortoiseSVN ——>Commit(让你的修改进入版本库)
将你对工作复本的修改发送给版本库,称为提交修改。
但在你提交之前要确保你的工作副本是最新的。
你可以直接使用TortoiseSVN →Update。
或者,可以先使用TortoiseSVN → Check for modifications检查修改看看哪些文件在本地或是服务器上已经有了改动。
如果你的工作复本是最新的,并且没有冲突,你就已经为提交做好准备了,选择你要提交的文件和/或文件夹,然后TortoiseSVN →提交....
图 5.8. 提交对话框
提交对话框将显示每个被改动过的文件,包括新增的、删除的和未受控的文件。
如果你不想改动被提交,只要将该文件的复选框的勾去掉就可以了。
如果你要加入未受控的文件,只要勾选该文件选项把它加入提交列表就可以了。
那些被切换(switched)到不同版本库路径的项也用(s)标记来表示。
当工作在分支上的时候你可能切换到某处,然后忘记切换回主干。
这是你的警告信号!
提交文件还是文件夹?
当你提交文件时,提交对话框只显示你所提中的文件。
当你提交文件夹中,提交对话框将自动选择有改动的文件。
如果你忘记了你建立的一个新文件,提交文件夹将使你可以找到它。
提交一个文件夹并不意味着每个文件都被标识为修改过的,它仅仅是通过帮你多做些事从而让你的生活更滋润一点。
如果你修改的文件是使用了svn:externals从别的版本库中包含进来的,那么这些改动不会被自动提交。
在文件列表下方的警告符号会告诉你是否出现了这种状况,工具提示(tooltip)提示了外部文件必须要分开提交。
在提交对话框中有很多未受控的文件
如果你认为TSVN提交对话框显示了太多的未受控文件(如编译器产生的文件或是编辑器的备份文件),有几种方法可以处理这种情况。
你可以:
将文件(或是通配符扩展)加入到设置页的排除列表中。
这对每个工作复本都起作用。
使用TortoiseSVN →加入忽略列表,将文件加入svn:ignore列表。
这只对你设置了svn:ignore属性的路径有效。
使用SVN属性对话框,你可以改变一个目录的svn:ignore属性。
参考“忽略文件和目录”一节获得更多的信息。
在提交对话框中双击任何修改过的文件,将运行外部diff工具显示你作的改动。
上下文菜单(右键菜单)将给你更多的选项,请看屏幕截图。
你可以从这里将文件拖动到另一个应用程序中,如文本编辑器或是IDE。
在底部面板中显示的列是可定制的。
如果你右击任何一列的头部,你就会看到一个上下文菜单,允许你选择哪一列要显示。
还可以在鼠标移动到列边界时通过拖动手把来改变列的宽度。
这些定制的内容都会被保留下来,下一次你会见到相同的列。
拖放
你可以将文件从别的地方拖动到提交对话框,只要工作复本是由同一版本库中检出就可以了。
比如,你有一个很大的工作复本,要开好几个资源管理器窗口来查看层次中不同的文件夹。
如果你要避免从顶级文件夹提交(冗长而缓慢的文件夹改动检查),你可以打开一个文件夹的提交对话框,然后将别的窗口中的项拖进去,可样就可以一次提交它们了。
你可以将未版本控制的文件拖到工作副本提交对话框中,它们就会被自动增加。
修复外部改名
有时候文件不是用Subversion改名,于是它们在文件列表中作为丢失和未版本控制的文件出现。
为了避免丢失历史,你需要通知Subversion。
简单的选择老名称(丢失)和新名称(未版本控制),然后使用右键菜单→修复移动来指明这两个文件是改名关系。
确保输入描述你所提交的修改内容的日志信息。
这可以帮你回顾做了什么,什么时候做的。
信息的内容可长可短,许多项目规定了要包含的内容、使用的语言甚至是严格的格式。
你可以使用与电子邮件相似的约定,简单格式化日志消息。
如果对文本采用这些样式,使用*文本*表示粗体,_文本_表示下划线,^文本^表示斜体。
图 5.9. 提交对话框的拼写检查器
TortoiseSVN包含了一个拼写检查器帮助你正确地书写日志信息。
对任何错误拼写的词都高亮显示。
使用右键菜单可以获得修改建议。
当然它不会知道所有的技术术语,所以有时一些拼写正确的词会被当作错误。
但不用担心,你可以使用右键菜单将它们加入你的个人字典中。
日志信息窗口还包含一个文件名和函数自动完成的功能。
这使用了正则表达式来从你提交的(文本)文件中提取类和函数名,当然包括文件名本身。
如果你现在敲入的一个词与列表中的任意一个匹配(在你输入至少3个字符后),就会出现一个下拉列表,允许你选择完整的名字。
与TortoiseSVN一起提供的正则表达式位于TortoiseSVN安装路径的bin文件夹中。
你可以定义自己的正则式并将其存放在%APPDATA%\TortoiseSVN\autolist.txt。
当然你自定义的自动列表不会在升级安装的时候被覆盖。
如果你不熟悉正则表达式,请参考在线文件和教程: /.
在按下OK之后,会出现一个对话框显示提交的进度。
图 5.10. 显示提交进度的进度对话框
进度对话框使用颜色代码来高亮显示不同的提交行为。
蓝色:提交一个修改。
紫色:提交一个新增项。
深红:提交一个删除或是替换。
黑色:所有其他项。
这是默认的配色方案,但你可以通过设置对话框来定制这些颜色。
参考“TortoiseSVN 颜色设置”一节获得详情。
与缺陷跟踪工具整合
如果你激活了一个缺陷跟踪系统,你可以在Bug-ID / Issue-Nr:文本框中设置一个或多个问题。
多个问题应该用逗号分割。
另外,如果你使用基于正则表达式的缺陷跟踪支持,只要将你的问题引用作为日志信息的一部分加入就可以了。
详情请见“与BUG 跟踪系统/问题跟踪集成”一节。
TortoiseSVN ——>Update(更新你的工作复本)
图 5.11. 已经完成更新的进度对话框
你应该定期地确保别人作的修改与你的工作复本可以整合。
从服务器上获取改动到你本地复本的过程称为更新。
更新可以针对一个文件、几个选中的文件或是递归整个目录层次。
要进行更新操作,请选择要更新文件和/或路径,右击选择右键菜单中的TortoiseSVN →Update(更新)。
会弹出一个窗口显示更新的进度。
别人作的修改将合并到你的文件中,你所做的修改会被保留。
版本库受更新操作的影响。
进度对话框使用颜色代码来高亮不同的更新行为
紫色:新项已经增加到你的工作副本中。
深红:你的工作副本中删除了多余项,或是你的工作副本中丢失的项被替换。
绿色:版本库中的修改与你的本地修改成功合并。
亮红:来自版本库的修改在与本地修改合并时出现了冲突,需要你解决。
黑色:你WC中的没有改动的项被来自版本库中新版本所更新。
这是默认的配色方案,但你可以通过设置对话框来定制这些颜色。
参考“TortoiseSVN 颜色设置”一节获得详情。
如果你在更新中遇到了冲突(这是由于别人与你修改了同一个文件的同一行代码,并且两者的修改不匹配),对话框中将冲突显示为红色,你可以双击这些行启动外部合并工具来解决冲突。
当更新完成后,进度对话框在文件列表下面显示汇总信息,多少项更新,增加,删除,。