前言:没有版本控制
*代码管理混乱
*备份多个版本,占用磁盘空间大
*解决代码冲突困难
*容易引发BUG
*难于追溯问题代码的修改人和修改时间
*难于恢复至以前正确版本
*无法进行权限控制
*项目版本发布困难
一、基本操作:
*确认安装是否成功:svnadmin --version |
* 创建svn数据仓库:svnadmin create D:\repository\SVN\testsvn |
* 启动svn服务:svnserve -d -r D:\repository\SVN\testsvn [单仓库启动]-d 后台执行 -r 版本库的根目录
|
* 验证svn启动是否成功:使用netstat -an 查看3690端口是否被占用 |
* 客户端检出代码:svn checkout svn://ip:port/repName . 例子:[单仓库取出]E:\client\zhangsan>svn checkout svn://192.168.1.36 . |
* 将本地文件纳入版本控制:svn add fileName |
* 提交文件到svn服务器:svn commit -m "message" fileName 1、将svnserve.conf中的# anon-access = read改为anon-access = write 2、 3、Lisi进行checkout并更新后 |
* 客户端更新文件到本地:svn update [fileName] |
* 恢复文件:svn revert fileName 注意:只能恢复未提交的操作 |
* 删除文件:svn delete fileName |
* 将svn服务注册为windows系统服务:sc create SVN-Service binpath= "D:\Program Files\Subversion\bin\svnserve.exe --service -r D:\repository\SVN" displayname= "SVN-Service" start= auto depend= Tcpip |
1、数据仓库:
2、客户端
3、svn服务器启动
*cmd命令行启动
svnserve -d –r 文档仓库路径
-d 后台执行
-r 版本库的根目录
*Windows服务自动启动
在D:\Program Files\Subversion\bin(SVN服务器端安装目录)文件夹下新建svnSetup.bat,内容为:
sc
create SVN-Service binpath= "D:\Program Files\Subversion\bin\svnserve.exe
--service -r E:\repository\SVN" depend= Tcpip start= auto
sc start
svnserve
pause
其中: binpath为SVN服务器端目录; d:\MySVN为SVN库目录
运行后(或以管理员身份运行),会新创建一个服务名为:svnserver,可通过运行services.msc查看,将其设置自动运行(有时候需要重启电脑)
sc create SVN-Service binpath= "D:\Program Files\Subversion\bin\svnserve.exe --service -r E:\repository\SVN" displayname= "SVN-Service" start= auto depend= Tcpip
4、svn常用命令
svn checkout -从版本库取出一个工作拷贝
svn commit -将改动的文件提交到版本库
svn update -更新你的工作拷贝
svn add-向版本库中添加新文件
svn delete-从版本库中删除文件
svn revert-取消所有的本地编辑
svn info-显示本地或远程条目的信息
svn list-列出版本库目录的条目
svn status-查看当前工作区状态
svn help-获取帮助信息
二、界面操作
Subversion目录规范
/trunk 存放开发的“主线”
/branches 存放支线副本(不确定的副线(功能))
/tags 存放标签副本(记录不同的版本(状态))
1、Checkout:注意:如果输入的是IP地址要在插网线和不能禁用网卡,本地IP地址或localhost则不用
2、Add
3、Commit
4、给用户配置权限和密码
*配置svn你serve.conf文件
*配置password文件
*配置authz文件
5、双方同时提交,或产生冲突
出现如下文件和图标
*解决方法:Edit conflicts编辑冲突
最后点击Resolved即可
*避免方法,need-lock机制
need-lock为true时,一个时间只能有一个人操作该文件
注意:在修改一个文件之前,先要确定该文件时最新,否则会出错
释放锁的两种方法:*提交,失去锁
*主动释放锁
*文件加锁
*获取锁
6、通过来查看svn服务器上的内容
7、导入文件到svn中
8、恢复到指定版本或时间点:message是关键信息
Show longing
9、通过导出功能,导出纯净的项目(不带.svn文件)
10、权限控制
需求:zhangsan对oa项目trunk有读写权限,lisi只有读的权限
lisi对oa项目branches有读写权限,zhangsan只有读的权限
配置zuthz文件
11、注意:.svn这个隐藏目录记录着两项关键的信息: 工作文件的基准版本和一个本地副本最后更新的时间戳。
千万不要手工修改或删除这个 .svn隐藏目录和里面的文件!!! 否则将会导致你本地的工作拷贝 (静态视图)
被破坏,无法再进行操作。
三、SVN与Eclipse整合
下载SVN插件(http://subclipse.tigris.org)
我们使用版本eclipse_svn_site-1.6.5.zip
进入myeclipse、eclipse 安装目录中dropins目录并创建一个svn的文本文件(文件名任意)。
解压到上面文件夹即可文件夹中
*打开myeclipse、eclipse点击找到
*新建SVN资源库
*检出
*发布功能
*常见操作
四、SVN与Apache整合
1、下载Apache(http://httpd.apache.org/download.cgi)
安装apache_2.2.14-win32-x86-no_ssl.msi
2、打开Apache安装目录下Apache2.2\conf\httpd.conf 配置文件:
将下列2行前方的#移除(第83 行):
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
并同时在上面两行下面增加以下两行(一定放在这个位置)
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
找到Subversion 安装目录下的以下两个文件
bin/mod_authz_svn.so
bin/mod_dav_svn.so
复制到Apache 安装目录下modules 目录中。
3、使用Apache 安装目录下的bin/htpasswd.exe 可执行文件来生成授权文件,第一次生成使用-cb 参数:
htpasswd -cb [filename] [username] [password]
例如:htpasswd -cb passwd.apache 用户名 密码 (其中用户名需为svn中添加的用户名)
将生成的passwd.apache 文件移动到SVN版本库中\conf 目录下
4、apache 安装目录下的conf\httpd.conf 文件的最后面加入:
#配置项目虚拟目录#
<location /svn/itcast>
#引用远程访问模块
DAV svn
#项目版本库路径#
SVNPath F:/software/repository/svn/itcast
#授权文件#
AuthzSVNAccessFile F:/software/repository/svn/itcast/conf/authz
#所有用户都需要身份验证#
Satisfy Any
Require valid-user
#验证方式#
AuthType Basic
#项目的名称#
AuthName "itcast"
#用户文件#
AuthUserFile F:/software/repository/svn/itcast/conf/passwd.apache
</location>
5、访问方式:
“http://localhost/svn/itcast”
*可以通过Repository Browser访问
*可以通过浏览器访问
后记:使用SVN我们应该?
经常更新:降低冲突的可能性
提交前需在本机测试通过:降低将问题代码传到版本库
提交时一定写备注:方便其他员工查看和自己以后回顾
对于不需要提交的文件不要提交到版本库