第四章所讲的SVN常见问题实际意义很大!mark
1、每天早上上班要update SVN,每天下班要commit SVN。 2、查看是谁动了我的代码,右键 tortoise 后查看 log 日志。 3、文件被别人删除,在空白处右击,show log,可以查看整个库的所有增删改查操作记录,如果单个文件还在,只想查看该文件记录,那就在该文件上查看 log(自从新建一个文件后,对该文件的所有操作都会被服务器仓库记录下来,随时可以可别人商量恢复)。 4、权限清空:TortoiseSVN——Settings——Seved Date——Clear clear all。 5、commit 上面有一块区域是做注释的(推荐常用)。 6、良好冲突: 如果A和B都在修改了代码,B先于A上交,当A去commit的时候,就会提交失败,必须先更新你的本地文件,那么B的代码会和A的代码同时存在(两个人修改的不是一个地方算好的情况了)。 7、较差冲突: 有冲突时提交会产生三个文件,.mine是自己改好之后的代码,rx,ry,x,y两个数字较小者是我改之前的代码,数字较大者,是服务端的代码 1)如果要保留自己的版本,就用mine覆盖原来的代码,再次提交 2)如果认为对方是正确的,就revert一下,这个时候已经拿到了最新的代码(不一定非要这样操作,但是这样方便) 3)如果认为上一个版本是正确的,用版本较小的覆盖(直接删除改后缀名) 经验1:如果Commit Failed!就不要点了ok继续按update了,先把自己的代码复制到一边,再把那个文件revert,再update,再把放在一边的文件重命名复制到相同文件夹下,选中两个冲突的文件,TortoiesSVN->diff,左边是最新的代码,右边的是我的,解决冲突之后两个人最好都update一下。 经验2:与历史记录比对:show log之后,同时选中两个版本(比如现在到了第10版,那么要10/9先比较,看看有没有差异,没有差异,则比较9/8版,如果仍没有差异,以此类推继续比较),Compare revisions。
这节主要是比对
安装两个软件:
1. SVN服务端,可以用VisualSVN Server,在这里可以新增用户
2. SVN客户端,可以用TortoiseSVN
第一次从某一个仓库下载代码时:在任意一个文件夹下右键单击,SVN Checkout:
URL of repository: 服务端仓库路径,本地地址: https://127.0.0.1:443(服务器端安装时的选择的端口)/svn/Test/
Checkout directory:
将远程仓库放在本地的文件夹路径
基本操作:
SVN Commit:在本地仓库有更新时,提交,要写注释
SVN Update:拉远程的仓库
show log:针对文件,右键单击,可以看到提交记录,在提交的记录里,右键单击,可以选择需要revert的版本(在下方的path里面也可以右键单击,将文件保存到本地磁盘)
在svn的根目录也可以show log
冲突
有冲突时提交会产生三个文件,.mine是自己改好之后的代码,rx,ry,x,y两个数字较小者是我改之前的代码,数字较大者,是服务端的代码
1.如果要保留自己的版本,就用mine覆盖原来的代码,再次提交
2.如果认为对方是正确的,就revert一下,这个时候已经拿到了最新的代码(不一定非要这样操作,但是这样方便)
3.如果认为上一个版本是正确的,用版本较小的覆盖(直接删除改后缀名)
经验:如果Commit Failed!就不要点了ok继续按update了,先把自己的代码复制到一边,再把那个文件revert,再update,再把放在一边的文件重命名复制到相同文件夹下,选中两个冲突的文件,TortoiesSVN->diff,左边是最新的代码,右边的是我的,解决冲突之后两个人最好都update一下
与历史记录比对:show log之后,同时选中两个版本(比如现在到了第10版,那么要10/9先比较,看看有没有差异,没有差异,则比较9/8版,如果仍没有差异,以此类推继续比较),Compare revisions
1在官网下载:服务端安装包和客户端安装包
2在电脑a上安装服务端,并创建一个项目仓库和创建2个用户甲和乙
3甲和乙分别在各自电脑安装客户端,并用服务端创建的用户名、密码、连接服务端的url,连接到服务端
3.1此时甲和乙都拥有,将本地创建的文件提交到服务端,以及可以删除服务端文件的权限(不过服务端都会保存操作记录,以供方便追回)
4需要一个人在服务端仓库创建一个项目的初始化版本,然后甲和乙各自更新到本地,各自开发相应的模块;
5整个项目有太多文件,甲和乙每次只修改各自要操作的单个文件(对其他文件并不影响)
6记住,每次修改b文件前,一定先从服务端更新,将最新版本的b文件更新到本地,修改好以后,再提交到服务端
7如果甲想修改a文件,甲先将a文件的最新版(15版)从服务端更新到本地,然后进行修改;
7.1这时乙也将a文件的最新版(15版)从服务端更新到其本地,进行修改,修改之后,将a文件提交到服务端,这时a文件在服务端的记录已经是第16版了,而甲的本地a文件还是第15个版本,此时甲修改好了准备提交到服务端,这是就会冲突,因为服务端已经是16版了;
7.2面对冲突,如果甲和乙在a文件修改的代码不在同一行,当甲选择继续提交,svn会把甲和乙的修改同时合并到a文件,但是如果甲和乙在a文件修改的代码在同一行,则svn会在甲的本地生成四个文件:四个文件个代表什么?看上一节笔记;
7.3一般开发过程中,面对上述冲突,最好的解决办法就是:甲先不提交,先把自己在本地修改好的a文件,备份一份,然后再从服务端更新到a文件的最新版即16版,私下和乙协商,这个文件该怎么写,协商好以后,把最终结果修改到a文件,再提交到服务端即可;
8一旦将某个文件提交到服务端仓库以后,这个文件的所有修改记录都会被服务端记录,客户端showlog就可以看到;
9从b文件创建,以及每一次的修改,都会有一个版本号,每一次版本都会被保存在服务端,如果想恢复到之前的某个版本,直接从showlog查询,恢复就行
10甲和乙各自的本地项目文件丢失以后,不用担心,再从服务端更新下来即可,但是如果服务端所在的电脑的磁盘被格式化了,这个项目将永远彻底被删除
安装两个软件: 1. SVN服务端,可以用VisualSVN Server,在这里可以新增用户 2. SVN客户端,可以用TortoiseSVN 第一次从某一个仓库下载代码时:在任意一个文件夹下右键单击,SVN Checkout: URL of repository: 服务端仓库路径,本地地址: https://127.0.0.1:443(服务器端安装时的选择的端口)/svn/Test/ Checkout directory: 将远程仓库放在本地的文件夹路径 基本操作: SVN Commit:在本地仓库有更新时,提交,要写注释 SVN Update:拉远程的仓库 show log:针对文件,右键单击,可以看到提交记录,在提交的记录里,右键单击,可以选择需要revert的版本(在下方的path里面也可以右键单击,将文件保存到本地磁盘) 在svn的根目录也可以show log 冲突 有冲突时提交会产生三个文件,.mine是自己改好之后的代码,rx,ry,x,y两个数字较小者是我改之前的代码,数字较大者,是服务端的代码 1.如果要保留自己的版本,就用mine覆盖原来的代码,再次提交 2.如果认为对方是正确的,就revert一下,这个时候已经拿到了最新的代码(不一定非要这样操作,但是这样方便) 3.如果认为上一个版本是正确的,用版本较小的覆盖(直接删除改后缀名) 经验:如果Commit Failed!就不要点了ok继续按update了,先把自己的代码复制到一边,再把那个文件revert,再update,再把放在一边的文件重命名复制到相同文件夹下,选中两个冲突的文件,TortoiesSVN->diff,左边是最新的代码,右边的是我的,解决冲突之后两个人最好都update一下 与历史记录比对:show log之后,同时选中两个版本(比如现在到了第10版,那么要10/9先比较,看看有没有差异,没有差异,则比较9/8版,如果仍没有差异,以此类推继续比较),Compare revisions