1. svn默认端口号为 3690
可参考:http://www.runoob.com/svn/svn-create-repo.html
2. svn的概念:repository(源代码库):源代码统一存放的地方。
Chechout(提取):当你手上没有源代码的时候,你需要从repository checkout一份
Commit(提交):当你修改了代码,就需要commit到repository。
Update(更新):当你已经checkout了一份源代码时,update一下就可以和repository上的源代码同步,你手上的代码就会有最新的变更。
3. svn的生命周期:
1) 创建版本库:svnadmincreate /opt/svn/runoob
2) 检出:checkout 从版本库创建一个工作副本
3) 更新:update 用来更新版本库,可以将工作副本与版本库同步
4) 执行变更:当检出之后,我们可以进行add,del的操作,但是所修改的文件不会立即成为版本库的一部分,而是被添加进待变更列表中,通过commit操作后才会成为版本库的一部分。
5) 复查变化:当修改过检出的版本库之后,在commit之前复查一下修改的内容;
Status操作可以列出工作副本中所进行的变动。
6) 修复错误:假设对工作副本做了修改,但又不想要这些修改时,使用revert操作。
revert 操作重置了对工作副本的修改。它可以重置一个或多个文件/目录。当然它也可以重置整个工作副本。在这种情况下,revert 操作将会销毁待变更列表并将工作副本恢复到原始状态。
7) 解决冲突:合并发生冲突时,merge可以自动处理并安全合并东西。resolve可以帮助用户找出冲突并告诉版本库如何处理这些冲突。
8) 提交更改:commit可以将更改从工作副本到版本库。
4. 步骤:
1) 创建一个版本库:svnadmin create /opt/svn/banbenku 然后修改conf下面的authz和passwd与svnserver.conf文件。
2) 启动svn服务:svnserver –d –r /opt/svn/banbenku --listen-port端口号(-r参数可以指定版本库的打开方式) 此方式表示只为一个版本库工作。方式二:也可以指定到版本库的上级目录(成为多库svnserver方式,svnserver –d –r /opt/svn)
3) Svn检出操作:svn checkout svn://192.168.6.190/banbenku--username=admin
4) 查看关于版本库的更多信息:svn info 会展示工作副本所有项目的所有有用信息。
5. Svn服务配置文件,svnserver.conf
[general]
anon-access = none (控制非鉴权用户访问版本库的权限,取值范围为"write"、"read"和"none"。 "none"表示无访问权限。缺省值:read)
auth-access = write ( 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。除非指定绝对路径,否则文件位置为相对conf目录的相对路径)
password-db = /home/svn/passwd
authz-db = /home/svn/authz ( 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。除非指定绝对路径,否则文件位置为相对conf目录的相对路径)
realm = tiku
6. 查看工作副本中的状态:svn status
? readme (状态为?,说明还未加载到版本库中)
A readme (状态为A,说明已经成功添加到版本库中------svn add readme)
存储到版本库中:svn commit –m “SVN”readme
7. Svn版本回退:
(1)svn revert file 未提交,放弃对文件的修改撤销任何目录或者文件的局部更改 (revert命令不紧可以恢复单个文件也可以回复整个目录,加-R参数,如svn revert –R ku)
(2)想恢复一个已经提交的版本:
为了消除旧版本,必须撤销旧版本里的所有更改然后提交一个新版本,此操作叫
reverse merge。
(仓库的当前版本,现在是版本 22,我们要撤销回之前的版本,比如版本 21)
svn merge –r 22:21 file
8. Svn查看历史信息:
1)svn log: 用来展示svn 的版本作者、日期、路径等等。
2)svn diff: 用来显示特定修改的行级详细信息,比较。
3)svn cat: 取得在特定版本的某文件显示在当前屏幕。
4)svn list: 显示一个目录或某一版本存在的文件。
查看特定的两个版本之间的信息:svn log –r 6:8
只想查看某一个文件的版本修改信息:svn log ku/file
得到目录的信息都要加 -v
显示限定N条记录的目录信息:svn log -1 5 –v
9. Svn diff:查看历史修改的详情
直接使用svn diff:会比较工作文件与缓存在..svn的”原始”拷贝
比较工作区与版本库:svn diff –r 3 readme.txt
比较版本库与版本库:svn diff –r 2:3 readme.txt
10. 只检查一个过去版本,不查看他们区别:svn cat
svn cat –r 版本号 readme.txt 显示在该版本号下的该文件内容
11. 不下载文件到本地目录的情况下查看目录文件:svn list
如:svn list http://192.168.0.1/ku
12. Svn分支:
Svn分支用途:(svn下有一个trunk版,主干)客户需求有变,项目改动较大,觉得组1继续完成原来进行一半的工作,组2进行新开发需求,那么可以给组2建立一个新的分支,其实就是主干线的一个copy版,且相互独立,最后合并就ok。
1) 创建一个分支:
root@runoob:~/svn/runoob01# ls
branches tags trunk
root@runoob:~/svn/runoob01# svn copy trunk/ branches/my_branch
A branches/my_branch
2)提交新增分支到版本库:svn commit –m “add my_branch”
接着就可以在my_branch分支进行开发,切换分支并创建index.html文件
root@runoob:~/svn/runoob01# cd branches/my_branch/
root@runoob:~/svn/runoob01/branches/my_branch# ls
HelloWorld.html index.html readme
3)将新增的文件加入版本控制,并提交版本库
svn add index.htm
svn commit -m "add index.html"
4)切换trunk,执行svn update,合并my_branch到trunk中。
5)将合并好的trunk提交到版本库:svn commit -m "addindex.html"
13. svn标签(tag):tag选项,给版本库一个更有意义的名字,Tags主要用于开发的里程碑,开发到一定阶段可以单独一个版本作为发布等,往往代表一个固定的完整的版本。
1)在本地工作副区创建一个Tag:svncopy trunk/ tags/v1.0
上面的代码成功完成,新的目录将被创建在tags目录下。
查看状态,提交tag内容:svn commit –m “tags v1.0”
14. 用svn的客户端进行拉取分支的时候:
(1) 先创建一个文件----然后进去checkout主分支项目-----右键分支创建一个新的分支------在新建个文件夹,把分支checkout到新文件夹,当分支的代码写好之后,要合并到主分支----右键主分支,选择合并,点合并两个不同的数----起始填主分支url---结束填分支url----合并。
(2) 主分支没变,分支代码改动,从分支合并到主分支,起始填主分支url,结束填分支url。
主分支代码改变,分支没动,从主分支合并到分支时,起始填分支url,结束填主分支url。