`
lijunaccp
  • 浏览: 160531 次
  • 性别: 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学习笔记-windows下安装svn加apache的安装流程

    **标题解析:** "svn学习笔记-windows下安装svn加apache的安装流程" 这个标题告诉我们,本文将重点讲解如何在Windows操作系统上安装Subversion(简称svn)以及与Apache服务器的集成配置过程。Subversion是一款流行...

    我的SVN学习笔记(原创)

    **我的SVN学习笔记(原创)** 在信息技术领域,版本控制系统是不可或缺的工具之一,它帮助开发者跟踪和管理代码的变化,使得多人协作变得有序而高效。Subversion(简称SVN)就是这样的一个开源版本控制系统,它允许...

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

    - 学习笔记通常包含个人理解和实践总结,可能涵盖一些实用技巧和常见问题解决方案。 通过以上内容,你将能够掌握SVN的基本操作和使用策略,更好地融入团队开发环境中。在实际工作中,结合具体的项目需求和团队协作...

    SVN 学习笔记

    【SVN 学习笔记】 SVN,全称Subversion,是一种版本控制系统,用于管理和跟踪文件及目录在不同时间的变化,使得多人协作开发时能够有效管理代码版本,防止代码冲突,回溯历史版本,以及方便地进行代码审查。这篇...

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

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

    SVN笔记学习

    以下是对"SVN笔记学习"内容的详细解读: 1. **Linux下SVN的搭建** - **安装SVN**: 在Linux系统中,通常通过包管理器来安装SVN,如在Ubuntu或Debian上使用`apt-get install subversion`,在CentOS或Fedora上使用`...

    svn笔记资料

    通过本文的学习,我们不仅深入了解了SVN的基本概念和原理,还掌握了SVN的实际应用技巧。无论是对于个人开发者还是大型软件团队,熟练运用SVN都是非常必要的。希望本文能够帮助读者更好地理解SVN的核心价值,并将其...

    svn搭建笔记.zip

    总之,通过"svn搭建笔记.zip"这份资源,你可以系统地学习如何从零开始搭建SVN服务器,逐步掌握版本控制的核心概念和操作技巧,这对于任何软件开发者而言都是一项基础且必要的技能。记得在实践中多加练习,理论结合...

    svn-笔记下载

    SVN的官方文档和各种社区论坛提供了丰富的学习资源,如Stack Overflow、GitHub等,可以帮助开发者解决使用过程中遇到的问题。 总之,SVN作为一款强大的开发工具,通过版本控制和协同工作,极大地提升了团队开发...

    Maven+Svn安装笔记.rar

    这份"Maven+Svn安装笔记"的压缩包文件包含了关于这两个工具的详细安装指南和教程。 **Maven** 是一个Java项目管理和综合工具,它通过提供一个标准的项目对象模型(Project Object Model, POM)来管理项目的构建、...

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

    在“svn技术总结本人自己学习笔记.zip”这个压缩包中,我们可以期待找到关于SVN的基本概念、安装配置、日常操作、冲突解决以及高级特性的学习记录。 首先,SVN的核心概念包括仓库(Repository)、工作副本(Working...

    我的cvs2svn笔记

    《我的cvs2svn笔记》是一份详细的指南,旨在帮助用户在Windows环境下将CVS(Concurrent Versions System)版本...通过学习这份笔记,用户可以更顺利地完成版本库的升级,享受到SVN带来的更高效、更安全的版本控制体验。

    版本控制SVN和GIT笔记

    集中式版本控制系统以CVS和SVN为代表,它们使用一个单一集中管理的服务器来保存所有文件的修订版本,所有开发者从该服务器下载最新版本,进行开发并提交更改。CVS是最早的开源版本控制系统之一,它可以跨平台使用,...

Global site tag (gtag.js) - Google Analytics