Subversion & SVN
目标:实现数据的协作编辑和共享
版本库类型默认是"fsfs"
架构说明:client端+版本库访问层+版本库+底层库(FSFS)
组件:svn 、svndumpfilter、svnrdump、svnsync、svnadmin 、svnlook、 svnserve、svnversion
3种方式访问SVN:基于webdav,基于SVN,直接本地访问
基于webdav是用Apache的mod_dav_svn模块实现访问版本库
SVN是一个客户端/服务器的系统,集中式的
特点:版本库是SVN的核心;记录每次更改
版本控制系统的价值在于它跟踪文件和目录的版本,记录每个版本(只要不删除)
文件共享问题:
版本控制需要避免同时多个人修改的问题,通过”锁定-修改-解锁方案“的可以解决但是只能单人作战,还有多个文件可能有相互依赖关系导致修改失败
所以,版本更改工作方式:拷贝-修改-合并方案:
在这种模型里,每一个客户端联系项目版本库建立一个个人工作拷贝—版本库中文件和目录的本地映射。用户并行工作,修改各自的工作拷贝,
最终,各个私有的拷贝合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。
当发生文件冲突时,需要手工解决冲突,商量保留哪一个更改
svnserve -d #开启daemon服务模式,客户端访问时需要指定绝对路径(svn://服务器IP/var/svn/project)
工作副本如何工作:
subversion根据修订版本和时间戳来判断工作副本的4中不同状态
基本工作指令:
checkout #创建副本 ,例如:svn checkout http://svn.example.com/repos/calc
commit #提交到版本库(原子事务提交),例如:svn commit button.c -m "Fixed a typo in button.c."
update #更新工作副本
import #导入文件到库
SVN内置认证和授权通过svnserve.conf来控制的
提交前回滚: svn revert
已提交后回滚:svn merge
######################################
开始SVN之旅(例子):
创建版本库:svnadmin create project1
加入文件到版本库:svn import /usr/lib/systemd/system file:///var/svn/project1 -m "Init"
生成工作副本prj1-Copy:svn checkout file:///var/svn/project1/ prj1-Copy
版本库信息:svn info svn://192.168.253.150/var/svn/project1
版本库修改历史:svn log svn://192.168.253.150/var/svn/project1
列出版本库的文件内容:svn list svn://192.168.253.150/var/svn/project1
添加一个副本文件到工作副本目录:svn add COPY00000.TXT
提交到版本库:svn commit -m "create a file" #这时本地副本和版本库内容一致,版本一致
对比版本库和工作副本的差别:svn diff
查看版本库某个文件内容:svn cat svn://192.168.253.150/var/svn/project1/wpa_supplicant.service
###############################################
备份版本库:svnadmin dump /var/svn/project1 > PRJ.BAK
恢复前创建新的版本库:svnadmin create /home/jk/proJ2/
恢复版本库:svnadmin load /home/jk/proJ2/ < PRJ.BAK
########################################
Git是一个分布式版本控制系统,去中心化的,目前最流行的。
配置git用户信息和编辑器
组成:工作区、暂存区("版本库"/.git/index)、版本库(.git)
[root@manager ~]# git config --global user.name "hhaa"
[root@manager ~]# git config --global user.email "hhaa@164.com"
[root@manager ~]# git config --global core.editor vim
[root@manager ~]# git config --list
创建版本库:
[root@manager ~]# mkdir deveops
[root@manager ~]# git init deveops
################
初始化空的 Git 版本库于 /root/deveops/.git/
添加文件到暂存区:git add toGit.txt
查看git提交状态:git status
提交到版本库:git commit -m "The 1st ci"
查看暂存区的文件:git ls-files
################
CI(Jenkins)过程:
0.程序猿提交代码更新到软件仓库
1.CI服务器基于计划任务查询仓库,并下载代码;
2.CI服务器运行构建过程并生成软件包;
3.CI服务器进行单元和集成测试,存储测试结果;
4.向开发团队发送构建通知;
##########################
原文:https://www.cnblogs.com/Haihong72H/p/14967034.html