`
lijunaccp
  • 浏览: 153556 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

svn学习笔记

    博客分类:
  • SVN
阅读更多
一.SVN基本操作
1. 下载svn
http://subversion.tigris.org/files/documents/15/38369/svn-1.4.4-setup.exe
2.安装完成后,会把安装目录中的bin目录加入PATH中
3. 首先创建个仓库
   Svnadmin create d:\svn\repository(此目录必须存在)
4. 启动服务器
  Svnserve –d –r d:\svn\repository
  -d:作为后台模式
  -r:指定服务器的仓库路径
5. 可以进入一个需上传的目录,用如下命令上传
  Svn import svn://localhost
  注:会提示上传不成功,需要在建个系统变量名:SVN_EDITOR,值:notepad(重新打开一个命令行就OK了,关闭文本窗口,选择c,这时提示认证失败,需要改下d:\svn\repository\conf\svnserve.conf,找anon-access=read注释去掉,并在下面加入anon-access=write,重启serve,重复上面操作就可以上传成功,但在SVN服务器仓库是找不到的,这由SVN服务进行处理管理,不用关心);或者后面跟-F c:\log.txt(必须存在)
6. 在服务端创建一个虚拟目录project2,可以上传文件到此目录下
Svn mkdir svn://localhost/project2
7. 创建一个myclient,并进入此目录,作为检出项目存放目录
Svn checkout svn://localhost/project2
8. 提交文件,进入project2的text2.txt目录下
Svn commit text2.txt –F c:\log.txt
9. 在当前目录下执行update操作,是即读操作
Svn update text2.txt
二.SVN高级操作
1. 配置SVN用户名和密码
进入d:\svn\repository\conf\svnserve.conf
注释掉:anon-access=read和anon-access=write
           去掉注释:password-db=passwd
打开同目录下的passwd
增加两行(username=password):
zs=zs123
ls=ls123
注:在一次登录后,SVN会将登录信息存放在:C:\Documents and Settings\当前系统用户名\Application Data\Subversion,如果要删除该信息,只需要删除该目录的auth文件夹即可。
2. 下载WIN下的SVN图形化操作工具
http://tortoisesvn.tigris.org/
安装完成后,在目录上右键会出现TortoiseSVN->import可以上传目录(前提是必须开启SVN服务)
3. 下载目录,右键目录空白处,选择SVN Checkout,按提示就可以下载服务器目录下的文件到本地目录下。
4.可以对读设置权限,打开SVN仓库的conf\svnserve.conf文件,增加一行
anon-access=none
表示匿名用户没有读写权限,SVN默认将匿名用户访问权限设为读,将登录用户设为写。
重启服务,再下载就会提示输入用户名和密码
5.TortoiseSVN的使用很方便,相当于给系统中所有文件夹加了层壳,对SVN命令也进行了封装。
三.SVN整合Apache(注意整合两者的版本匹配问题)
   基本操作
1. 下载Apache的Http Server
    http://archive.apache.org/dist/httpd/binaries/win32/
选择HTTP Server->下载2.0X,因为之前下载的SVN是对应到Apache2.0版本的。
(下载版本:apache_2.0.59-win32-x86-openssl-0.9.7j.msi)
2. 安装后,桌面右下角就会出现图标,表示已运行,或看下services.msc
3. 进入Subversion的bin目录下,拷贝mod_authz_svn.so和mod_dav_svn.so到Apache2安装目录下的modules目录中
4. 打开Apache的conf\httpd.conf文件.去掉145和146行注释,这两行内容如下:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
转到173行,增加如下两行内容(表示把之前拷贝的模块导入到Apache中):
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
转到文件最后,增加如下内容(作用是将svn服务器目录映射到访问Apache的虚拟路径svn,如同配置Tomcat时,增加一个Context一样,即访问/svn地址时,Apache会自动将该请求转到D:\svn\repository目录下):
<Location /svn>
DAV svn
SVNPath D:/svn/repository
</Location>
5.重启Apache,打开桌面右下角图标,会在窗口正下方提示已经整合了SVN
6. 通过http://localhost/svn可以查看到SVN仓库中的文件,虽然之前在SVN中设置了权限,但这里没有生效,这是因为两者采用不同的方式来控制权限。
7.设置Apache的访问权限
打开Apache下的conf\httpd.conf文件,转到文件最后,在</Location>之前加上如下内容:
AuthType Basic  //表示最常的验证方式
AuthName "Subversion Repository"    //表示出现登录对话框时,窗口的标题名
AuthUserFile D:/passwd/passwords    //表示用户登录信息的存放文件
Require valid-user                  //表示只有认证的用户才能访问
8. 创建passwords文件
将Apache的bin目录路径添加PATH中。
在D盘创建一个passwd文件夹
打开命令行,输入:
htpasswd –c D:/passwd/passwords hello
提示输入用户名hello的密码(用MD5加密),输入密码world
再创建个用户google,密码world,命令行输入如下:
htpasswd  D:/passwd/passwords hello
会发现相同密码加密不一样
也可以通过增加参数-p来以明文显示
9. 重启Apache,再通过http://localhost/svn就需要用户名和密码了
10. 这时也可以用http://localhost/svn通过TortoiseSVN进行浏览和下载等操作
高级操作
有时我们在SVN服务器中有很多项目,不同的项目存放在不同的目录下,如果用SVNPath D:/svn/repository来指定的话会非常不方便,因为这种方式只能指定一个目录,如果要包含所有项目,那就只能指定仓库的根目录了,所以就要进行如下操作:
1.需要修改httpd.conf,找到Location部分把SVNPath改为SVNParentPath,其他不变。
2.重启Apache,这时再通过http://localhost/svn就访问不到项目内容了。
为了统一管理项目,整合步骤如下:
1. 在D:\svn\repository下新建一个仓库,首先建立一个目录:subsvn
2. 在subsvn下建一个仓库:svnadmin  create  D:\svn\repository\subsvn
3. 随便进入一个工程的目录,import到http://localhost/svn/subsvn上
4. 这时通过http://localhost/svn/subsvn输入用户名密码就可以看到项目,如果输入http://localhost/svn则无权访问,因为默认只能访问其中的子仓库,当然可以使用PHP等语言改变成我们可以访问
5. 增加项目的只读不能写权限
将httpd.conf中的Require valid-user改为如下:
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
这表示对于匿名用户可以读,但是只对认证用户开放写操作
重启Apache,这时http://localhost/svn/subsvn时不需验证就可以看到项目内容了
6. 这时有了新需求,假设SVN仓库中有很多的子仓库,每个子仓库中又有很多目录和文件,那么我需要配置以便使某些用户可以访问某些仓库,即读写,而另一些用用户只能读不能写,不过这两种类型的用户都需要输入认证才能进行操作。
  6.1 这时需要创建另一个项目到SVN仓库中,再创建一个仓库
6.2 开启svn服务
  6.3 新建仓库名为helloworld
     svnadmin create D:\svn\repository\helloworld
  6.4 import一个项目到helloworld中
  6.5 打开httpd.conf定位到Location部分,更改为如下:
<Location /svn>
DAV svn
SVNParentPath D:/svn/repository
AuthzSVNAccessFile D:/passwd/policy
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile D:/passwd/passwords
Require valid-user
</Location>
注:以上实际只增加了AuthzSVNAccessFile D:/passwd/policy该配置表示对SVN访问策略文件
6.6 增加policy文件,打开写入如下内容:
[helloworld:/]

hello=rw

google=r

microsoft=
注:增加配置表示,对于helloworld路径,hello有读写权限,google有读,而microsoft不能读写
6.7 重启Apache,删除auth目录。
6.8 公司中有不同的项目组,每个组对应一个仓库,对每个组中的成员指定权限很繁琐,可以对SVN组指定权限
  将policy文件修改为如下:
  [groups]
developers=hello,google
testers=microsoft

[helloworld:/]
@developers=rw
@testers=

[subsvn:/]
@developers=rw
@testers=rw
注:定义了两个组developers和testers分别对组进行指定权限
6.9 重启Apache,IE中输入http://localhost/svn/helloworld
   7.SVN仓库的备份
     有两种方式:
一:直接拷贝仓库到其他地方,优点是简单,缺点是当拷贝过程中有用户对SVN进行操作则会出现不一致问题,所以这种方式不提倡。
二:采用SVN提供的命令,这也是主要方式,在命令行输入:
Svnadmin hotcopy D:\svn\repository E:\backup(可以指是网络上其他的计算机)

四.SVN整合Eclipse
  1.下载Eclipse的SVN插件
http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240&expandFolder=2240&folderID=0
下载site-1.0.6.zip
   2. 采用link方式进行安装
     2.1.把插件解压,保持的目录结构是
XXX(任何名字subclipse)
  |
  |-eclipse(必须是eclipse)
    |
  |-解压出来的东西
2.2改eclipse目录的links(注MyEclipse6.5之后,要放到dropins目录下)
去eclipse/links下
新建一个文件XXX.XX 为了方便起见起subclipse.link
2.3 添加内容(注MyEclipse6.5之后,path=E:\\subclipse\\eclipse)
path=E:\\subclipse
   3. 创建一个工程,包和类Test
   4. 将视图转到Subversion中
   5. 在左边新建一个远程仓库位置(找到Add Repository)
   6. 在URL中输入http://localhost/svn/helloworld,输入用户名和密码成功的建立连接
   7.回到JAVA视图,将我们的项目import到服务器上去
     右键SVN项目,选择Team->Share Project->SVN->Use existing repository location->
     Next->Use project name as folder name->Next->Finish 同步完成。
   8. 模拟另一用户,得开一个eclipse,重复4-6操作。
   9.右键SVN项目,checkout,执行成功,转到JAVA视图,就可看到SVN项目。
   10. 将第一个空间称为空间1,第二个空间称为空间2
   11.回到空间1,对Test类进行一些修改
      System.out.println(“welcome”);
   12. 右键该文件,Team->commit
13. 回到空间2,在更新之前,可以右键Test类,选择Compare->Latest from repository,查看到更新前和更新后的比较内容。
14. 右键Test类,Team->update,这时可以看到Test类已更新。
15.这时同时修改空间1和空间2,Test类的不同地方。
在空间1修改如下
System.out.println("hello world");
Date date=new Date();
System.out.println(date);
在空间2修改如下
System.out.println("hello world");
try{
URL url=new URL("http://www.google.com");
System.out.println(url.getHost());
}catch(MalformedURLException e){
e.printStackTrace();
}
16. 现在对空间1中的Test类进行提交
17. 再对空间2中的Test类进行提交,这时报错,提示必须先进行update操作。
18.执行update,会出现让我们选择合并的内容,.r5表示服务器上的文件修改,.mine表示自已的修改,必须手动合并。
19.手动合并后,再update,还是提示错误,原因同前,这时发现JAVA视图中,多出三个文件,分别是当前客户端最新文件,服务器上最新文件及客户端之前的文件,当我们修改完冲突后需要删除这些文件,使用命令Team->Mark resolve,再次提交,就OK了。
20.这时对空间1的Test类进行锁定(lock)操作
    右键Test类,选择Team->lock,其他用户将无法对该文件的修改提交到SVN服务器。
21.这时对空间2的Test类修改提交失败,原因被锁定。只有空间1解锁后,空间2才可以提交。
22.查看项目中某个文件的所有版本历史,右键Test类,选择Team->Show in History Resource,双击某个版本,可以查看到此版本修改的内容。
23.如果修改Test类后,想恢复到之前的状态,可以Team->Revert
24.如果想生成一个干净的项目(没.svn文件),Team->Export
25.高效的分支与标签功能
  标签的作用主要是为了给特定的历史版本取一个友好的名字,以方便使用和维护
  分支则是用于创建多个并行的工作线,比如,当我们的一个项目需要为某个用户提供一些特殊的功能时,那么就可以为这创建一个分支,这样能够保证大部分代码的共用,也使得整个项目变得容易维护和管理
26.创建标签和分支都是用Team->Branch/tag,把URL改为http://localhost/svn/helloworld/svn2
   如果计算机上安装了杀毒软件的话,可能会报错,关掉,创建成功后,再打开杀毒软件。
27.通过IE访问http://localhost/svn/helloworld 会看到SVN2,以后可以像使用其他项目一样使用该分支
28.我们也可以通过配置方式来创建分支和标签。右键项目名,Team->Configure Branch/Tag(要右击仓库中的项目),然后提交,右键项目,Team->Switch,在这时可以选择你要转到的分支和标签。点击浏览,转到刚才创建的分支。

五.SVN整合NetBeans
1.下载NetBeans
http://www.netbeans.org/
操作与eclipse类似
分享到:
评论

相关推荐

    SVN中文教程 SVN简明教程 SVN学习笔记

    经典SVN中文教程 珍藏SVN简明教程 最给力的SVN学习笔记

    SVN学习笔记

    SVN学习笔记 SVN学习笔记 SVN学习笔记

    传智播客2015PHP34期SVN学习笔记

    SVN全名Subversion,即版本控制系统。SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion 管理着随时间改变的数据。这些数据放置在一个中央资料档案库 ...

    我的SVN学习笔记(原创)

    自觉得对初学者来说还比较详尽:) 希望能对大家有所帮助 更详尽的文件到这里下载 http://www.zippo365.com/others/download.htm

    svn学习笔记-windows下安装svn加apache的安装流程

    NULL 博文链接:https://fruitking.iteye.com/blog/538209

    SVN 学习笔记

    NULL 博文链接:https://iintothewind.iteye.com/blog/505832

    SVN笔记学习

    本笔记主要记录LINUX下SVN的搭建、ecilpse集成以及客户端工具使用,方便个人学习SVN使用

    SVN安装与配置(个人学习笔记).

    SVN安装与配置(个人学习笔记).SVN安装与配置(个人学习笔记).

    svn技术总结本人自己学习笔记.zip

    svn技术总结本人自己学习笔记.zip

    SVN学习知识.pdf

    Svn技术的基础详细学习笔记,总结了Svn技术的各个知识点,可以用来复习以及对基础知识的巩固,对新人的学习很有帮助。

    SVN初学者笔记

    里面讲解了svn的安装,svn与Eclipse的整合,还有怎样学习svn工具,可以使初学者更好更快地学习svn。

    docker docker-compose学习笔记

    docker学习笔记,docker安装及使用,各个命令说明以及使用事例, docker-compose自动配置服务,完成项目发布部署war项目,搭建docker私服 redis svn mysql等服务,大部分来自网络后整理

    尚硅谷SVN课件及安装包

    想系统学习SVN用法的朋友可以下载,内容比较详细,安装包也全,可以现学现操作

    Linux学习笔记【博文整理系列】

    学习linux的笔记,发到博文了,鉴于文档方便保存和查阅,发出来,免费的哈 博文来自http://blog.csdn.net/wklken,共12篇,类似手册,可快速练习和查阅,容易上手 文档列表: Linux笔记——vim常用操作及扩展补充...

    Git&GitHub;学习笔记

    这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文 件系统快照的方式。  权限控制  对团队中参与开发的人员进行权限控制。  对团队外开发者贡献的代码进行审核——Git 独有。  历史记录  查看修改人...

Global site tag (gtag.js) - Google Analytics