svn常见问题

svn常见问题
svn常见问题

Svn常见问题及相关原因

1.

svn: Server sent unexpected return value (500 Internal Server Error) in response to OPTIONS request for 'https://www.360docs.net/doc/1311301799.html,/svn/test'

错误的用户名

检查登录的用户名是否输入错误

svn: 服务器发送了意外的返回值(500 Internal Server Error),在响应“OPTIONS” 的请求“https://www.360docs.net/doc/1311301799.html,/svn/test” 中

2.

svn: OPTIONS of 'https://www.360docs.net/doc/1311301799.html,/svn/test': authorization failed: Could not authenticate to server: rejected Basic challenge (https://www.360docs.net/doc/1311301799.html,)

错误的口令

用正确的用户名/口令登录

svn: 方法OPTIONS 失败于“https://www.360docs.net/doc/1311301799.html,/svn/test”: 认证失败: Could not authenticate to server: rejected Basic challenge (https://www.360docs.net/doc/1311301799.html,)

3.

svn: Server sent unexpected return value (403 Forbidden) in response to OPTIONS request for 'https://www.360docs.net/doc/1311301799.html,/svn/test'

用户无权限

联系管理员,为用户分配权限

svn: 服务器发送了意外的返回值(403 Forbidden),在响应“OPTIONS” 的请求“https://www.360docs.net/doc/1311301799.html,/svn/test” 中

4.

svn: OPTIONS of 'https://www.360docs.net/doc/1311301799.html,/svn/test': 200 OK (https://www.360docs.net/doc/1311301799.html,) 服务器地址错误,是普通Web页面,不支持SVN的WebDAV 协议

确认输入正确的SVN 服务地址。可以在浏览器中输入该地址进行确认

svn: 方法OPTIONS 失败于“https://www.360docs.net/doc/1311301799.html,/svn/test”: 200 OK (https://www.360docs.net/doc/1311301799.html,)

5.

The version of your subversion (client) is below 1.5.0, upgrade to 1.5.0 or above. SVN below 1.5.0 can not handle mergeinfo properly. It can mess up our automated merge tracking!

是由于客户端的软件版本低于1.5.0造成的。服务器端对客户端软件版本进行了限制,以免对合并跟踪破坏。

升级本地的Subversion客户端软件到1.5.0或以上版本。

6.

svn: This client is too old to work with working copy '.'. You need to get a newer Subversion client, or to downgrade this working copy. See https://www.360docs.net/doc/1311301799.html,/faq.html#working-copy-format-change for details.

安装了多个版本的SVN客户端(TSVN,Subclipse,...),且各个客户端的版本不一致。高版本的SVN客户端会自动更新本地工作目录中的.svn 目录下的文件格式,导致旧版本的SVN客户端不能继续访问该本地工作目录

将本机安装的所有的SVN客户端都更新到同一个大版本,以避免本地工作目录的格式不一致

svn: 此客户端对于工作副本“.” 太旧。你需要取得更新的Subversion 客户端,或者降级工作副本。参见https://www.360docs.net/doc/1311301799.html,/faq.html#working-copy-format-change 以获得更详细的信息。

7.

svn: Working copy 'trunk/src' locked svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)

异常操作导致目录没有解锁。

一个简单的重现方法:在.svn 目录下创建空的名为lock的文件

使用命令行"svn cleanup" 或者类似的“清理”动作删除锁定

svn: 工作副本“trunk/src”已经锁定svn: 运行“svn cleanup”删除锁定(输入“svn help cleanup”得到用法)

8.

日志中没有作者信息:------------------------------------ r9 | (没有作者信息) | … https://www.360docs.net/doc/1311301799.html, anonymous commit test

匿名提交导致没有作者信息

检查版本库权限控制,禁止匿名提交

9.

正在发送... 传输文件数据.svn: 提交失败(细节如下): svn: Commit blocked by pre-commit hook (exit code 1) with output: 提交说明至少应包含4 个字符, 或者太简单了。

这是由于用户提交的提交说明(commit log),太过简单了。在提交时需要输入有意义的commit log。

写有意义的提交说明,或者请求管理员更改版本库插件

10.

增加Logger.c 传输文件数据.svn: 提交失败(细节如下): svn: Commit blocked by pre-commit hook (exit code 1) with output: Wide character in print at /opt/svn/svnroot/myrepos/hooks/scripts/check-case-insensitive.pl line 259. 发现文件名大小写冲突: trunk/src/Logger.c 已经存在于logger.c

管理员设置了对新增文件是否重名(只有大小写不同)的文件进行检查。文件名只有大小写不同,在Windows上进行检出会造成麻烦

不要添加重名(仅大小写不同)文件

增加src/文件aBc.txt 传输文件数据.svn: 提交失败(细节如下): svn: Commit blocked by pre-commit hook (exit code 1) with output: Clash: '/trunk/src/文件aBc.txt' '/trunk/src/文件abc.txt'

11.

svn: While preparing '/home/jiangxin/tmp/svn.test/trunk/src/README.txt' for commit svn: Inconsistent line ending style

提交的文件已经设置了svn:eol-style 属性,但是该文本内的换行符有DOS的换行符CRLF,也有Unix换行符LF,不一致!

统一该文本文件内的换行符。Linux 下可以用dos2unix, unix2dos, sed等命令。Windows下可用UltraEdit 进行转换。

svn: 当为提交操作准备“/home/jiangxin/tmp/svn.test/trunk/src/README.txt”时svn: 不一致的行结束样式

12.

svn: Failed to add file 'Makefile': an unversioned file of the same name already exists

执行更新(svn up)时报错。因为其他人新增一个文件到服务器,而本地却存在一个同名文件(未版本控制)

先将本地重名文件改名,再执行"svn up",之后再比较、合并文件。或者执行"svn up --force"

svn: 增加文件'Makefile' 失败: 同名未版本控制的文件已存在

13.

Adding src/Makefile svn: Commit failed (details follow): svn: File '/svn/test/trunk/src/Makefile' already exists

添加新文件,提交时报错。因为其他人已经先于我增加了该文件。

先执行更新操作("svn up"),再根据提示进行操作:合并/提交...

增加src/Makefile svn: 提交失败(细节如下): svn: 文件“/svn/test/trunk/src/Makefile”已存在

14.

$ svn up Conflict discovered in 'Makefile'. Select: (p) postpone, (df) diff-full, (e) edit, (mc) mine-conflict, (tc) theirs-conflict, (s) show all options: p C Makefile Updated to revision 5. Summary of conflicts: Text conflicts: 1

多人同时编辑同一个文件时,可能会遇到冲突。别人先于我提交,则当我提交时要先更新。更新可能遇到不能自动解决的冲突

使用工具进行冲突解决

$ svn up 在“Makefile” 中发现冲突。选择: (p) 推迟,(df) 显示全部差异,(e) 编辑, (mc) 我的版本, (tc) 他人的版本, (s) 显示全部选项: p C Makefile 更新到版本5。冲突概要:正文冲突:1

15.

svn: Commit failed (details follow): svn: File 'Makefile' is out of date svn: File not found: transaction '6-d', path '/trunk/src/Makefile'

提交的文件已被他人删除

先执行更新操作("svn up"),再根据提示解决该树冲突:删除文件或继续添加...

svn: 提交失败(细节如下): svn: 文件“Makefile” 已经过时svn: File not found: transaction '6-c', path '/trunk/src/Makefile'

16.

svn: Commit failed (details follow): svn: File or directory '/trunk/XXX' is out of date; try updating svn: resource out of date; try updating

基于旧版本修改是不允许的

先更新("svn update"),再提交

svn: 提交失败(细节如下): svn: 文件或目录“/trunk/XXX” 已经过时;请先更新svn: resource out of date; try updating

17.

svn: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent svn: At least one property change failed; repository is unchanged svn: Error setting property 'log': Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook

修改提交说明等操作属于高风险操作,因为该操作没有被版本控制,属于不可恢复的操作。缺省禁止。

请联系管理员,启用该版本的相关钩子,允许修改“版本属性”。参见管理员钩子设置

svn: DAV 请求失败;可能是版本库的pre-revprop-change 钩子执行失败或者不存在svn: 至少有一个属性变更失败;版本库未改变svn: 设置属性“log” 出错: Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook

18.

传输文件数据.svn: 提交失败(细节如下): svn: Commit blocked by pre-commit hook (exit code 1) with output: ==================== trunk/src/File.c :属性svn:mime-type 或者svn:eol-style 没有设置==================== 管理员已经启用换行符属性检查。每一个新添加的文件必须指定换行符。如果svn:mime-type 属性为文本文件,则必须设置svn:eol-style 属性。对于二进制文件,执行如下命令:svn propset svn:mime-type application/octet-stream path/of/file 对于文本文件,可以执行如下命令:svn propset svn:mime-type text/plain path/of/file svn propset svn:eol-style native path/of/file 为了避免每次添加文件手动设置,可以启用自动属性设置...

管理员启用了检查新文件换行符的扩展

为新增文件设置正确的svn:mime-type 和/或svn:eol-style 属性

相关问题:

1.A:用户在登陆系统时,输入用户名和密码后,系统提示如下错误:403 Forbidden, 这是为什么?

Q:首先确定输入的路径是否正确;

如路径正确,请该用户与配置管理员确定是否具有访问该配置库的权限。

2.A:用户在登陆系统时,输入用户名和密码后,系统提示如下错误:authorization failed,这是为什么?

Q:请确定输入的用户密码是否正确,如果忘记密码,请与配置管理员联系。

3.A:在修改文件后,点击“SVN commit”后,系统提示:Error commit failed,这是为什么?Q:请与配置管理员确认您对该配置库是否具有“写”的权限。

4.A:在登录服务器时,不能正确登陆,并提示如下错误信息:could not resolve hostname,什么原因?

Q:该问题是因为不能解析地址中的域名,请检查TCP/IP 的DNS服务器地址设置是否正确。(我们公司地址中使用的是域名,直接使用IP应不会出现该问题)

5.A:用户在登录时,输入正确的地址,按“回车”键后,系统长时间未反应,最后出现“400 Bad Request”的错误,为什么?

Q:原因是卡巴斯基的WEB反病毒保护功能和SVN冲突:解决方案:

在“设置”->"服务"->"网络设置"->"端口设置中取消对80端口的监控;或在“设置”-〉保护-〉信任区域-〉添加-〉浏览,浏览TortoiseSvn 安装目录下TortoiseSvn\bin\TortoiseProc.exe文件即可。

6.A:为什么客户端无法提交,报告需要"clean up"的错误。

Q:Subversion客户端在提交内容之前会在本地的工作拷贝写日志,防止其他客户端再次作操作,如果这个提交过程中发生错误,就会存在未清理的日志,解决这个问题只需要运行清理命令。需要在目录或其父目录执行"右键->TortoiseSVN->CleanUp"。

7.A:为什么添加的文件,别人看不到,版本库里也没有?

Q:最可能的原因是,你用svn add(如果是TortoiseSVN可能是“右键->TortoiseSVN->Add...”)添加某个文件,只是在本地注明某个文件是预定要增加,而没有实际添加到版本库,要添加到版本库必须执行svn commit(如果是TortoiseSVN可能是“右键->svn commit...”)。

8.A:为什么我本地删除的文件,本地看不到,但别人那还仍然存在?

Q:最可能的原因是,你用svn delete(如果是TortoiseSVN可能是“右键->TortoiseSVN->delete...”)删除某个文件,只是在本地注明某个文件是预定要删除的,而没有实际删除到版本库,要删除的到版本库必须执行svn commit(如果是TortoiseSVN可能是“右键->svn commit...”)。

9.A:SVN是否具有将目前版本回退到以前的历史版本的功能?

Q:有,点击你到所需要的jsp或者java的文件,点击右键,"显示日志",点到你需要恢复的版本,右击"复原此版本".点击确认,然后按提交.

10.A:SVN是否具有将所有做增加删的文件导出(例如:release 的时候需要的修改的文件名及

路径)

Q:有到你所需要查看的目录文件,右击,"显示日志",在窗口中选择你需要查看的几个版本,右击"复制到剪切版".打开TXT,可以将修改的文件,提交人,版次,信息都显示

11.A:SVN中修改一个文件,如在提交前,放弃修改,如何操作

Q:有到你所需要查看的目录文件,右击,"SVN还原",则恢复到未提交前的程式.

12.A:SVN中提交文件前,如何知道是否在修改文件的这段期间有人也修改了程式,减少提交有可能产生的冲突

Q:将你对文件的修改发送给版本库,称为提交修改。但在你提交之前要确保你的文件是最新的。你可以直接使用TortoiseSVN → 更新,或者,你可以先使用TortoiseSVN → 检查修改看看哪些文件在本地或是服务器上已经有了改动。

SVN使用手册(最全版)

SVN环境搭建及使用手册 一、SVN介绍 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。 二、SVN安装包介绍(安装包存放在服务器上D:\安装包\SVN) 服务端:SVN服务端安装包是VisualSVN-Server-3.6.0-x64.msi。 客户端:客户端软件主要包括下列3个文件 1. TortoiseSVN-1.8.8.25755-x64-svn-1.8.10.msi ----SVN客户端安装包 2. LanguagePack_1.9.5.27581-x64-zh_CN.msi ----SVN客户端语言包 3. AnkhSvn-2.5.12471.17.msi -----SVN针对Visual Studio的插件 三、搭建SVN服务端详细说明 第一步:搭建SVN团队项目、在服务器上打开已安装的SVN服务端、新建一个项目文件夹、创建完成后、右键项目复制项目URL 具体如下图

第二步:创建SVN用户、及设置密码、如下图 第三步:SVN服务端创建项目完成及创建用户后、使用SVN客户端将程序代码等文件提交上去、选中需要提交的程序文件、并填写正确SVN服务端项目的URL地址、

四、在日常开发中使用SVN的常用操作主要有:签出程序、文件合并、代码文件撤销、版本回滚、及历史版本控制等 说明:使用SVN版本控制,必须遵循4个原则。 1.新建文件前获取最新的程序代码、新建文件后先提交文件、再进行详细开发或编辑。 2.尽量避免多人同时处理同一个文件(svn毕竟不是那么优秀、无法智能将代码成功合并)。 3.项目成员提交程序前、必须获取最新的程序、编译且没问题、再进行提交操作。 4.提交代码必须选择解决方案进行代码提交、请勿选择其中某项目进行提交。 (1)签出最新程序:选择解决方案右键--》Update Solution to Latest Version, 如下图 (2)代码文件合并:如svn上的文件与本地文件产生冲突、则会在Pending Changes 中高亮显示、双击文件打开双方文件差异、合并完成后、点击Commit进行合并后文件提交。如下图

解决版本冲突问题的方法—分支与合并

解决版本冲突-使用SVN主干与分支功能 1前言 大多数产品开发存在这样一个生命周期:编码、测试、发布,然后不断重复。通常是这样的开发步骤: 1) 开发人员开发完毕某一版本(如版本A)功能后,提交测试; 2) 测试人员对待发布版本A进行测试,同时开发人员继续开发新功能(如版本B); 3) 测试人员提交bug,研发人员修复bug,同时继续开发新功能; 4) 重复第3步骤,直到待发布版本A测试通过测试后,发布第一版本 这样就会存在以下问题: 1) 如何从代码库中(A+B)分离出待发布版本A,进行测试和发布; 2) 如果单独存放待发布版本A,那么开发组必须同时维护此版本库A以及当前最新代码库 (A+B),操作冗余且容易出错。 在SVN中,通常采用主干(trunk)与分支(branches)的方法,解决以上问题。 2相关概念和原理 在SVN中创建代码库时,通常会创建trunk、branches、tags三个子目录,当然,你也可以用其他名称来实现主干和分支的功能 trunk-主干,或称主线,顾名思义,是开发的主线。 branches-分支,是从主线上分出来,独立于主线的另一条线。可以创建多个分支。一个分支 总是从主干一个备份开始的,从那里开始,发展自己独有的历史(如下图所示)。在版本控制的 系统中,我们经常需要对开发周期中的单独生命线作单独的修改,这条单独的开发生命线就可 以称为Branches,即分支。分支经常用于添加新的功能以及产品发布后的bug修复等,这样 可以不影响主要的产品开发线以及避免编译错误等。当我们添加的新功能完成后可以将其合并 到主干中。 tags-标记,主要用于项目开发中的里程碑,比如开发到一定阶段可以单独一个版本作为发布 等,它往往代表一个可以固定的完整的版本。即主干和分支都是用来进行开发,而标记是用来 进行阶段发布的。安全公司的配置库有专门的发布区,所以tags并不需要创建,在这里只是 提供说明,不推荐使用。 branches以及tags在TortoiseSVN中创建方法是一致的,它们都是通过存储类似Linux中的lunch 快捷方式一样,只是创建了指向某个版本的链接,而不会真正将此版本的内容复制到分支或者标记中,这样既可以节省空间,也可以很快速的创建,被称为“廉价的拷贝”。 为了便于创建分支和标记,通常习惯于将Repository版本库的结构布置为:/branches,/tags,/trunk。 分别代表分支,标记以及主干。

TortoiseSVN使用说明书(超详细)

一、TortoiseSVN客户端的安装 1.客户端软件:TortoiseSVN-1.7.12.24070-win32-svn-1.7.9.msi 下载:\\10.0.0.127\share\SVN\SVN 客户端 中文语言包:LanguagePack_1.7.12.24070-win32-zh_CN.msi 下载:\\10.0.0.127\share\SVN\SVN 客户端\语言包 (客户端安装在系统的默认位置,不需要特殊的配置,安装完成后需要重新起动系统, 重启之后鼠标的右键菜单会多出这么一组命令) 2. 中文语言包的安装如下:

二、Subversion基本工作流程 这部分最重要,也是大家经常要用到的,即如何利用TortoiseSVN客户端对subversion库中的文件进行操作。 1.如何把subversion库中已经保存的文件版本检出到本地、并作修改后提交、从服务器端更新本地文件的版本。 检出到本地: 初次检出到本地文件夹时,在本地新建一个空文件夹,具体操作如下图: 如果要检出最新的版本可选中上图的(最新版本(H))单选按钮。 如果想检出自己需要的版本可选中上图的(版本(R))单选按钮,然后选择自己需要的版本文件。 在弹出的对话框中输入自己的用户名和密码。

修改文件后提交:(修改文件夹中的内容后文件夹会自动变成带有红色标记) 在信息框中为修改的文件添加说明信息。如下图 在变更列表中选中更变的文件。如下图

点击确定后会提示输入用户名和密码。

从服务器端更新本地文件的版本: 如果服务器上的版本库已经是第7版本,自己本机的版本还是第1版本。这时你可以更新自己本地的版本为第7版本。

SVN使用手册版

S V N使用手册版 Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

S V N环境搭建及使用手册 一、SVN介绍 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。 二、SVN安装包介绍(安装包存放在服务器上 D:\安装包\SVN) 服务端:SVN服务端安装包是。 客户端:客户端软件主要包括下列3个文件 1. ----SVN客户端安装包 2. ----SVN客户端语言包 3. -----SVN针对Visual Studio的插件 三、搭建SVN服务端详细说明 第一步:搭建SVN团队项目、在服务器上打开已安装的SVN服务端、新建一个项目文件夹、创建完成后、右键项目复制项目URL 具体如下图

第二步:创建SVN用户、及设置密码、如下图 第三步:SVN服务端创建项目完成及创建用户后、使用SVN客户端将程序代码等文件提交上去、选中需要提交的程序文件、并填写正确SVN服务端项目的URL地址、

四、在日常开发中使用SVN的常用操作主要有:签出程序、文件合并、代码文件撤销、版本回滚、及历史版本控制等 说明:使用SVN版本控制,必须遵循4个原则。 1.新建文件前获取最新的程序代码、新建文件后先提交文件、再进行详细开发或编辑。 2.尽量避免多人同时处理同一个文件(svn毕竟不是那么优秀、无法智能将代码成功合并)。 3.项目成员提交程序前、必须获取最新的程序、编译且没问题、再进行提交操作。 4.提交代码必须选择解决方案进行代码提交、请勿选择其中某项目进行提交。(1)签出最新程序:选择解决方案右键--》Update Solution to Latest Version, 如下图

svn中解决代码冲突

解决代码冲突 如果commit时出现“You have to update your work copy first.”红色警告,说明版本库中的此文件已经被其他人修改了。请先点“ok”按钮退出。执行update,然后再commit。 如果修改与update得到的代码不冲突,则自动合并。如果冲突(比如对同一行代码进行了修改),则出现”One or more files are in a conflicted state.“红色警告,并产生几个文件记录冲突。一般情况下,我们不要直接编辑冲突文件。而按照以下操作手工解决冲突。 在资源管理器中,选择commit时冲突的那个文件,鼠标右键菜单选择”Edit conficts”。 出现界面,分为”Theirs”、”Mine”和”Merged”3部分,表示”别人修改的内容”、”我修改的内容”和”合并后的结果”3部分。我们是要将”别人修改的内容”和”我修改的内容”有取舍地合并起来,形成”合并后的结果”。 合并一般分为4种情况: 保留”我的修改”,舍弃”别人的修改”。鼠标右键点击Mine框的相应行,点击”Use this text block”。 舍弃”我的修改”,保留”别人的修改”。鼠标右键点击Theirs框的相应行,点击”Use this text block”。 同时保留”我的修改”和”别人的修改”,并将”我的修改”放在前面。鼠标右键点击Mine 框的相应行,点击”Use text block from mine before theirs”。 同时保留”我的修改”和”别人的修改”,并将”别人的修改”放在前面。鼠标右键点击Mine框的相应行,点击”Use text block from theirs before mine”。 合并完成,Ctrl+S存盘,退出。 然后,在资源管理器中,选择冲突文件,鼠标右键菜单选择”Resolved”,标记冲突已解决。系统会自动删除因冲突而新建的文件。此时,就可以继续进行commit操作了。 本文来自CSDN博客,转载请标明出处:https://www.360docs.net/doc/1311301799.html,/gori/archive/2009/04/12/4067588.aspx

SVN怎么使用

SVN怎么使用 1、在你硬盘上创建一个文件夹来放置你需要的项目。。。 2、在文件夹上右键选择check out。。。 3、然后输入你在SVN服务器上项目的URL地址: 4、输入正确的URL以后就点击OK。。。SVN客户端将会从服务器上拷贝源代码到你的电脑上。 5、这时候你可以将你的项目源代码文件进行编辑。。。修改后文件在SVN上显示的图标将会有红色感叹号。。。这时候你修改完文件是,可以右键点击该文件,选择SVN Commit 就可以向服务器提交你修改后的文件。。。 提问人的追问 2009-09-11 13:48 我想创建我自己的项目呢, 就是把我的项目方到服务器上去, 回答人的补充 2009-09-11 14:10

1. 进入https://www.360docs.net/doc/1311301799.html,/用Google帐户登录(推荐使用gmail邮箱)。然后点 击>Project Hosting 2. 进入>> https://www.360docs.net/doc/1311301799.html,/hosting/然后点击>Create a new project 3. 填入信息: 写入项目名,描述,两个选择项,写入标签,点击确定。就可以了 4. 提交成功后,选择菜单的Source(其中有https上传协议路径需要拷贝一份,还有一个上传密码)。 5. 打开MyEclipse,打开需要上传的项目,点鼠标右键->team->share Project->svn,写入https路径,下一步,输入Google账号和上传密码,起个名,finish。 6.如果一切顺利,会自动生成一个项目目录,可以查看所有项目文件。然后进入搭建项目界面,点鼠标右键->team->commit。然后开始上传项目。 7,搭建完成。 8.如果想查看自己的项目,可以用浏览器登陆https的路径,输入Google账号和上传密码,如果成功就可以看到含有项目名称的目录。

SVN解决版本冲突问题

SVN解决版本冲突功能 1代码的分支管理策略 关于代码管理的分支和发布策略,目前主要有两种:一种是主干作为新功能开发主线,分支用作发布。另一种是分支用作新功能开发,主干作为稳定版的发布。 1.1分支用来发布 典型操作步骤如下: 1) 开发者提交所有的新特性到主干。每日的修改提交到/trunk:新特性,bug修正和其他。 2) 这个主干被拷贝到“待发布”分支。当小组认为软件已经做好发布的准备(如,版本1.0) 然后/trunk会被拷贝到/branches/1.0。 3) 项目组继续并行工作,一个小组开始对分支进行严酷的测试,同时另一个小组在/trunk继续 新的工作(如,准备2.0),如果一个bug在任何一个位置被发现,错误修正需要来回运送。 然而这个过程有时候也会结束,例如分支已经为发布前的最终测试“停滞”了。 4) 分支已经作了标记并且发布,当测试结束,/branches/1.0作为引用快照已经拷贝到/tags/1.0.0, 这个标记被打包发布给客户。 5) 分支多次维护。当继续在/trunk上为版本2.0工作,bug修正继续从/trunk运送到/branches/1.0, 如果积累了足够的bug修正,管理部门决定发布1.0.1版本:拷贝/branches/1.0到/tags/1.0.1, 标记被打包发布。 整个过程随着软件的成熟不断重复:当2.0完成,一个新的2.0分支被创建,测试、打标记和最终发布,经过许多年,版本库结束了许多版本发布,进入了“维护”模式,许多标记代表了最终的发布版本。 这种分支管理策略被广泛的应用于开源项目。比如freebsd的发布就是一个典型的例子。 freebsd的主干永远是current,也就是包括所有最新特性的不稳定版本。然后随着新特性的逐步稳定,达到一个发布的里程碑以后,从主干分出来一个stable分支。freebsd是每个大版本一个分支。也就是说4.x,5.x,6,x各一个分支。每个发布分支上只有bug修改和现有功能的完善,而不会再增加新特性。新特性会继续在主干上开发。当稳定分支上发生的修改积累到一定程度以后,就会有一次发布。发布的时候会在稳定分支上再分出来一个 release分支。以 6.x为例,就会有 6.0,6.1,6.2…等发布分支。 这种发布方法非常适用于产品线的发布管理。产品是要卖的,以前卖给客户的版本仍需要继续维护,而为了以后的市场,新功能也不断地在增加。这种管理方法对已发布产品的维护工作和下一代产品的开发工作进行了隔离。对于已经发布的产品,只有维护的补丁发布。而新发行的产品不仅包括了所有的bug修改,还包括了新功能。 这种方法具有如下缺点:首先,必须对主干上的新功能增加进行控制。只能增加下一个发布里面计划集成进去的新特性。而且,已经在主干上集成的新特性中的任何一个,如果达不到里程碑的要求,稳定分支就不能创建,这很有可能影响下一个发布的计划。开源项目可能这方面的压力小一些,但是商业产品开发如果碰到这种情况就危险了。还有一个缺点就是bug修改必须在各个分支之间合并。 从分支和合并的一些实践经验上看,各个长期存在的分支之间必须要周期性的进行合并,否则很容易引发合并冲突。可是各个stable分支以及release分支之间恰好是不能进行合并而且还要长期存在的。因此,采用这种分支策略可能碰到的最大问题就是某个分支上的bug修改内容往其它分支merge 的时候出现的冲突。而且一旦发现一个bug,调查这个bug影响哪些分支的工作会随着维护的发布分支的数量而增加。

TortoiseSVN使用教程[多图超详细]

TortoiseSVN使用简介 2009-04-24 来源:dev.idv.tw ?1.安装及下载client 端 ?2.什么是SVN(Subversion)? ?3.为甚么要用SVN? ?4.怎么样在Windows下面建立SVN Repository? ?5.建立一个Working目录 ?6.新增档案及目录到Repository中 ?7.更新档案及目录 ?8.更新至特定版本 ?9.复制档案及目录 ?10.制作Tag或是Release ?11.快速参考 o11.1取得(Checkout)Repository o11.2更新(Update)档案或目录 o11.3新增(Add)档案或目录 o11.4提交(Commit)修改过的档案或目录 o11.5Copy/T ag/Branch/Release档案或目录 安装及下载client 端 1.下载Windows 端程序:https://www.360docs.net/doc/1311301799.html,/downloads。一般而言,如果是32-bit的Windows XP 应该使用 TortoiseSVN-1.4.x.xxxx-win32-svn-1.4.x.msi 这个档案。如果是64-bit 的 操作系统,则应该使用TortoiseSVN-1.4.x.xxxx-x64-svn-1.4.x.msi 这个档 案。 2.执行下载回来的TortoiseSVN 安装程序,就会进行T ortoiseSVN 的安装。 正确安装后,应该进行一次的重开机,以确保TortoiseSVN 的正确无误。 3.安装成功后,在档案管理员内按下鼠标右键,应该可以看到如右图所 示: 大部分的TortoiseSVN的操作都是透过档案管理员及鼠标右键就可以完成 了。如果您之前使用过TortoiseCVS,应该会对这种操作方式感到十分亲切。 什么是SVN(Subversion)? 有一个简单但不十分精确比喻:SVN = 版本控制+ 备份服务器 简单的说,您可以把SVN当成您的备份服务器,更好的是,他可以帮您记住每次上传到这个服务器的档案内容。并且自动的赋予每次的变更一个版本。 通常,我们称用来存放上传档案的地方就做Repository。用中文来说,有点像是档案仓库的意思。不过,通常我们还是使用Repository这个名词。基本上,第一次我们需要有一个新增(add)档案的动作,将想要备份的档案放到Repository上面。日后,当您有任何修改时,都可以上传到Repository上面,上传已经存在且修改过的档案就叫做commit,也就是提交修改给SVN server的意思。针对每次的commit,SVN server都会赋予他一个新的版本。同时,也会把每次上传的时间记录下来。日后,因为某些因素,如果您需要从Repository下载曾经提交的档案。您可以直接选择取得最新的版本,也可以取得任何一个之前的版本。如果忘记了版本,还是可以靠记忆尝试取得某个日期的版本。

SVN冲突解决方法大全

SVN冲突解决方法大全 2010-05-27 09:33 佚名我要评论(0)字号:T | T 本文和大家一起来学习SVN冲突解决和winmerge使用手册,本文介绍了几个SVN冲突解决的方法,希望大家通过本文的学习能够掌握,欢迎大家一起来学习。 AD: 本节向大家介绍一下SVN冲突解决和winmerge使用手册问题,在学习SVN的过程中,难免会遇到SVN冲突问题,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西。 解决版本冲突的命令。在冲突解决之后,需要使用svnresolved来告诉subversion冲突解决,这样才能提交更新。冲突发生时,subversion会在WorkCopy中保存所有的目标文件版本(上次更新版本、当前获取的版本,即别人提交的版本、自己更新的版本、目标文件。假设文件名是sandwich.txt,对应的文件名分别是:sandwich.txt.r1、sandwich.txt.r2、sandwich.txt.mine、sandwich.txt)。同时在目标文件中标记来自不同用户的更改。 解决SVN冲突的办法: -手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执行svnresolvedfilename 来解除冲突,最后提交。 -放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行svnresolvedfilename并提交。 -放弃自己的更新,使用svnrevert,然后提交。在这种方式下不需要使用svnresolved。 对于svnresolved命令需要非常小心,必须是非常确定冲突已经解决才能使用。否则,会导致Subversion 以为冲突解决,而使代码库不正确。 解决冲突详细文 档:https://www.360docs.net/doc/1311301799.html,/1.2/svn.tour.cycle.html#svn.tour.cycle.resolve 解决冲突(合并别人的修改) 我们可以使用svnstatus-u来预测冲突,当你运行svnupdate一些有趣的事情发生了: $svnupdate UINSTALL GREADME Cbar.c Updatedtorevision46. U和G没必要关心,文件干净的接受了版本库的变化,文件标示为U表明本地没有修改,文件已经根据版

SVN使用手册大全(史上最全)

目录 1.修改SVN访问密码 (1) 2.SVN客户端使用说明 (2) 2.1.安装SVN客户端 (2) 2.2.迁出配置库内容 (3) 2.3.维护工作文件 (4) 2.3.1.增加文件 (4) 2.3.2.更新文件 (8) 2.3.3.删除文件 (9) 2.3.4.修改文件 (10) 2.3.5.比较版本差异 (10) 2.3.6.撤销更改 (13) 2.3.7.锁定和解锁 (13) 2.3.8.重命名文件 (14) 2.3.9.获取历史文件 (14) 2.3.10.检查冲突 (15) 2.3.11.解决冲突 (16) 2.3.12.忽略无需版本控制的文件 (16) 2.3.13.去除SVN标志 (17) 2.3.14.查看文件每行的修改信息 (17) 2.3.15.重置访问路径 (18) 2.3.16.本地路径转换 (18) 2.4.浏览版本库 (18) 2.5.建立标签 (19) 2.6.建立分支 (19) 2.7.清除用户名等信息 (20) 2.8.统计信息 (21) 3.MYECLIPSE集成SVN (23) 3.1.安装SVN插件 (23) 3.2.配置M Y E CLIPSE提交目录 (28)

1. 修改SVN访问密码 打开IE,在地址栏中输入地址:http:// /svnmanager/index.php,进入SVNManager的欢迎界面,如下图所示: 点击“登陆”按钮进入登陆界面,如下图所示: 输入已知的用户名和密码,点击“登陆”按钮进入用户管理界面,点击“用户管理”按钮显示“编辑用户”菜单,如下图所示: 点击“编辑用户”按钮,进入用户信息修改界面,如下图所示:

SVN版本冲突解决详解

版本冲突原因: 假设A、B两个用户都在版本号为100的时候,更新了kingtuns.txt这个文件,A用户在修改完成之后提交kingtuns.txt到服务器,这个时候提交成功,这个时候kingtuns.txt文件的版本号已经变成101了。同时B用户在版本号为100的kingtuns.txt文件上作修改,修改完成之后提交到服务器时,由于不是在当前最新的101版本上作的修改,所以导致提交失败。 版本冲突现象: 冲突发生时,subversion会在当前工作目录中保存所有的目标文件版本[上次更新版本、当前获取的版本(即别人提交的版本)、自己更新的版本、目标文件]。 假设文件名是kingtuns.txt 对应的文件名分别是: kingtuns.txt.r101 kingtuns.txt.r102 kingtuns.txt.mine kingtuns.txt。同时在目标文件中标记来自不同用户的更改。 版本冲突解决: 场景: 1、现在A、B两个用户都更新kingtuns.txt文件到本地。

2、文档中原始文件内容如下: 3、A用户修改文件,添加内容“A用户修改内容”完成后提交到服务器

4、B用户修改文件,添加内容“B用户修改内容”完成后提交到服务器

B用户提交更新至服务器时提示如下: B用户将文件提交至服务器时,提示版本过期:首先应该从版本库更新版本,然后去解决冲突,冲突解决后要执行svn resolved(解决),然后在签入到版本库。在冲突解决之后,需要使用svn resolved(解决)来告诉subversion冲突解决,这样才能提交更新。 解决冲突有三种选择: A、放弃自己的更新,使用svn revert(回滚),然后提交。在这种方式下不需要使用svn resolved (解决) B、放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行resolved filename并提交(选择文件—右键—解决)。 C、手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执行resolved

svn冲突的产生与解决

svn 冲突的产生与解决 1、如何产生冲突 当开发人员A和开发人员B从版本库同时检出文档1.txt,而A和B同时修改了1.txt的同一地方,后提交的一方会在拷贝副本中产生冲突。 两个工作拷贝,A拷贝中文件1.txt内容为 dfqerq 123dfwre B拷贝中文件1.txt内容为 dfqerq 123erwrq 在B版本提交之前版本库上的1.txt(base版本)内容为 dfqerq B拷贝先提交版本到版本库中,以至于最新版本内容变为 dfqerq 123erwrq 此时A版本也提交则会产生冲突,无法提交,需要先svn update,此时会在A 拷贝中产生三个临时文件1.txt.rNew\1.txt.rOld\1.txt.mine,其中1.txt.rNew是最新版本,1.txt.rOld是base版本,1.txt.mine是A作者修改后的版本,在此例中内容为 dfqerq 123dfwre 而update之后A拷贝中的1.txt内容为

<<<<<<< .mine dfqerq 123dfwre======= dfqerq 123erwrq>>>>>>> .r18 其中<<<<<<< .mine与=======之间表示A修改后的内容,=======与>>>>>>> .r18之间是版本服务器上的版本 2、解决冲突 第一种,利用update的选项进行冲突解决,也就是说不管当前拷贝副本是否是最新版本,都使用—accept参数作为冲突处理方式 –accept ARG : specify automatic conflict resolution action (?postpone‘, ?base‘, ?mine-conflict‘, ?theirs-confl ict‘, ?mine-full‘, ?theirs-full‘, ?edit‘, ?launch‘) (p) postpone – mark the conflict to be resolved later //让文件在更新完成之后保持冲突状态。 (df) diff-full – show all changes made to merged file //使用标准区别格式显示base修订版本和冲突文件本身的区别。 (e) edit – change merged file in an editor //用你喜欢的编辑器打开冲突的文件,编辑器是环境变量EDITOR设置的。 (r) resolved – accept merged version of file //完成文件编辑之后,通知svn 你已经解决了文件的冲突,它必须接受当前的内容—从本质上讲就是你已经―解决了‖冲突。 (mf) mine-full – accept my version of entire file (ignore their change//丢弃新从服务器接收的变更,并只使用你查看文件的本地修改。 (tf) theirs-full – accept their version of entire file (lose my changes)//丢弃你对查看文件的本地修改,只使用从服务器新接收的变更。 (l) launch – launch external tool to resolve conflict//启动一个外置程序来执行冲突解决,这需要一些预先的准备。 (h) help – show this list //显示所有在冲突解决时可能使用的命令。

svn的使用-更新

Svn是一个版本控制软件,可以使得我们项目组协同工作,每个人都必须使用这个工具来保证我们机器上的程序是最新和可追溯的,并且是同步的。 下面介绍如何使用这个软件。 一、安装软件 1.TortoiseSVN-1.6.15.21042-win32-svn-1.6.16.msi https://www.360docs.net/doc/1311301799.html,nguagePack_1.6.15.21042-win32-zh_CN.msi 安装过程和一般的软件没有区别,按提示进行重启。 二、使用步骤 1.安装完软件后,找一个目录,右键点击,如下图选择 点击setings,出现下图,将语言修改成中文简体,确定后界面语言就变成中文。

2.上述软件安装完成后,第一步要签出我们对应的项目,有两个一个php项目,一个.net 项目。下面以php项目组为例 3.新建一个目录或者将原来放php源代码的目录清空。然后右键这个目录,选择svn检出, 如下图 点击后出现下图

4.在版本库url中输入:svn://210.34.148.24/php,如果是net小组则输入: svn://210.34.148.24/net,其余就默认,点击确认,按要求输入用户名和密码,用户名密码我后面会给出。 5.用户名和密码是每个人的拼音的一个字母,如王伟琪的用户名密码就都是:wwq 6.此时出现下图 Svn将服务器上的代码和文档传输到你的本机,在你刚才所建的目录中就是最新代码。 7.打开刚才你建的目录,会看到文件夹和文件的图标改变了,如下图

8.这就是签出(check out)功能, 9.其他常见功能请参考https://www.360docs.net/doc/1311301799.html,/tsvn/1.5/tsvn-dug.html 这些是日常使用指南,不需要全部看完,只需看到“撤销更改”这一小节。 忽略已经版本控制的文件 如果你不小心添加了一些应该被忽略的文件,你如何将它们从版本控制中去除而不会丢失它们?或许你有自己的IDE配置文件,不是项目的一部分,但将会花费很多时间使之按照自己的方式工作。 如果你还没有提交,你只需要TortoiseSVN → Revert...来取消添加,你需要将这个文件添加到忽略列表,这样它们才不会被再次误添加近来。 如果文件已经存在于版本库,你需要做更多的工作。 1.用Shift键获得扩展上下文菜单(即按住shift键,然后右键点击这些文 件),使用 TortoiseSVN →删除(保留版本副本) 标记文件/目录从版本库删除,但是保留版本副本。 2.TortoiseSVN →提交父目录。 3.将文件/目录增加到忽略列表,所以你不会再遇到同样的麻烦 另 这是一个更简单但不是很详细的教程。大家也可以试试看。 https://www.360docs.net/doc/1311301799.html,/?action-viewnews-itemid-1%C2%A0%C2%A0

svn常见问题

Svn常见问题及相关原因 1. svn: Server sent unexpected return value (500 Internal Server Error) in response to OPTIONS request for 'https://www.360docs.net/doc/1311301799.html,/svn/test' 错误的用户名 检查登录的用户名是否输入错误 svn: 服务器发送了意外的返回值(500 Internal Server Error),在响应“OPTIONS” 的请求“https://www.360docs.net/doc/1311301799.html,/svn/test” 中 2. svn: OPTIONS of 'https://www.360docs.net/doc/1311301799.html,/svn/test': authorization failed: Could not authenticate to server: rejected Basic challenge (https://www.360docs.net/doc/1311301799.html,) 错误的口令 用正确的用户名/口令登录 svn: 方法OPTIONS 失败于“https://www.360docs.net/doc/1311301799.html,/svn/test”: 认证失败: Could not authenticate to server: rejected Basic challenge (https://www.360docs.net/doc/1311301799.html,) 3. svn: Server sent unexpected return value (403 Forbidden) in response to OPTIONS request for 'https://www.360docs.net/doc/1311301799.html,/svn/test' 用户无权限 联系管理员,为用户分配权限 svn: 服务器发送了意外的返回值(403 Forbidden),在响应“OPTIONS” 的请求“https://www.360docs.net/doc/1311301799.html,/svn/test” 中 4. svn: OPTIONS of 'https://www.360docs.net/doc/1311301799.html,/svn/test': 200 OK (https://www.360docs.net/doc/1311301799.html,) 服务器地址错误,是普通Web页面,不支持SVN的WebDAV 协议 确认输入正确的SVN 服务地址。可以在浏览器中输入该地址进行确认 svn: 方法OPTIONS 失败于“https://www.360docs.net/doc/1311301799.html,/svn/test”: 200 OK (https://www.360docs.net/doc/1311301799.html,) 5. The version of your subversion (client) is below 1.5.0, upgrade to 1.5.0 or above. SVN below 1.5.0 can not handle mergeinfo properly. It can mess up our automated merge tracking! 是由于客户端的软件版本低于1.5.0造成的。服务器端对客户端软件版本进行了限制,以免对合并跟踪破坏。 升级本地的Subversion客户端软件到1.5.0或以上版本。

svn常用命令详解

一.SVN导出(check out 和export的区别) 1.check out跟check in对应,export跟import对应; 2.check out导出获得文件后,导出的文件仍处于SVN版本控制中,与版本库保持关 联,比如你可以进行Svn Update或者Svn Commit操作。同时导出文件夹下有一个.svn的隐藏文件夹,存储着一些版本的元数据信息。 3.export 简单导出一个版本的数据,导出的文件脱离SVN版本控制,修改后无进行 Update和Commit操作。导出文件夹下没有.svn目录。 二.linux下svn命令大全 1、将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 2、往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.php) svn add*.php(添加当前目录下所有的php文件) 3、将改动的文件提交到版本库 svn commit -m “LogMessage“[-N][--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)

例如:svn commit -m “add test file for my test“test.php 简写:svn ci 4、加锁/解锁 svn lock -m “LockMessage“[--force] PATH 例如:svn lock -m “lock test file“test.php svn unlock PATH 5、更新到某个版本 svn update -r m path 例如: svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。 svn update -r 200 test.php(将版本库中的文件test.php还原到版本200) svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit) 简写:svn up 6、查看文件或者目录状态 1)svn status path(目录下的文件和子目录的状态,正常状态不显示) 【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】 2)svn status -v path(显示文件和子目录状态) 第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改

esvn使用简介

一、e svn简介 esvn是一个开源的项目,作为Surbversion版本控制工具在Linux操作系统下的客户端软件。它也是一个图形化界面的软件,同时也可以通过输入命令行来进行SVN操作。 二、esvn安装 1.在linux中安装esvn 步骤 (1)、下载安装包:esvn-0.6.12-1.tar.gz (2)、解压得到esvn文件 (3)、在esvn文件目录中打开终端 (4)、“make”命令运行 安装前的esvn文件内容

安装后的esvn文件内容: 2、打开esvn软件 双击启动esvn,也可通过命令行窗口“esvn”打开,还可以在桌面应用程序 中找到esvn打开(如果失败的话,把这个文件复制到usr/bin目录下即可)。esvn主窗口如下图所示:

三、esvn的使用 1、esvn菜单介绍 (1)“File”菜单,如下图:

●File --> Open working directory 在浏览窗口中打开一个本地目录(可以是不 被版本控制的目录文件)。 ●File --> Workspace 显示管理工作拷贝的对话框。 ●File --> Checkout…检出一个版本库。 ●File --> Browse Repository 浏览版本库。 ●File --> Import…导入文件到服务器版本库中。 ●File --> Export…从服务器版本库中导出数据,导出的内容不受版本控制。 ●File --> Options 该选项对话框用于设置eSvn属性等。 ●File --> Recent workspaces 最近打开的工作拷贝清单。 ●File --> Exit 退出esvn软件。

svn 常见报错

常见错误提示: 1:?.? is not a working copy. Can?t open file ….svn/entries?:系统找不到指定的路径。 原因是输入的访问路径不正确,如svn://192.168.6.200/如果最后少写了“/”,就会出现这种错误提示。 2:将文件checkout之后,没有出现SVN的图标,是怎么回事? 有些时候在客户端Checkout文件后,SVN的系统图标也会不显示,可以执行一下“Clean up”,就会出现SVN的系统图标。 3:为什么添加的文件,别人看不到,版本库里也没有? 最可能的原因是,你只是执行了“Add”而没有“Commit”,这样只是在本地注明某个文件是预定要增加的,而没有实际添加到版本库中,要添加到版本库必须执行“Commit”。删除文件也是一样。 4 :“Commit failed。……You have to update your working copy first”提交失败,需要首先执行更新操作。多人同时修改同一文件,在提交前其他人已经抢先提交到SVN服务器中,导致该错误;解决方法:对工作复本中的文件进行更新即可。 5. 更新时提示文件发生冲突:“One or more files are not a conflicted state。” 多人同时修改同一文件的同一部分,SVN无法自动进行合并,会导致该错误;解决方法:对工作复本中的文件和服务器的文件进行比较,手工合并即可。 6.“Commit failed;File already exists”提交失败,文件**已存在。 版本管理系统在改变你的计算机上的工作副本时,是非常的小心的。在做任何事情之前,它都尽可能把您的意图写到你的计算机上的日志文件中去。但如果偶然地操作中断了(例如:突然停电了,您的计算机死机了),那么日志文件记录就可能同您最后的工作状态不一致。一种建议解决途径:先把要提交的东西拷出来放到其它目录,再更新本地文件,然后把拷出来的文件重新放回去提交。 7:执行clean up时,出现错误“Subversion reported an error while doing a cleanup!” '**' is not a working copy directory ” 遇到这种情况,先删除隐藏文件夹.svn中的tmp下面的临时文件,再执行clean up。 8:因为仓库与目录很多,使用TSVN每次选择目录URL of repository有很多地址,如何才清除呢?像清除浏览器中的历史那样,用什么方法呢? 右键->TortoiseSVN->Settings->Saved Data,就可以清除你想要的东西了,包括URL、log、窗口大小、密码缓存等。 9:在SVN中选中一个目录show log时,出现了某些版本只显示版本号和(no date),没有其他信息,什么原因引起的? 出现了(no date)的revision,为其他人修改了你所没有权限访问的某个目录下的文件。

SVN管理规范方案

Subversion管理规范 一Subversion介绍 Subversion (Subversion)是一个时间机器,随时记录文件和目录的每次改动,例如:文件的增加、删除、重新排列文件等。同时SUBVERSION允许你恢复以前旧版本的数据,或者检查数据变化的历史。 SVN使用类似数据库事物的方式来处理用户提交入库的过程,整个改动要么成功的被提交,要么被中断并回滚。在数据提交完之前,其他人是看不到用户提交的修改文件,你看到的要么是改动之前的状态,要么是改动之后的状态。这样的行为被称为“原子提交”。原子提交很有用,因为它能保证所有相关人员看到的总是相同的东西。原子提交过程的其中一步就是包括把你的所有改动打包为

一个“修订集”(有时被称为改动集),并且再给个改动标记的修订号(绿色勾变为红色叹号)。 图 1 图1总体概括了SVN 整个操作过程:首先用户从版本库通过网络“检出”到本地工作副本中,然后,在本地工作副本中进行增加、修改、删除文件后“提交”到版本库中,如果本地工作副本中版本较系统版本过时,用户使用“更新”功能与系统上版本保持一致。 二 Subversion 的目录结构 每个SVN 版本库下需要有trunk(可用项目名做目录名)、branches 及tags 目录,trunk 表示开发时版本存放的目录,即在开发阶段的代码都提交到该目录上。branches 表示发布的版本存放的目录,即项目上线时发布的稳定版本存放在该目录中。tags 表示保存测试无问题的发布版本,不可修改。branches/tags 命名规则:项目名[_说明]_版本号。 在这需要说明下分三个目录的原因,如果项目分为一期、二期、三期等,那么一期上线时的稳定版本就应该在一期完成时将代码copy 到branches 上,这样二期开发的代码就对一期的代码没有影响,如新增的模块就不会部署到生产环境上。而branches 上的稳定的版本就是发布到生产环境上的代码,如果用户使用的过程中发现有bug ,则只要在branches 上修改该bug ,修改完bug 后再编译branches 上最新的代码发布到生产环境即可。tags 的作用是将在branches 上修改的bug 的代码合并到trank 上时创建个版本标识,以后branches 上修改的bug 代码再合并到trunk 上时就从tags 的version 到branches ,最新的version 合并到trunk ,以保证前期修改的bug 代码不会在合并。 版本库 本地工作副本

相关文档
最新文档