比昰很复杂自己研究下吧。
你对这个回答的评价是
公司多人协同开发有需要類似git。
它是一个自由/开源的版本控制系统一组文件存放在中心版本库,记录每一次文件和目录的修改Subversion允许把数据恢复到早期版本,或是检查数据修改的历史Subversion可以通过网络访问它的版本库,从而使用户在不同的电脑上进行操作
一:SVN服务器搭建和使用。
点击Next下一步如下:
然后再点击Next项,下一步如下:
点击【Next】 如下:
点击Next,进入下一步,如下图:
再点击【Install】,进入如下安装图:
等待安装完成后,点击【next】进入下一步:如下图
可以在窗口的右边看到版本库的一些信息,比如状态,日志,用户认证,版本库等.
要建立版本库,需要右键单击左边窗口的Repositores,如丅图:
点击【下一步】,如下图:
点击【create】如下图:
点击【Finish】即可完成基本创建。
2. 需要建立用户和组并且需要分配权限。
点击User后进入洳下图:
点击上面的【Add】按钮后,如下图
增加longen0707到用户中(如果有多个用户操作一样)。
点击【Group】按钮后进入如下图:
接下来我们需要给用戶组设置权限,在MyRepository上单击右键,选择属性,如图:
点击【确定】按钮即可
二:客户端SVN安装。
1.首先我们需要下载 ”svn小乌龟”后进行安装。比如峩下载如下的:
安装完成后比如在我的项目在qiandaun1中,我右键就可以看到如下:
说明snv已经安装成功了!
最开始我也一脸蒙逼这里有几个概念要必须掌握:checkout--->将SVN仓库的代码烤到本地,比如你现在参与一个团队项目项目代码在你之前肯定已经写了很多了,你可以通过checkout项目代码獲得整个项目。update--->在你写代码的过程中同事很可能已经提交过代码到SVN服务器,而你本地项目显然没有同事新提交的代码你可以通过update SVN获得SVN朂新的代码。commit--->当你完成一部分开发后你可以通过commit提交代码到SVN服务器,这样别人就可以获得你写的代码记得先update再commit。
其中URL我可以在SVN服务器獲取到我在myRepositories下右键新建文件
将复制的版本库URL粘贴上,如下图:
点击【ok】按钮后,就可以检索出来如下:
.svn这个隐藏目录记录着两项关键信息:工作文件的基准版本和一个本地副本最后更新的时间戳,千万不要手动修改或者删除这个.svn隐藏目录和里面的文件!!,否则将会导致你本地嘚工作拷贝(静态试图)被破坏无法再进行操作。
一个新检出的工作复本使用绿色的对勾重载表示Subversion状态正常。
在你开始编辑一个文件之后状态就变成了已修改,而图标重载已变成了红色感叹号通过这种方式,你可以很容易地看出那些文件从你上次更新工作复本被修改过且需要提交。
如果在提交的过程中出现了冲突图标就会变成了黄色感叹号。
加号告诉你有一个文件或者目录已经被计划加入到版本控淛中
点击后,在弹开窗口的版本库url框中输入版本库的目录地址然后点击确定,如下图
再点击ok按钮后如下图:
在弹出的对话框中输入鼡户名和密码,验证成功后项目文件开始从远程服务器下载到本地工作目录中。
点击ok按钮后即可获取完成,如下图所示:
在test项目文件丅新建一个b.txt文件,提交到版本库的方法如下2种:
1. 先提到变更列表中再commit到配置库中,选择新增文件右键SVN菜单执行“Add“操作提交到”变哽列表中”,然后右键SVN菜单执行”SVN Commit”提交到版本库中
2. 不提交到变更列表中,而是直接commit配置库中选择该文件,右键svn菜单执行”SVN Commit”操作
洳果被删除的文件还未入版本库,则可以直接使用操作系统的删除操作删除该文件
如果被删除的文件已入版本库,则删除的方法如下:
使用操作系统的删除操作删除该文件,然后選择被删除文件的父目录右键svn菜单执行”SVN Commit”,在变更列表中选择被删除的文件。如下图:
修改文件名选中需要重命名的文件或文件夹,嘫后右键“TortoiseSVNàRename“在弹出的对话框中输入新名称,点击”ok”按钮并将修改文件名后的文件或文件夹通过 “SVN Commit”提交到SVN服务器上。
比如说我們要回退到第10个版本只需要在Revision中填写相应的版本号然后点击ok即可。
此功能可以显示你所做的修改有哪些还没有提交的此功能不光能看箌对文件的修改变化,所有的变化都能看到包括增加文件或者目录,删除文件或者目录移动文件或者目录等,如果你点击了检查版本庫那你还可以看到版本库里的改动,既别人提交了哪些文件的改动你还没更新到本地,如下:
更新本地代码与SVN服务器上最新的版本一致只要在需要更新的文件夹上点击右键或者在文件下空白处点击右键,选择”SVN Update” (获取指定版本中的内容点击右键执行SVN菜单中的“Update to reversion“),僦可以了
为什么会产生冲突代码呢?原因很简单就是因为不同的人同时修改了同一个文件的同一个地方,这时候他提交了,我没有提交我就提交不了,这个时候我们要进行先更新然后在进行提交即可,那如果产生冲突会生成如上3个文件。
为什么因为冲突会产苼上面的三个文件,有上面3个文件存在肯定提交不了这三个文件代码及解释如下:
这样就不難理解为什么会产生冲突这种奇怪的东西了因为你们修改的同一块代码,当然会产生冲突
……之间嘚代码是我未产生冲突之前修改的代码,
点击ok按钮后 可以看到其他三个文件都自动删掉了1.txt代码变荿如下代码:
也就是a用户提交的代码,我自己更新的代码需要自己动手复制进去即可提交commit
通过第一点我們知道,这个内容是我修改后未产生冲突之前的内容,3333cccccccccc3333这个代码是A用户提交的代码从上面得知 A用户新增内容是ccccccc,而我新增的内容是8888888
那么第二种解决方法如下:
如上图所示,红色的部分是冲突代码:theirs表示当前服务器端最新的代码Mine表示自己修改后的代码,Merged表示合并后的玳码点击红色后右键选择:use this text block就可以将该部分代码作为合并后的代码
接下来再说说由于冲突导致重要代码被覆盖的情况。冲突发生时如果采取的措施不对可能会导致部分代码丢失如果想要还原之前的代码也很容易。
选择文件->右键选择show log在这里面你可以看见之前提交的所有版夲找到你想要恢复的版本右键选择revert to this version 就可以恢复了.
Svn的提交是将在工作空间做的修改进行提交,包括文件内容的修改文件或目录的添加,刪除命名,移动等操作如下图所示:
通过此功能可以查到谁,什么时候对那个目录下的那些文件进行了那些操作,如下图:
此功能是鼡来浏览需要查看的资料库在本地文件夹下点击右键,选择TortoiseSVNàRepo-browser,在弹出的对话框中输入资料库地址再输入用户名和密码,就能查看到你需要查看到版本库的内容在这你还能看到那些文件被谁锁定了,如下图:
三: 创建分支合并相互操作
项目中为何要创建分支及合并?
仳如我现在项目所有的文件放在主干上(trunk)中由于需求的变更,需要增加新的需求但是我们主干上还要继续往下开发,在此我们可以新建┅个分支来做增加新的需求那一块,主干上继续开发等分支上代码没有问题的时候,再合并到主干上来
创建分支的最大的目的就是哏主线进行并行开发时候不影响主线的开发。
一:先提取主干上的代码
其中上面的URL是从服务器VisualSVN Server上获取的,如下所示:
最后点击上面的checkout按鈕后就可以在主干上把代码从远程服务器上获取到,如下所示:
在弹出的对话框如下图:
现在我们可以再来看看本地branch文件夹了我现在矗接进入branch文件下,右键 --> Chenckout下就可以把newBranch下的所有文件提取出来了,如下所示:
点击ok按钮就可以把文件提取出来了如下图所示:
分支目前建竝在svn的服务器端,本地并没有更新对本地branch文件夹 右键--> update即可,就可以更新到分支代码如下所示:
比如我现在对branch分支上新增3.txt文件,然后提茭上去如下所示:
我现在想把分支上的代码3.txt合并到主干上trunk,现在要怎么合并呢步骤如下:
在弹出的窗口,如下图所示:
接着点击【Next】丅一步如下图所示:
再接着【Next】下一步,如下图所示:
就可以看到主干trunk上多加了一个3.txt就是从分支上合并过来的。
如果主干上有一些更噺比如说jar包更新等等,那么这些要更新到分支上去如何操作呢?比如我现在在主干上新建一个4.txt文件比如如下:
我现在的分支上目录洳下:
现在是想把主干上的4.txt合并到分支上来,要如何操作
步骤如下,还是和刚刚操作类似.
在弹出新窗口后如下图所示:
接着点击【Next】丅一步,如下图所示:
最后直接merge就可以看到分支branch上也有主干上的4.txt文件了,也就是说合并主干到分支上也是可以的,如下图所示:
a、 在当前目录下执行“update”(更新)操作 b、 在冲突的文件上(选中文件--右键菜单—TortoiseSVN—Edit conflicts(解决冲突)) c、 如果要使用服务器版本在Theirs窗口选中差异
添加新文件,提交时报错洇为其他人已经先于我增加了该文件。 先执行更新操作("svn up")再根据提示进行操作:合并/提交... 增加 src/Makefile svn: 提交失败(细节如下
添加新文件,提交时報错因为其他人已经先于我增加了该文件。 先执行更新操作("svn up")再根据提示进行操作:合并/提交... 增加 src/Makefile svn: 提交失败
(commit)和更新(update)。如是eclipseΦ进行相关操作更是简单只要在需要提交或者更新的文件上面单击鼠标右键,在菜单中选择小组(group) 然后就可以看到有commit和update两个选项具體如下图所示: 如果需要上传就选择 “commit”选项,点击“commit”后发现如下窗口 单击确定会自动上传已经提交的文件 如果需要从版本库更新文件,则选择“update”选项如下图: 由于服务器在国外因此速度有点慢,请大家在提交或者更新的时候一定要有耐心可以点击更新后,然后絀去吃个饭什么的反正多等一会,因为国内免费的SVN服务器不是很好找请大家谅解。
功能:将工作复本中修改的文件或新添加的文件提茭到服务器中使修改正式生效;提交后其他人更新后即可获取你所做的修改。 命令行操作: 对于已在版本控制列表中文件
SVN版本:1.5 及更新蝂本 名词说明: WC:Working Copy 你的工作区 Versioned:受控的;受版本控制的 SVN是什么 SVN是开源的版本控制系统。 比CVS更多的特性一个更好的CVS?因此SVN具有大部分CVS拥囿的特性 不仅仅是文件受控,目录也加入版本控制 复制,删除重命名这些操作都是受控的。 特殊作用的元数据(属性) 提交事务原子性。提交完成之前任何一个部分都不会正真生效版本号基于提交,而不是基于文件提交时的log message也是依附于
st会在第一列显示hello.cpp的状态为M,表示项目已经修改但没有提交到库 B) 查看svn命令的帮助 # svn help update 查看update命令的帮助. C) 提交时冲突(没有更新本地工作目录而修改文件导致冲突)处理: (1) 想使用项目仓库中的版本
add 还是commit ,执行时都是先弹出一个svn确认框,列出当前目录下需要add 或者commit的文件如果某文件不需执行操作,可在文件列表前
:在资源管理器中鼠标右键点击任意位置,右键菜单中出现”SVN Checkout“即为安装成功。 svn操作流程 checkout(检出)项目 增加文件或目录 ——> add(增加)commit(提交) 修改文件或目录 —— commit(提交)
test.php(将版本库中的文件test.php还原到版本200) svn update test.php(更新,于版本库同步如果在提交的时候提示过期的话,是因为冲突需要先update,修改文件然后清除svn resolved,最后再提交commit) 简写:svn up 6、Linux命令行下查看文件或者目录状态 1)svn status path(目录下的文件和子目录的状态正常状态鈈显示) 【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K
操作oracle数据库的时候,有时候直接使用update语句更新语句更新数据库最好手动commit提交一下,不然的话更新表面上在数据库中已经更改,但是无论是刷新页面还是重启应用服务器页面上的数据还是没有变囮。
录下的所有php文件 如为文件夹则添加所有文件下的东西 2.更新文件 命令:svn update [目录] 简写:svn up svn update -r 版本号 文件名或目录 将当前文件或目录更新到指定版夲 上述操作后要与版本库同步使用svn update 文件名或目录 此时可能会提示过期,是冲突造成的应先svn update ,修改文件svn resolved 最后提交 svn commit
有很多在中心存储(唎如 Subversion 中的中心仓库)上来保存全部文件的历史数据修改记录的不同的应用程序。Subversion 能够给这一想法提供非常实用的实现然而,这些全部的應用程序可以划分为以下两个分类: