首页 > 其他分享 >svn

svn

时间:2024-05-10 10:48:31浏览次数:21  
标签:svn code service web2 mycode root

svn

svn

安装

yum -y install subversion

创建版本库

mkdir /var/svn/                     #这不是仓库,只是一个普通目录
svnadmin create /var/svn/project    #这是仓库

ls /var/svn/project/
conf/  db/  format  hooks/  locks/  README.txt   #空仓库,默认自带的数据库和版本文件

本地导入初始化数据,导入当前目录下的所有数据

cd /usr/lib/systemd/system/
svn import . file:///var/svn/project/ -m "Init Data"

-m 注释,导入的是什么,为什么要导入
导入之后不是明文存的,是以数据库的形式乱码存在的,所以看不到,但可以查整个仓库的大小变大了

修改配置文件,创建账户与密码

ls /var/svn/project/conf/
authz  passwd  svnserve.conf          #从右向左改

vim /var/svn/project/conf/svnserve.conf
anon-access = none     #匿名无任何权限
auth-access = write    #有效账户可读可写
password-db = passwd   #密码存放路径/var/svn/project/conf/passwd
authz-db = authz       #对单独文件单独设置权限,ACL访问控制列表文件

vim /var/svn/project/conf/passwd
[users]
harry = 123456   #用户名和密码
tom = 123456     #用户名和密码

vim /var/svn/project/conf/authz
[/]                #定义ACL访问控制目录或文件,没有标注的目录默认继承根,因为所有的目录都在根下
harry = rw         #用户对项目根路径可读可写,* =  ,表示除上边两个人之外的其他人没有权限
tom = rw    

启动服务

svnserve  -d  -r  /var/svn/project  

#-d 放入后台,相当于&
#-r 指定共享目录的路径

验证

netstat -nutlp |grep svnserve
端口号3690

备注:启动时加不加r,对客户端的影响

不加r,这样访问
svn://服务器IP/var/svn/project
加r,可以这样访问
svn://服务器IP

客户端测试

建立本地副本,从服务器192.168.2.100上co下载代码到本地code目录,命令自动创建code目录

cd /tmp
svn --username harry --password 123456 co svn://192.168.2.100/ code       

# co checkout

# 提示是否保存密码
# Store password unencrypted (yes/no)? yes            

修改文件后再提交

cd /tmp/code                  # 一定cd到文件目录
vim user.slice                # 挑选任意文件修改其内容

# 将本地修改的数据同步到服务器,ci是commit提交,-m之后可以添加注释:你修改的原因
svn ci -m "modify user"       
# ci commit 提交
# -m 指定提交原因

更新本地数据

将服务器上新的数据同步到本地,只下载有修改的,把别人更新的新版本下载到自己的计算机

svn update                   

查看仓库信息

svn info svn://192.168.2.100    //查看版本仓库基本信息,可以看到最后一个是谁修改的

路径: .
URL: svn://192.168.2.100
版本库根: svn://192.168.2.100
版本库 UUID: 234ad8b5-1723-467f-8729-96a314ace092
版本: 12
节点种类: 目录
最后修改的作者: tom
最后修改的版本: 12
最后修改的时间: 2018-11-26 16:59:11 +0800 (一, 2018-11-26)

svn log     svn://192.168.2.100    //查看版本仓库的日志


r12 | tom | 2018-11-26 16:59:11 +0800 (一, 2018-11-26) | 1 行

xx


r11 | harry | 2018-11-26 16:40:53 +0800 (一, 2018-11-26) | 1 行

xx


r10 | tom | 2018-11-26 16:39:46 +0800 (一, 2018-11-26) | 1 行

xx


r9 | tom | 2018-11-26 16:28:12 +0800 (一, 2018-11-26) | 1 行

xx


echo "test" > test.sh           //本地新建一个文件

svn ci -m "new file"            //提交失败,该文件不被svn管理

svn add test.sh                //将文件或目录加入版本控制,让svn识别此文件,相当于共享此文件

svn ci -m "new file"            //再次提交,成功

svn mkdir subdir               //创建子目录,让svn识别此目录

svn rm timers.target            //使用svn删除文件

svn ci -m "xxx"                 //提交一次代码

vim umount.target             //任意修改本地的一个文件

svn diff                        //查看所有文件的差异


svn diff umount.target        //仅查看某一个文件的差异


[root@web2 code]# echo "test" >> test.sh

[root@web2 code]# svn diff test.sh

Index: test.sh

===================================================================

--- test.sh       (工作副本)

+++ test.sh    (工作副本)

@@ -1 +1,2 @@

test

+test


[root@web2 code]# svn cat svn://192.168.2.100/reboot.target    //查看服务器文件的内容

第一种情况:删除本地文件所有内容,但未提交

[root@web2 code]# sed -i 'd' tmp.mount

//删除文件所有内容,但未提交

svn revert tmp.mount   #对于删了文件内容但尚未提交到svn服务器的,可以打此命令还原tmp.mount文件

第二种情况:删除了本地的文档,尚未删除

[root@web2 code]# rm -rf  *.target

//任意删除若干文件

[root@web2 code]# ls -f | wc -l

339

[root@web2 code]# svn update

//还原

[root@web2 code]# ls -f | wc -l

400

第三种情况:不仅改了文件内容,还上传了

[root@web2 code]# sed -i '1a #test###' tuned.service

//修改本地副本中的代码文件

[root@web2 code]# svn ci  -m  "xxx"

//提交代码

[root@web2 code]# svn merge -r7:2    tuned.service

-r还原,从第七版本还原到2版本

[root@web2 code]# svn merge -r5:4 test.sh

将服务器上的test.sh的第五版本还原到第四版本

使用Subversion协同工作

2.1 问题

情况一:修改不同文件

修改相同文件的不同行

修改相同文件的相同行


修改代码

提交代码

update

人工解决冲突


步骤一:多人协同工作

1)远程连接两个终端,每个人下载代码本地副本,注意web1(192.168.2.100)和web2(192.168.2.200)代表了两个不同的主机,看清楚操作是在哪一台计算机上执行!

[root@web1 ~]# cd /tmp

[root@web1 ~]# svn --username tom --password 123456 co svn://192.168.2.100/ code

[root@web2 ~]# cd /tmp

[root@web2 ~]# svn --username harry --password 123456 co svn://192.168.2.100/ code

[root@web1 ~]# cd code

[root@web2 ~]# cd code

  1. harry和tom修改不同的文件

[root@web1 mycode]# sed -i "3a ###tom modify#####"  tmp.mount   #在第三行之后输入###tom modify#####

[root@web1 mycode]# svn ci -m  "has modified"

[root@web2 mycode]# sed -i "3a ###harry modify#####"  umount.target

[root@web2 mycode]# svn ci -m "has modified"

[root@web2 mycode]# svn update   #得到web1修改tmp.mount的结果

[root@web1 mycode]# svn update   #得到web2修改umount.target的结果

3)harry和tom修改相同文件的不同行

[root@srv5 ~]# cd harry

[root@web1 mycode]# sed -i "3a ###tom modify#####" user.slice

[root@web1 mycode]# svn ci -m  "modified"

[root@web2 mycode]# sed -i "6a ###harry  modify#####"  user.slice

[root@web2 mycode]# svn ci -m "modified"        //提交失败

Sending        svnserve

Transmitting file data .svn: Commit failed (details follow):

svn: File '/user.slice' is out of date(过期)

[root@web2 mycode]# svn update                    //提示失败后,先更新再提交即可

[root@web2 mycode]# svn ci -m "modified"        //提交成功

Sending        user.slice

Transmitting file data .

  1. harry和tom修改相同文件的相同行:人为解决,先人工后智能

[root@web1 mycode]# sed  -i  '1c [UNIT]' tuned.service

[root@web1 mycode]# svn ci -m "modified"

[root@web2 mycode]# sed  -i  '1c [unit]' tuned.service

[root@web2 mycode]# svn ci -m "modified"

Sending        tuned.service

Transmitting file data .svn: Commit failed (details follow):

svn: File '/tuned.service' is out of date(过期)

[root@web2 mycode]# svn update                    //出现冲突,需要解决

Conflict(冲突) discovered in 'tuned.service'.

Select: (p) postpone, (df) diff-full, (e) edit,

(mc) mine-conflict(我的版本), (tc) theirs-conflict,(他的版本)

(s) show all options:p                    //选择先标记p,p是推迟解决,随后解决

[root@web2 mycode]# ls tun*

tuned.service(差异对比)  tuned.service.mine(我认为的版本)  tuned.service.r10(他的版本)  tuned.service.r9(我和他修改之前的版本)

[root@web2 mycode]# mv tuned.service.mine tuned.service     #把我的留下,

[root@web2 mycode]# rm  -rf  tuned.service.r10 tuned.service.r9

[root@web2 mycode]# svn ci -m "modified"    //解决冲突,最终留下某人的版本


使用dump指令备份版本库数据

svnadmin dump /var/svn/project > project.bak     //备份所有版本

svnadmin create /var/svn/project2                 //新建空仓库

svnadmin load /var/svn/project2 < project.bak     //还原到空仓库

一般在实际环境中,每周五都作一次备份

标签:svn,code,service,web2,mycode,root
From: https://www.cnblogs.com/lixunblogs/p/18167136

相关文章

  • SVN与Git的区别
    SVN与Git的区别1、Git是分布式的,而SVN不是分布式的2、Git把内容按元数据方式存储,而SVN是按文件3、Git没有一个全局版本号,SVN有4、Git的内容的完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破......
  • idea使用svn报错-Error:Can not get current revision for file
    idea中使用svn结果报错:Error:CannotgetcurrentrevisionforfileD:/IDEADire…,并且idea提示一下警告:解决方案:安装svn的时候要主要勾选上第二个选项,如下图所示:最后在idea中配置svn的安装路径下的svn.exe,File->settings->VersionControl–>Subversion......
  • svn的安装与使用
    一.安装svnsvp分为客户端和管理端1.双击进入安装页面2.点击下一步直到如下界面按如下选择3.点击下一步修改存储位置和端口号4.默认选择点击下一步5.之后默认选择直到安装完成二.客户端安装1.双击安装包2.下一步直到如下位置,修改安装位置3.一直下一步直到安装完......
  • SVN中clean up的含义
    在TortoiseSVN使用cleanup1.在【Cleanup】窗体中勾选中复选框【Cleanupworkingcopystatus】,选中该复选框表示解除锁定。2.在【Cleanup】窗体中勾选中复选框【revertallchangesrecursively】,选中该复选框表示将递归还原所有更改。3.在【Cleanup】窗体中勾选中复选框【Del......
  • 从0到1的 linux 搭建 svn 教程
    linux搭建svn服务器:安装svn软件包:yuminstallsubversionmysql-serverhttpdmod_dav_svnmod_perlsendmailwgetgcc-c++makeunzipperl*ntsysvvim-enhanced安装完成后svn服务器安装成功了。接下来配置svn库:1.新建一个目录用于存储SVN所有文件mkdir/home/svn2.新建......
  • svn命令
    服务端命令创建库svnadmincreate/home/svnrepos/XXXXXX创建配置可以从已有的库中复制conf目录过来配置用户修改/home/svnrepos/XXXXXX/conf/passwd文件[users]用户名=密码配置权限修改/home/svnrepos/XXXXXX/conf/authz文件[/]用户名=rw客户端命令检出-che......
  • [CTFHUB]SVN泄露
    使用dvcs-ripper工具gitclonehttps://github.com/kost/dvcs-ripper.gitsudoapt-getinstallperllibio-socket-ssl-perllibdbd-sqlite3-perllibclass-dbi-perllibio-all-lwp-perl#安装依赖./rip-svn.pl-v-uhttp://challenge-3791c896116904b4.sandbox.ctfhub.co......
  • 在 macOS 上安装 Subversion(SVN)
    在macOS上安装Subversion(SVN)要在macOS上安装Subversion(SVN),可以通过几种方式之一来安装它。以下是两种主要方法:通过Homebrew安装首先,确保已经安装了Homebrew。如果没有,请前往Homebrew官网遵循指示安装。打开终端应用程序。运行以下命令来安装Subversion:br......
  • VisualSVN 迁移仓库到其他盘
    要将VisualSVN仓库迁移到其他盘,可以按照以下步骤进行操作:停止VisualSVN服务:打开Windows服务管理器(services.msc),找到"VisualSVNServer",右键点击并选择"停止"。备份仓库:在旧的仓库所在盘中创建一个备份文件夹,将整个仓库文件夹复制到备份文件夹中。确保备份过程完整,并且没有......
  • 【SVN】安装记录
    VisualSVNhttps://www.visualsvn.com/downloads/  TortoiseSVNTortoiseSVN官网打不开,去哪下最新的软件和中文包?官网:https://tortoisesvn.net能打开最好,但通常打不开,打不开时候去这个网站下;https://sourceforge.net/projects/tortoisesvn/这个网站开发软件的应该很熟......