svn安装使用subversion
linux
centos6版本;用7 版本的话命令不兼容;
SVN 笔记
- 从个人开发到团队协作
版本控制工具的功能
- 协同修改
- 多人并行不悖的修改服务器端的同一个文件。
- 数据备份
- 如果本地文件发生丢失可以服务器端文件进行恢复。
- 增量式的版本管理
- 服务器端保存每一个版本信息时只保存有修改的局部内容,节约服务器端资源。
- 权限控制
- 对团队中参与开发的人员进行权限控制。
- 历史记录
- 查看修改人、修改时间、修改内容、日志信息。
- 将本地文件恢复到某一个历史状态。
- 版本控制简介
- 版本控制
工程设计领域中使用版本控制管理工程蓝图的设计过程。在 IT 开发过程中也可以使用版本控制思想管理代码的版本迭代。
- 版本控制工具
思想:版本控制
实现:版本控制工具
集中式版本控制工具:
CVS、SVN、VSS…… 分布式版本控制工具:
Git
- SVN 的工作机制
C/S 结构
- 基本操作
- 检出(Checkout)
- 把服务器端版本库内容完整下载到本地。
- 检出(Checkout)
- 在整个开发过程中只做一次。
- 更新(Update)
- 把服务器端相对于本地的新的修改下载到本地。
- 提交(Commit)
- 把本地修改上传到服务器。
- 服务器端环境搭建步骤
- 安装服务器端程序
yum install -y subversion
- 创建并配置版本库
- 创建版本库目录
mkdir -p /var/svn/repository
cd /var/svn/repository/
- 在版本库目录下创建具体项目目录
mkdir pro_oa
- 创建 SVN 版本库
svnadmin create /var/svn/repository/pro_oa
- 版本库内容
- 配置 SVN 对应的服务
思路
- SVN 服务
- 名称:svnserve
- 默认情况下不是开机自动启动
- chkconfig|grep svn
[root@rich repository]# chkconfig|grep svn
svnserve 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
[root@rich repository]# chkconfig svnserve on #开机自启动命令
[root@rich repository]# chkconfig|grep svn
svnserve 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
开机自启动:
chkconfig svnserve on
chkconfig|grep svn
- 对应可执行脚本文件路径
cd /etc/rc.d/init.d/
/etc/rc.d/init.d/svnserve
修改: svnserve
copy svnserve svnserve.b
注意备份!
- SVN 服务具体配置
原版 |
args="--daemon --pid-file=${pidfile} $OPTIONS" |
修改版 |
args="--daemon --root 版本库根目录 --listen-port 指定端口号 --pid-file=${pidfile} $OPTIONS" |
args="--daemon --root /var/svn/repository --listen-port 2255 --pid-file=${pidfile} $OPTIONS" |
使用默认端口号的配置方式;
注意:我用指定端口后无法访问服务器,svn拒绝;建议用默认端口;
3690端口
args="--daemon --root /var/svn/repository --pid-file=${pidfile} $OPTIONS"
- 启动 SVN 服务
[root@rich init.d]# service svnserve start
正在启动 svnserve:[确定]
[root@rich init.d]# service svnserve status svnserve (pid 3443) 正 在 运 行 ... [root@rich init.d]# netstat -anp|grep :2255
tcp 0 0 0.0.0.0:2255 0.0.0.0:* LISTEN 3443/svnserve[root@rich init.d]# ps -ef|grep svnserve|grep -v grep
root 3443 1 0 11:41 ? 00:00:00 /usr/bin/svnserve --daemon --root
/var/svn/repository --listen-port 2255 --pid-file=/var/run/svnserve.pid [root@rich init.d]# cat /var/run/svnserve.pid
3443
- 命令行客户端
- 创建两个工作区目录模拟两个开发人员
mkdir -p /root/workspace/harry mkdir -p /root/workspace/sally
- 检出
- 作用:完整下载版本库中的全部内容。
- 命令:
- svn checkout svn://192.168.70.140/pro_oa ./
- 附加效果
- 在指定目录下创建.svn 目录
- 保存本地目录和文件状态信息,用来和 SVN 服务器进行交互
- 工作副本
- .svn 所在的目录
- 版本控制相关操作都需要在工作副本目录下执行。例如:提交、更新等等 这样的操作。
- 为了保证工作副本能够正常和服务器进行交互,请不要删除或修改.svn 目录中的内容。
- 添加
- SVN 要求提交一个新建的文件前先把这个文件添加到版本控制体系中。
- svn add 文件名
- 提交
- 要求 1:附加日志信息
- 日志信息相当于写 Java 代码时的注释,用来标记本次操作所做的修改。
- svn commit -m "xxx" [文件名]
- 要求 2:必须具备相应的权限
- 使用文本编辑器打开版本库根目录/conf/svnserve.conf 文件
- 要求 1:附加日志信息
把匿名访问配置项的注释打开。注意:行的开头不能有空格
[root@rich harry]# svn commit hello.txt
svn: 提交失败(细节如下):
svn: “/root/workspace/harry/hello.txt” 尚未纳入版本控制
[root@rich harry]# svn add hello.txt A hello.txt
[root@rich harry]# svn commit hello.txt
svn: 提 交 失 败 ( 细 节 如 下 ): svn: 无法使用外部编辑器获得日志信息;考虑设置环境变量 $SVN_EDITOR,或者使用
--message (-m) 或 --file (-F) 选项
svn: 没有设置 SVN_EDITOR,VISUAL 或 EDITOR 环境变量,运行时的配置参数中也没有“editor-cmd” 选项
[root@rich harry]# svn commit -m "My first commit" hello.txt
svn: 提交失败(细节如下):
svn: 认证失败
[root@rich harry]# svn commit -m "My first commit" hello.txt
增加 hello.txt
传输文件数据.
提交后的版本为 1。
- 查看服务器端文件内容
[root@rich harry]# svn list svn://192.168.70.140/pro_oa good.log
hello.txt
- 更新操作
- 作用:把服务器端文件所产生的所有修改下载到本地
- 命令:svn update [文件名]
- 冲突
- 过时的文件
- 概念:在一个相对服务器端版本来说是旧版本的基础上进行了修改的文件。
- 要求:所有过时的文件都必须先执行更新操作,更新后在最新版基础上修改的 文件才允许提交。
- 过时的文件
- 冲突的产生
- 条件 1:本地当前编辑的文件已经过时。
- 条件 2:从服务器端更新下来的修改和本地的修改在“同文件同位置”不一致。
- 冲突的表现
文件内
- 目录内
xxx.mine 文件:发生冲突时本地文件内容
xxx.r[小版本号]文件:发生冲突前文件内容
- 冲突的手动解决
- 第一步:删除冲突发生时产生的三个多余文件
- 第二步:删除冲突文件内多余的符号
- 第三步:把文件编辑到满意的状态
- 第四步:提交
- 冲突的半自动解决
设置 SVN_EDITOR 环境变量
vim /etc/profile
-------------------------------------------
SVN_EDITOR=/usr/bin/vim export SVN_EDITOR
-------------------------------------------
source /etc/profile echo $SVN_EDITOR
- 解决的过程
使用 e 选项进入文件内容编辑界面
- 进入 vim 编辑器编辑文件内容
- 编辑完成后使用 r 选项标记为已解决
- 减少冲突的发生
- 尽可能在修改文件前先进行更新操作,尽量在最新版基础上修改文件内容。
- 尽量减少多人修改同一个文件的可能性。
- 加强团队成员之间的沟通。
- Eclipse 的 SVN 插件
- 简介
- Subversive
- 简介
Eclipse 团队开发的 SVN 插件。
- Subclipse
Apache 的 SVN 团队开发的 Eclipse 插件。
- Subversive 的安装
- 安装前
Eclipse→Window→Preferences→Team
- 用户家目录下没有 Subversion 目录
- 安装过程
- 打开 Eclipse 应用市场
搜索 Subversive
- 确认安装项目
点 yes 即可
- 同意协议,点 Finish
安装过程
- 确认重启
- SVN Connector 安装
- Get Connectors
- 选择要安装的 Connector
- 下一步、下一步……
同意协议,Finish
- 点击 Install anyway
确认重启
- 创建资源库位置
- 目的:让本地 Eclipse SVN 插件知道 SVN 服务器的位置
- 操作步骤
第一步:切换透视图
- 第二步:创建资源库位置
输入 SVN 服务器的 URL 地址
- 效果
- Eclipse 工程中忽略文件
Eclipse 特定文件
- 忽略特定文件的原因
- 在服务器上最终运行工程完全没有关系
- 开发团队中,并不是所有参与开发的成员都使用相同的 IDE,所以代码文件之外的 IDE 特定文件有可能有区别。如果这些文件也都上传到 SVN 服务器,那么很可能产生冲突。不同 IDE 之间可以基于 Maven 的标准目录结构识别工程。
- 配置全局范围忽略文件的操作方式
- 配置文件位置
~\AppData\Roaming\Subversion\config
例如:C:\Users\Lenovo\AppData\Roaming\Subversion\config
- 要修改的配置项
把 global-ignores 的注释打开
global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo pycache *.rej *~
#*# .#* .*.swp .DS_Store .settings */.settings/* .classpath .project target */target/*
※如果在 Eclipse 中操作,target 目录会自动忽略;如果使用 TortoiseSVN 则需要追加 target 目录设置。
- 分享工程
- 第一步:工程→右键→Team→Share Project...
- 第二步:版本控制工具中选择 SVN
- 第三步:选择一个已经存在的资源库位置或新建一个
可以直接点 Finish(工程在 SVN 服务器端的目录名和工程名一致;上传工程目录的日志使用默认值)
- 第四步:确认工程根目录下子目录和文件是否全部上传
常见图标含义
- 检出操作
在 Eclipse 中执行 Import 操作
- 确认资源库位置
- 找到 SVN 服务器端工程对应的目录
- 选择检出方式
Finish
- 转换工程类型
- 基本操作
资源→右键→Team→相关菜单项
- 解决冲突
- 第一步
冲突文件→右键→Team→Edit Conflicts
- 第二步
- 标记为“已合并”
冲突文件→右键→Team→Mark as merged
- 提交
- 分支
- 概念
在版本控制过程中,使用多个分支同时推进多个不同功能开发。
不使用分支开发:人与人之间协作 使用分支开发:小组和小组之间协作
- 应用场景举例
蓝色皮肤界面功能:小组 1
用户账号管理功能:小组 2
支付功能:小组 3
……
- 作用
- 多个功能开发齐头并进同时进行
- 任何一个分支上功能开发失败,删除即可,不会对其他分支造成影响
- 相关目录
- trunk
主干
- branches
分支
- tags
存放项目开发过程中各个里程碑式的代码
- 创建相关目录
- trunk
主干
- branches
分支
- tags
存放项目开发过程中各个里程碑式的代码
资源库位置→右键→New...→Folder
创建各个具体分支的目录
- 创建代码分支
项目→右键→Team→branch...
- 切换分支
项目→右键→Team→Swith...
效果:
- 合并分支
工程→右键→Team→Merge...
※说明:如果两个分支各自都有新内容,需要合并两次才能够让他们内容一致 分支 1:☆☆☆★★★
- SVN 权限管理
- 版本库中三个对应的配置文件
- 版本库配置文件目录
- 版本库中三个对应的配置文件
/var/svn/repository/pro_oa/conf
- svnserve.conf 文件
|
匿名访问 授权访问 |
20 password-db = passwd |
指定设置用户名密码的配置文件 |
27 authz-db = authz |
分配权限的配置文件 |
- passwd 文件
[users] |
|
# harry = harryssecret |
例子 |
# sally = sallyssecret |
|
tom = 123123 |
用户名 = 密码 |
jerry = 123123 |
|
kate = 123123 |
- authz 文件
|
例子 用户组 = 用户,用户 |
30 [/] |
针对版本库根目录进行权限设置 |
31 @kaifa = rw |
@组名 = 权限值 |
32 kate = r |
用户名 = 权限值 |
33 * = |
上面已经授权的用户以外其他用户没有任何 |
权限 |
- 客户端测试
※Eclipse 中删除曾经登录过的用户名密码的操作方式
条目不可读问题解决
到 svnserve.conf 文件中把 anon-access 注释打开设置为 none
8[general]
9### These options control access to the repository for unauthenticated 10 ### and authenticated users. Valid values are "write", "read",
11 ### and "none". The sample settings below are the defaults. 12 anon-access = none
13 auth-access = write
让文件回到某一个历史状态
- TortoiseSVN
- 独立将工程上传到服务器的思路
- 针对 archetype-catalog.xml 文件的准备工作
- 作用:Maven 生成工程目录结构过程中需要使用的配置文件
- 下载地址
- 针对 archetype-catalog.xml 文件的准备工作
http://repo.maven.apache.org/maven2/archetype-catalog.xml
- 复制到 Maven 的本地仓库
Maven 本地仓库根目录\org\apache\maven\archetype\archetype-catalog\[版本号目录]
- 操作步骤
- 打开资源库浏览器
- 操作步骤
- 在 SVN 服务器上创建目录
检出新建的目录
- 执行 Maven 命令
mvn archetype:generate 命令参数含义
参数名 |
作用/可选值 |
-DgroupId |
生成工程坐标的 groupId 部分 |
-DartifactId |
生成工程坐标的 artifactId 部分 |
-DarchetypeArtifactId |
maven-archetype-quickstart 对应 jar 包工程 maven-archetype-webapp 对应 war 包工程 |
-DinteractiveMode |
设置为 false 关闭用户交互模式 |
-DarchetypeCatalog |
设置为 local 表示使用本地 archetype-catalog.xml 文件 |
-X |
使用 DEBUG 级别打印日志 |
导入 Eclipse 效果
svn安装使用subversion相关推荐
- linux安装svn服务器 cvs,Linux 环境安装配置Subversion
序言: svn(subversion)是近年来崛起的版本管理工具,是cvs的接班人.目前,绝大多数开源软件都使用svn作为代码版本管理软件. 测试环境: CentOS 6.3 + subversion ...
- centos下安装apache + subversion(转)
目录: 一.安装apr跟apr-util 二.安装apache服务器 三. 安装subversion 四. 配置subversion 五. 配置apache的httpd.conf 六. 验证安装 七. ...
- 【SVN】1. SVN 安装部署
一. SVN概述 1. SVN 简介 Subversion 版本控制系统 简称 SVN. SVN 是一个跨平台开放源代码的集中式版本控制系统,可以实现文件及目录的保存及版本回溯. SVN ...
- Ubuntu SVN安装使用命令
SVN 安装 apt-get install subversion checkout svn checkout svn://192.168.1.110/app 按提示输入相应的用户名和密码. 往版本库 ...
- linux svn安装和配置
linux svn安装和配置,不结合apache http://blog.51yip.com/server/901.html 张映 发表于 2010-07-07 分类目录: 服务器相关 今天有个同事在 ...
- Fedora 12 安装配置subversion
Fedora 12 安装配置subversion svn服务器有2种运行方式:独立服务器和借助apache.2种方式各有利弊. svn存储版本数据也有2种方式:BDB和FSFS.因为BDB方式在服务器 ...
- Linux搭建SVN(CollabNet Subversion)服务器 可视化界面
为什么80%的码农都做不了架构师?>>> 最近一程序员友人给了我这样一个页面,顿时感觉SVN也可以这样管理的高大上,尽管svn已经不像当年如此风光,但是还有很多公司在使用它. ...
- Androidstudio SVN安装与使用
原文地址:https://www.cnblogs.com/whycxb/p/9100725.html 概述 在AndroidStudio中开发版本控制,除了Git就是SVN,和Eclipse不同,An ...
- linux svn安装
linux centos 5.4 x64 svn安装 ##################################################### #本文内容来自<老男孩linu ...
最新文章
- php 长连接心跳_支持gRPC长链接,深度解读Nacos2.0架构设计及新模型
- 使用 Docker 搭建 Laravel 本地环境
- Python实例浅谈之五Python守护进程和脚本单例运行
- linux重启was控制台报错,Linux非WAS部署,启动报错Cannot run program \lsb_release\
- 关于 iOS 10 中 ATS 的问题
- 互联网与CTI技术结合之商业应用
- Linux 用户空间和内核空间
- Visio图形自动编号
- 微信公众号通过链接实现关注(盗用广告主流量主)
- ajax(form)图片上传(spring)
- Windows phone 7
- 腾讯信鸽推送(一):服务端架构
- python tif转jpg_怎样把TIF转化为JPG图片格式
- ORB_SLAM3系统框图
- Flutter系列之设置Dialog的宽度
- 从小米人事变动谈引入人才与自主培养人才哪个更重要
- 看过一个报道湾湾川生态靠着自动售卖机就能很赚一笔
- Laravel+Vue前后端分离项目(四)邮箱验证与滑动验证
- 浅谈带宽,网速和流量之间的关系
- 【小经验】Windows 11 家庭中文版连接远程桌面,出现身份验证错误。要求的函数不受支持