svn 比眉伴天荒 2022-06-07 01:24 53阅读 0赞 一、 Introduction subversion,子级版本。子级源代码版本控制软件。Svn是一款项目管理工具。通常软件开发由多人协作开发,如果对代码文件、配置文件、文档等没有进行版本控制,将会出现很多问题,如备份多个版本,占用磁盘空间大,代码冲突,容易引发bug,难以追溯问题代码的修改人和修改时间,难以恢复至以前正确版本,无法进行权限控制,发布困难等。版本控制(Revision Control)是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。Svn是为了解决这类问题的版本管理工具,为了替换cvs而出现。Svn基于客户/服务器模式,多个用户与服务器连接,可以从服务器取文件,然后更新后提交给服务器,为用户所共用。 Svn的工作方式类似数据库,即采用库加服务的方式,服务负责处理客户端的请求对库进行增删改查的操作。 作用,多人开发同一个项目不会出现代码覆盖情况;针对一个文件可以创建多个不同版本,并且可以随时查看不同版本的内容;领导可以通过svn查看每个人的工作情况。 二、 Svn服务端的安装与使用 下载svn服务端软件,然后安装。 Svn服务器端的使用 (一)命令行操作: 1. 创建多个仓库 在项目目录下创建3个文件目录作为3个仓库用于存储开发的不同项目的源代码。比如,app,book,shop。 进入cmd命令行,进入svnserver的安装目录,进入bin目录,执行svnadmin create f:\\project\\app 就会在这个项目目录下创建一个仓库。 2. 启动仓库服务 svnserve -d(独立端口运行) -r(仓库运行) 仓库地址 比如:svnserve -d -r h:/svnServer/app/book //启动仓库服务。 该svn服务走svn协议,端口号是3690。启动仓库服务后,保持cmd窗口挂起状态,不要关闭,否则进程关闭。 启动仓库后本地客户端与仓库取得联系,在编好的文件上右键—>checkout(检出),在弹出的选项框中,RUL of repository填写svn服务器端的ip地址,比如svn://192.168.0.112,如果有仓库开启,则与这个开启的仓库取得联系,在工作目录下会创建一个.svn的文件。 3. 开启仓库匿名帐号权限 为了使用户端能够提交文件,需要开启匿名账户权限 找到对应的仓库,比如shop,在conf目录下,打开svnserve.conf。开启anon-access = write。不需要重启svn服务。再次提交文件,成功。 4. 同时运行多个svn仓库服务 把所有仓库的上级目录当成服务给启动起来。比如,app下有shop、book、food,同时运行这个三个仓库,执行svnserve -d -r f:/app/。然后当客户端chekout的时候,RUL of repository填写svn服务器端的ip地址,比如svn://192.168.0.112/仓库名,与对应的仓库取得联系。 如果在运行多个svn仓库之前,有用户已经checkout了单个运行的仓库,那么运行多个仓库后,之前的用户就找不到仓库了,则需要用户更换svn主机名地址。步骤,删除.svn文件,断开与仓库的联系;重新checkout并根据svn新主机名建立与仓库的新联系。 (二)图形界面操作 Svn服务端组件包括库,用户和分组。管理项目需要创建仓库,管理工作人员需要加入用户,通过分组可以简化权限管理。 创建仓库,按照步骤。创建仓库后,在这个仓库创建结构化工程目录。给仓库配置操作权限,也可以给库下面的文件配置操作权限。 trunk:项目开发代码的主体,是从项目开始直到当前都处于活动的状态,从这里可以获得项目最新的源代码以及几乎所有的变更历史信息。 branch:从trunk的某个点分离出来的代码拷贝,通常可以在不影响主干的前提下在这里进行重大bug的修改,或者做实验性的开发,以及定制功能开发等。如果分支达到了预期的目的,通常可以被合并(Mgerge)到主干中。 tag:用来表示trunk和branch的某个点的状态,以代表项目的某个稳定状态,通常为最终发布状态。 创建用户,配置用户权限。 如有需要,创建分组,添加组员。 三、 Svn客户端的安装与使用 下载安装svn客户端软件,并安装。客户端类型包括Tortoise图形化界面操作,或者使用Eclipse等开发工具插件操作。TortoiseSVN是Subversion版本控制系统的一个免费开源客户端。安装完成后,右键可以看到新的功能项:TortoiseSVN和SVN checkout。 Svn客户端的使用: 右键svn checkout,从服务器检出,选择仓库的url路径,配置检出的路径,检出。 然后创建一个文件,比如index.php,编写代码。 右键编好的文件—>SVN-- >Add 然后,右键文件—>commit 如果仓库设置了匿名账户权限,则可以提交成功。提交的文件存储在仓库的db目录下。revprops目录下存放已提交文件的信息,rev目录下存放的文件。 对于新目录中文件的提交,比如创建了一个Model目录、一个Controlller目录、一个View目录,在目录中创建了文件。新目录内部的文件不能直接提交,必须是目录本身已经提交给仓库了,该目录的文件才可以单独进行commit提交。 为了加快文件的提交速度,可以在项目文件目录点击右键—>commit,svn会把当前目录及内部所有子级递归目录需要提交的文件给选取上供commit操作。 同一个文件的不同版本切换 一个程序文件可以在svn仓库里边形成许多不同版本,并可以随时查看,对比。 右键文件—>show log 可以查看文件的所有版本信息。 右键文件-- >svn-- >update to revision 可以切换到历史版本。 客户端对于检出的文件的增删改的操作。 1. 增 选中要做操作的检出的文件,右击,选择TortoiseSVN,选择add。然后选择文件,右键提交。 2. 改 修改了文件的内容后,右键选择commit提交。要使用文件时,先更新,再使用。 修改冲突,指至少两个人员修改同一个文件时,其中有人先提交了,然后后提交者提交失败。由于当两个人员同时修改文件时,两个文件都是从同一个版本号开始,比如1,当先提交后,这个文件的版本号变为2,然而当后提交者提交时版本号依然是2,提交的原则是版本号比服务器的版本号大1。所以,出现了冲突。解决的办法是后提交者先更新,将版本号变为3,然后再提交。 3. 删除 删除掉要删除的文件后,再右键提交。 4. 查看日志 右键要查看的文件夹的位置,右键TortoiseSVN,选择showlog。 5. 清除用户名密码认证 右键TortoiseSVN,选择settings,选择savedata,选择clearall。 四、 Eclipse的svn插件的安装以及操作svn 下载,安装svn插件。在eclipse的help框选择installnewsoftware。 (一)操作svn的步骤: 1. 要与svn服务器建立关联。在eclipse中,选择windows》》show view》》搜svn》》打开svn资源库》》右键新建资源库》》输入库的url》》添加。 2. 将项目添加到资源库。右键项目》》team》》show project》》svn》》使用已有的资源位置》》使用指定模块名》》选择trunk》》完成》》选择切换到team synchronizing界面》》选择项目右键提交》》ok。 注意:如果已经向svn服务端添加了项目,那么需要删除本地项目时,需要先断开与svn服务器的连接。右键项目》》team》》断开链接》》并且从文件系统中删除svn元信息》》yes。 3. 在开发中,如果本地还没有项目文件。则需要从svn服务器中先检出项目。在svn资源库面板》》选择项目》》右键检出为(checkout)》》选择相应选项》》确定。检出后,项目上出现表示有修改的雪花标志,实际上并没有修改过项目,原因是文件夹中的.settings文件与svn服务器主机的项目文件夹的.settings文件夹不同,正常现象。 (二)对于svn的具体操作 1. 增 新建文件后,右键》》team》》与资源库同步》》进入团队同步界面》》选择项目右键》》提交》》填写注释》》ok。 2. 改 修改文件后,修改的文件标志位星花,右键》》team》》与资源库同步》》进入团队同步界面》》提交》》填写注释》》ok。 3. 更新 如果项目有别人做的更新,选择项目》》右键》》team》》与资源库同步》》进入团队同步界面》》更新。 4. 解决冲突 如果两个或两个以上人员同时修改了一个文件,当先提交后,对于后提交者就会出现冲突提示。选择项目》》右键更新》》回到项目文件夹看到增加了2个历史版本和一个自己最近修改的版本,而原文件自动进行了合并,如果合并的文件符合要求,则删掉注释,保存之》》删除增加的3个文件》》右键项目》》team》》与资源库同步》》进入团队同步界面》》提交。 5. 删除 删除文件后,选择项目》》右键》》team》》与资源库同步》》进入团队同步界面》》提交。 6. 清除认证 也就是重置用户名和密码,请删除c:\\users(用户)\\”你的用户名”\\AppData\\Roaming\\Subversion\\auth\\下的所有文件。 7. 资源追溯 查看历史版本。选择项目》》右键team》》显示资源历史记录。 五、 冲突解决 两个程序员在短时间内对同一个文件进行修改,并尽心那个提交,后提交的会尝试覆盖先提交者的文件,但是不会成功,因为有冲突机制避免此情况发生。 svn的冲突,广义的冲突,提交程序文件本地版本号码小于服务器版本号码。狭义的冲突,多个程序员对用一个文件、同一处代码进行修改,在他们提交文件的时候会产生冲突。 对于这种冲突一般有两种解决方案,令牌方式解决,给每个文件设置令牌,谁获得令牌谁有权利开发该文件,比如vss(visual source safe)源代码控制管理软件使用该方式;通过版本号码进行控制,用户commit文件,本地版本号与仓库版本号必须一致才可以提交,否则禁止提交,本地与服务器版本号不一致,一定是本地的号码小于服务器的,svn是通过版本号码解决冲突的。 冲突具体形式及其解决 大家修改的代码不在同一处 解决,执行update,把仓库最新的文件更新到本地,并和本地文件做merged融合操作,之后继续提交文件即可。 大家修改的代码在同一处 直接update操作把最新的版本更新到本地,与本地文件做merged融合操作,对冲突文件稍作修改后继续提交即可。update后会生成3个文件,一个当前用户修改的状态,一个当前文件前一个版本的状态,一个当前文件当前版本的状态。删除掉这3个帮助文件,在冲突文件中,将帮助符号的行,比如>>> <<<< ====等,删除。然后,对文件稍作修改,保存,文件的黄色感叹号变为红色问号,可以提交。 六、 帐号和权限 1. 给用户设置权限 在某个仓库的conf目录下的,比如shop的conf目录下,authz用于配置权限,passwd用户配置密码,svnserve.conf是主配置文件。首先关闭匿名帐号,anon-access = none;然后,引入两个辅助配置文件,password-db = passwd authz-db = authz。设置帐号,打开passwd文件,按照提供的范例,设置用户名和密码,比如tom = tom123。给帐号分配权限,打开authz文件,设置权限,比如: # 给帐号设置权限 # [shop:/] 给多个仓库中的shop仓库设置权限 # [/]给当前单一的仓库设置权限 # 具体权限:r(read)读update w(write)写commit [shop:/] tom = rw jim = r 2. 给组别设置权限 为了便于管理,为组别设置权限,让同一组具有相同权限的人员放到一个组中,只需设置这个组的权限即可。比如,有如下帐号人员: tom2 = tom2123 tom3 = tom3123 tom4 = tom4123 tom5 = tom5123 tom6 = tom6123 在权限文件中 [groups] php1 = tom2,tom3,tom4,tom5,tom6 # 给帐号设置权限 # [shop:/] 给多个仓库中的shop仓库设置权限 # [/]给当前单一的仓库设置权限 # 具体权限:r(read)读update w(write)写commit [shop:/] tom = rw jim = r @php1 = rw 3. 开启只操作某个目录的权限 为了代码的商业隐蔽,需要开启只操作某个目录权限。 比如,创建一个radio的目录,管理员先把该radio目录提交到仓库,然后,创建只可以操作radio人员的帐号, wai1 = wai123 wai2 = wai223 wai3 = wai323 然后,给这些帐号只可以操作某一个目录的权限 [groups] wai = wai1,wai2,wai3 # 给帐号设置只操作video目录的权限 [shop:/radio] @wai = rw 然后,给这些帐号创建单独的工作目录,并且和仓库的radio目录,取得联系 URL of repository,填写svn://localhost/shop/radio。 然后,就可以创建文件,执行操作了。 七、 设置开机启动项服务 语法 sc create 服务名称(随意) binpath= ”svn服务端安装目录/bin/svnserver.exe -r 服务仓库地址目录 --services” start= auto 比如: sc create svnd binpath= ”d:/svnServer/server/bin/svnserve.exe –r d:/svnServer/app --service” start= auto 注意:binpath= 空格 start= 空格 直接在cmd命令窗口的任意路径下,执行这个命令。有的电脑由于权限限制,禁止在dos窗口执行底层指令,可以将这个指令保存到文本中,保存为批处理程序文件(linux系统的shell脚本文件),比如sc.bat。 删除服务操作:sc delete 服务名称 八、 svn查看工作情况和bug 右键-->TortoiseSVN-->show log 右键—> TortoiseSVN-->setting-->Saved data 可以清除缓存,依次为主机名缓存、输入日志缓存、文件日志缓存、日志大小缓存、用户帐号缓存。 如果在svnserve.conf中关闭匿名帐户是使用\#注释关闭,清除缓存,再使用show log查看日志有bug产生。使用auth-access = none关闭匿名账户,消除这个bug。 通过svn追踪bug,做开发调试,可以达到0bug开发的效果。右键文件,show log,在界面上选中疑似有bug的文件,和这个文件前一个版本的文件,右键compare revisions。
相关 svn 转自:http://blog.csdn.net/daobantutu/article/details/60467185 搭建SVN服务器详细教程 本教程会从最基本的 小咪咪/ 2022年05月29日 07:47/ 0 赞/ 253 阅读
相关 svn 以下文章转自:http://developer.51cto.com/art/201005/201764.htm 1、在本文的操作过程中如果遇到相关问题。比如命令找不 旧城等待,/ 2022年05月29日 02:46/ 0 赞/ 238 阅读
相关 【SVN】SVN初识 <table> <tbody> <tr> <td><font> SVN 介绍</font></td> </tr> </tbody> </table 港控/mmm°/ 2022年05月16日 05:26/ 0 赞/ 272 阅读
相关 SVN sudo apt-get install subversion libapache2-svn sudo svnadmin create /svn $ s 骑猪看日落/ 2022年05月10日 15:40/ 0 赞/ 220 阅读
相关 SVN SVN简介 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控 た 入场券/ 2022年04月23日 22:24/ 0 赞/ 262 阅读
相关 SVN 一、准备工作 1. Subversion服务器程序 先到官方网站上下载最新版本,\[url\]http://subversion.tigris.org/se 水深无声/ 2022年04月14日 04:21/ 0 赞/ 253 阅读
相关 svn apache产品,下载https://www.visualsvn.com/downloads/ ![1382212-20190411223038268-2119141780 曾经终败给现在/ 2022年01月06日 04:41/ 0 赞/ 322 阅读
相关 svn 安装svn 1. 客户端 [客户端][Link 1] ![1250855-20190722160356912-317256987.png][] [服务器端] 旧城等待,/ 2021年11月09日 22:06/ 0 赞/ 329 阅读
相关 svn 1.装包配置conf目录下authz passwd svnserve.conf三个配置文件,配置规则登录用户名和权限。 2.svn import . file:///var/ 女爷i/ 2021年10月30日 04:48/ 0 赞/ 346 阅读
相关 SVN 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/maplejaw_/article/details/52874 约定不等于承诺〃/ 2021年09月18日 01:20/ 0 赞/ 414 阅读
还没有评论,来说两句吧...