美文网首页
svn安装和使用

svn安装和使用

作者: 上善若水_900e | 来源:发表于2017-09-11 10:54 被阅读0次

    一、SVN

    1、什么是svn

    svn:全称Subversion,是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。 许多人会把版本控制系統想像成某种 “时光机器”。

    SVN它也是安装在服务器端的一个软件,用来管理我们每次提交的代码。没提交一次代码,svn就会记住:该次提交的代码是什么、提交人是谁、这个代码的提交较上次的代码有什么变化。

    2、同类型产品

    vss:visual source safe

    cvs:Concurrent Versions system

    github: 分布式代码控制管理软件,林纳斯开发的(Linux)

    3、使用svn开发的作用

    ①、可以记录一个文件的多个版本,并且能回到之前的某个版本

    ②、可以对相同的文件进行“融合/整合”,而不是覆盖文件。

    ③ 公司领导可以通过svn查看每个人的工作情况

    二、SVN的安装

    1、服务器端安装(Subversion for windows)

    2、客户端安装(TortoiseSVN)

    根据自己电脑的位数(32位或者64位)来选择安装。

    查看自己电脑位数的方法:右键我的电脑属性

    双击一个版本,一路next,最后点击finish完成安装。

    安装完成:在任何文件夹的空白处包括桌面,右键会看到如下选项,表示安装成功。

    安装完成,如果看不到右键选项,重启电脑。

    三、使用SVN服务

    1、创建多个仓库(存储代码文件)

    1、先在E:/svn/app/下新建三个仓库(放项目代码的)

    创建仓库:

    用命令:svnadmin create 仓库地址

    svnadmin create E:/svn/app/shop

    如果提示

    错误。解决办法:类似于mysql和httpd。

    方法一:添加svnadmin.exe所在目录到系统的环境变量。

    右键我的电脑属性高级环境变量Path.

    编辑Path,添加svnadmin.exe所在目录到Path中。

    方法二:切换到svnadmin.exe所在目录,再执行该命令即可。

    切换方法:

    到此,仓库创建成功。

    把其他两个仓库也创建好:(针对个别电脑不能自动将命令目录放到环境变量中的情况)

    到此,三个仓库都创建好了。

    2、启动仓库服务

    用命令:svnserve –d –r 仓库地址

    svnserve –d –r E:/svn/app/shop

    服务启动完成,这个dos窗口不能关闭,关闭表示svn仓库服务关闭。这是一个挂起服务。

    3、与仓库取得联系

    1、新建了三个文件夹,分别表示三个程序员的电脑

    2、这三个程序员,要和svn仓库联系

    在每个程序员的“电脑”上的工作目录中,右键SVN Checkout…

    弹出如下对话框:

    点击“ok”。

    然后看一下yasuo的文件夹(电脑):

    查看隐藏文件的方法:

    相同的办法,另外两个程序员,也和我们的仓库取得联系。

    4、给svn仓库提交第一个程序文件

    第一步:右键文件->SVN->add

    第二步:右键->SVN Commit…

    点击“ok”

    出现“认证失败”是因为,我们没有权限提交。

    那么现阶段,先为了提交成功,先打开“匿名账号”。

    打开“匿名账号”的方法:

    找到该项目的仓库配置文件:

    打开svnserve.conf文件,进行如下配置:

    注意:19行前面不要有空格。

    修改完配置文件,无需重启仓库服务。

    再次提交:

    4.1文件颜色标志

    ① 蓝色加号:本地的.svn对该文件有形成管理(远程仓库 还没有该文件记录),该文件已经执行add操作

    ② 绿色对号:本地文件、.svn管理的版本文件、远程仓库文件 三者内容完全一致

    ③ 红色叹号:本地文件  与  .svn和仓库文件 不一致(用户自己修改了该已经提交过的文件)

    ④ 黄色叹号:表示该文件正处于冲突状态

    ⑤ 蓝色问号:新建的一个文件,本地.svn 和 远程仓库 对该文件都没有记录

    4.2在仓库内部查看已经提交的文件信息(看一下,了解一下)

    查看的结果:

    这里就是了解一下,能看到我们提交的东西就可以了。

    4.3 ruiwen和jie要到仓库服务器中将已有的文件取得

    update操作过后:

    jie也是同样的步骤。

    到此,三个程序员都有这个文件了。从现在开始,他们就可以一起开发了。

    5、svn常见操作

    checkout  ->第一次和仓库取得联

    update->后续更新

    commit->提交

    6、目录和文件的提交

    6.1一次性提交多个文件

    一次性提交多个文件,无需add,只需直接SVN Commit…。svn会将没有执行过add操作的文件找出来。

    6.2提交文件夹

    在yasuo的工作目录中,新建了Controller的文件夹,在Controller文件夹下新建了两个控制器User和Index控制。

    在Controller文件夹下,右键,显示如下情况:

    发现没有add和commit,也就无法提交,原因是他们的父级目录还没有提交。

    先提交他们的父级目录,也就是Controller文件夹。当然了,提交Controller文件夹的时候,自动会关联上他里面的文件。

    选择上这些文件,提交即可。

    7、同时运行多个svn仓库服务

    错误的同时运行多个svn仓库服务的方式:

    在打开一个dos窗口,在执行svnserve命令,开启book和car的服务。

    svnserve –d –r e:/svn/app/book

    svnserve –d –r e:/svn/app/car

    svnserve –d –r e:/svn/app/shop

    如果这样开启三个服务是不行的,这样的话,我们在检出(checkout)的时候,localhost指向不明确了。

    正确的办法:

    开启一个总的服务:

    svnserve –d –r E:/svn/app

    到这里,三个仓库的服务都开启了。

    实验:与book仓库取得联系(检出checkout)。

    新模拟了两个程序员的电脑(Xishi和Diaochan),在Diaochan的工作目录下,右键Checkout…

    注意:此时,localhost指向的是E:/svn/app目录,所以,我们在想检出book项目的代码的时候,要加一层book目录。

    7.1已有用户更换svn主机名地址

    当svn服务主机地址改变后,我们就要相应的改变主机地址。改变的办法:

    看到上图,表示主机更换成功。

    8、同一个文件的不同版本切换

    在yasuo的工作目录中,新建了一个banben.txt的文件,第一次写了11111并提交;第二次加入2222再次提交;第三次加入33333再次提交。到此,banben.txt这个文件有三个版本。

    如何来查看它有几个版本呢?

    看到的结果:

    如何切换到之前的某个版本?

    回到之前的版本,我们一般是查看为主,当然有时候也会修改。

    如果回到以前的版本,并且修改了文件,并且还要提交,会出现“过期”错误。

    原因是,svn仓库服务,如果本地的文件版本 低于 仓库服务器的版本,则不允许直接提交。

    四、解决冲突(重点)

    在多人开发同一个文件的时候,很多时候会出现,两个程序员的代码在同一处(行)或者不同处(行)不同的情况。这个时候在提交代码的时候就会提示有冲突。但是冲突的根本原因是客户端的版本低于服务端的版本。

    1、冲突的具体形式

    1.1大家修改的代码不在同一处(行)

    此种情况,一般来说没什么毛病,比较好处理,svn一般会帮我们将文件融合到一起。

    起始版本是11号(yasuo、jie、svn服务器的该文件版本都是11号):

    jie先将他的工作目录下的该文件修改了。将一句话删除了:

    修改之后要提交

    jie提交后,jie的本地文件版本和svn服务器端版本都变为了12号版本。

    yasuo开始修改它的工作目录下的代码:

    修改完毕,提交

    yasuo此时遇到文件过时的问题。原因是他的本地文件版本是11号,而jie已经将服务器端的版本变更为12号了。此时需要更新他的本地文件也为12号才能提交。

    然后再次提交:提交成功。

    jie在update一下自己的代码即可。

    1.2大家修改的代码在同一处(行)

    起始文件:

    yasuo先在333333这行修改,然后提交。

    jie在3333的位置也进行修改,然后得先更新,在提交,上面已经说过原因了。

    jie在更新后,出现了下面三个文件:

    这几个文件是辅助文件,帮助我们来解决冲突的。这三个文件都可以用记事本打开查看。

    对比这三个文件,得出一个最终的版本:

    然后进行提交即可。

    小贴士:在实际开发中,有些时候,代码的冲突比较大,这个时候最好是和其他程序员进行沟通,共同解决冲突。

    五、账号和权限

    1、先关闭“匿名”账号

    2、使得设置账号和配置权限的文件生效

    3、设置账号

    在生效的passwd文件中,设置用户名和密码。

    4、给账号设置权限

    4.1给具体用户设置权限

    ① 开启唯一仓库服务  svnserve.exe -d -r d:/svn/app/shop

    [/]

    用户名 = 具体操作权限

    ② 开启多个仓库服务  svnserve.exe -d -r d:/svn/app

    [shop:/]    //或者 [book:/]  [car:/]

    用户名 = 具体操作权限

    权限有两种:读(能update,能从仓库update代码)和写(能提交代码commit)。读用r表示,写用w表示。

    现在,给jie和yasuo权限:

    亚索再次提交:

    这里不要记住用户名和密码的原因是:因为jie和yasuo本来是两个人,也就意味着是两台电脑。而我们是在一台电脑上模拟操作的,yasuo记住用户名和密码,那么jie在提交的时候其实用的也是yasuo的用户名和密码。

    如果不小心记住了用户名和密码怎么办?

    3.2给一个组别设置权限

    有些时候,我们公司在开发一个项目的时候,往往会请一些公司以外的人(外包)来做一些专业性的东西。比如,我们要做一个视频网站。播放器找另一家的公司的人来做,这个时候,就需要给其他公司的人设置权限。

    办法:

    先给这些人设置账号密码

    给这些人分成一个组,并给权限

    给组设置权限的时候,组名前要加“@”符合。

    3.3开启只操作某个目录权限

    还是上面的例子,最好的解决办法是把外部人员的可操作目录单独设置,比如开发播放器的三个人,我们让他们只有操作shipin目录的权限。

    六、设置开机启动svn仓库服务

    添加svn仓库服务语法:

    sc create 服务名 binPath= "可执行文件路径 –r 仓库地址 --service" start= auto

    sc create svnd binPath= "e:/svn/server/bin/svnserve.exe -r e:/svn/app --service" start= auto

    注意语法中的空格

    在电脑的服务中查看

    删除服务的命令:

    sc delete 服务名

    sc delete svnd

    也可以对创建和删除svn服务的命令生成一个批处理文件。

    生成的办法就是将命令保存到一个记事本中,然后讲记事本的后缀改为bat即可。

    七、svn使用细节

    ①、提交、更新代码。

    ②、领导查看每个员工的工作情况。

    领导可以通过show log来查看每个员工的工作情况

    八、真实环境使用svn说明

    解决冲突补充:

    jie开发login.php和register.php

    yasuo开发login.php和index.php

    作者:peng_js

    链接:http://www.jianshu.com/p/dff9c62f1f3f

    來源:简书

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    相关文章

      网友评论

          本文标题:svn安装和使用

          本文链接:https://www.haomeiwen.com/subject/jdwxsxtx.html