SVN面试题及答案.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

SVN面试题及答案

一、基础概念题

什么是SVN的工作副本(WorkingCopy)?和版本库(Repository)有什么关系?

答案:工作副本是本地电脑上从版本库拉取的代码文件夹,能直接修改、编辑;版本库是存储所有代码版本、历史记录的中央仓库(本地或远程)。两者通过svncommit(本地改同步到仓库)和svnupdate(仓库改同步到本地)保持同步,工作副本相当于版本库的“本地镜像”。

SVN里trunk、branches、tags三个目录分别用在什么场景?

答案:trunk是主干,存项目日常开发的最新代码,团队主要在这协作;branches是分支,比如开发新功能时建“feature-登录”分支(不影响主干)、修复线上bug建“hotfix-订单报错”分支;tags是标签,用于标记稳定版本(如发布版本“v1.0.0”),不能修改,仅作存档,避免误改发布版代码。

什么是SVN的版本号?它是按文件还是按项目递增的?

答案:版本号是SVN给每次提交(commit)分配的唯一数字(从1开始递增),按项目整体算,不是单个文件。比如改了A、B两个文件后一次提交,版本号从5升到6,此时A和B的最新版本都是6,能通过版本号定位整个项目某一时刻的状态。

二、实操命令题

刚拿到一个新项目,怎么从远程SVN仓库拉取代码到本地?

答案:先在本地建空文件夹,打开命令行进入该文件夹,执行svncheckout远程仓库地址(简称svnco地址),比如svnco/project/trunk,等待拉取完成,本地就有工作副本了。

本地修改代码后,想提交到版本库,需要做哪几步?如果提交前发现本地代码和仓库最新版有冲突,怎么处理?

答案:正常提交步骤:①svnstatus(简称svnst)检查本地修改文件(红感叹号是修改,问号是未纳入版本控制的新文件);②svnadd新文件名(若有新文件需先加入版本控制);③svncommit-m提交说明(说明要写清楚改了什么,比如“修复登录页验证码不显示问题”)。

若提交前冲突:先执行svnupdate(拉取仓库最新代码),此时冲突文件会标红,打开文件会看到.mine(本地修改)、=======(仓库修改)、.rxxx(仓库版本号)的标记,手动编辑保留正确代码,删除冲突标记,再执行svnresolved冲突文件名(标记冲突已解决),最后重新commit。

本地改了代码,但还没提交,突然不想改了,怎么恢复到和仓库最新版本一致?

答案:执行svnrevert文件名(单个文件)或svnrevert-R文件夹名(整个文件夹,-R是递归),注意:revert会直接丢弃本地未提交的修改,无法恢复,执行前最好用svnst确认要恢复的文件。

想查看某文件最近5次的修改记录,包括谁改的、改了什么内容,用什么命令?

答案:执行svnlog-l5文件名(-l5表示显示最近5条记录),能看到版本号、作者、提交时间、提交说明;若想查看具体修改内容,加-v参数(svnlog-l5-v文件名),会显示文件的增删改细节。

三、协作与进阶题

团队里有人误提交了敏感文件(比如数据库密码)到SVN,怎么彻底删除这个文件的所有历史记录?

答案:普通svndelete只能删除当前版本的文件,历史记录还在,需用svnadmindump和svnadminload重写版本库:①先备份原仓库:svnadmindump/原仓库路径backup.dump;②创建新仓库:svnadmincreate/新仓库路径;③过滤敏感文件并导入新仓库:svndumpfilterexclude敏感文件路径backup.dump|svnadminload/新仓库路径;④最后让所有人重新checkout新仓库,注意:操作前要通知团队暂停提交,避免数据丢失。

怎么给SVN仓库配置权限?比如让开发组能读写trunk,测试组只能读trunk?

答案:通过仓库的conf目录下的三个文件配置:①svnserve.conf:开启权限验证(把#password-db=passwd和#authz-db=authz前的#去掉);②passwd:添加用户(格式“用户名=密码”,比如“dev1=123456”“test1=654321”);③authz:配置权限,先分组([groups]dev=dev1,dev2;test=test1),再配路径权限([/trunk]@dev=rw;@test=r,rw是读写,r是只读),配置后重启svn服务生效。

SVN和Git

文档评论(0)

151****9429 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档