您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12453|回复: 2
打印 上一主题 下一主题

[centos] centos7 安装svn

[复制链接]
跳转到指定楼层
楼主
发表于 2021-11-29 10:59:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
一丶 SVN简介
4 Y. ~- S7 C. M5 R' F3 v$ d6 eSVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。(ps:百度百科抄的 可忽略)* W. m8 C7 a8 x" o* V; T* a
1.准备工作
/ |. _2 f$ w& v& k一台centos7 服务器 一台 客户端$ ]0 B) h$ C0 [& T& \
————————————————
6 [" o0 q  i* z1 D5 m* \( r/ m1、验证是否安装了SVN/ x* U- c: g6 C9 @0 @; r5 W" G* E8 Q

$ V: n* h7 D- r0 A命令: # rpm -qa subversion
$ ]: x% y1 y4 w8 f, L4 {6 P5 T  v! D/ S: B7 ^
如果安装了,输出对应的版本:subversion-1.6.11-15.el6_7.x86_640 Z( S9 l$ s1 s! X
2 `3 {2 m+ ^( O, F
否则,空白1 d* A* X' v+ s. i

2 |! a* Y% O6 r, r2、安装SVN的命令1 x$ o. X/ O7 u2 I8 D( K' y

) _# |" C; g( U# yum -y install subversion9 J$ l2 |8 L2 Y. ^9 {
! \; y0 p6 a* L
接下来使用# svnadmin create /home/svn/blog  //其中blog为你的站点目录  /home/svn/为目录
: P7 x  q% K$ }) D" H" |2 h0 I创建一个名为blog的svn版本库 ,进入blog目录 只要有以下目录就代表你的svn版本库搞好了$ f& T, `' t( Z9 ~

+ Q* V9 @! p1 L; u8 e+ ~7 o然后我们进入‘blog’下的 conf目录 对svn进行配置,conf 下共有三个文件 authz 是对用户权限的配置 passwd是用户和密码的设置; x" W- U  m# S" {0 Q+ h+ a, [
3 u6 K) ?" c9 I# Z
svnserve.conf是对使用的配置包括是否开启匿名上传 ,用户上传等(差不多就是那个意思)
. J" _5 ?9 _0 q( c1 `
, j7 i, `6 i3 s" ^$ @  v5 V9 m
3 r+ s9 m- f% [+ E% v; Z4 A首先我们对svnserve.conf 进行配置 把箭头处的两行 前的#去除 同时要注意前面不能要留空格2 h5 N: [  a( {( W- \9 h# V! P  ^
# n5 [/ G; Q# \. {+ j& `0 |
# password-db = passwd, d5 h3 k! s$ F

9 x- |1 |3 u0 i0 X" \9 Y- O1 G. m# authz-db = authz
/ `0 g! N3 Y* m8 d
# g! I2 R/ P; q# T) ?
9 D4 P$ p; E. _% d& l然后编辑passwd 文件 写上自己要设置的账号和密码 注意前边不能有空格 并且不能有 #号 否则配置无效8 Z! V0 e  R- H
: G- A& p' H$ j+ c9 ?
登录名=密码
% S3 |0 i% A, j1 h1 u' _5 a1 ^% g" V# i. g& x0 H! O$ b
user=123456- {  D! ^5 n$ @$ v3 h' l$ {7 s( r9 |
+ j- B: l. A6 V) Q. n

* a( W8 F& P) K' g9 z; Q0 v最后编辑authz文件给让配置的账号设置权限(其中[blog:/] 设置的用户对blog下的所有文件都有设置的权限 r代表可读权限 w代表可写权限)
. {+ \/ b* F5 }6 ?) |: o8 d5 x" e* @5 Y1 J  d
# * = r% ?% P1 a8 Z0 A3 \6 I
5 G/ I0 ^& q* p3 u5 [' E( m+ C; m
[/]9 z! I% f( B4 e' h, Y

5 Z( V; A* v' a# ?' ^) a/ U2 Broot=rw
; k, }: q; y1 Z9 }0 Z- L
4 m: t, h# n8 |# y% x$ J这是用户的配置就完成了7 P9 Y3 H) V7 L% U
* a. \6 a4 N' R2 b+ l6 g$ ?1 n
接下来我们就需要开启svn svnserve -d -r /home/svn/blog
7 ]1 [1 @# t; @5 {$ c5 fsvnserve -d --listen-prot 端口 -r /data/svn/ssyleo1 r. X& n) d% b/ s

5 R+ X: x2 Z2 N5 v使用此命令开启svn 根据自己设置的目录自行更改
6 A" {! {/ ~( s6 r2 q# ~
( B2 a0 z: O# g; i# ^使用netstat -nltp 命令 可以看到 svn的默认端口为3690 如果你是用的是阿里云服务器的话 还需要在安全组添加该端口,否则也会造成 客户端上传代码失败具体操作我在这里就不多讲了6 e: W, p6 j9 D& H- n1 v& {- Z
1 m3 x: K( Z! E5 X

% _' K& \( N  L7 Awin下载svn工具" ~  ~. l; e. [! V: W: ?

( g  g! Z0 t7 r2 a6 G接下来我们就需要在客户端做测试 这里我用的是我自己的电脑 svn客户端的下载链接https://tortoisesvn.net/downloads.html 打开后根据自己电脑配置选择不同的安装包 (安装完记得重启电脑)这里安装步骤不就不说了 一直下一步就行了
4 j7 J2 r, R" |$ H) I- u3 n- a/ i4 H- a
( e) V5 o* l# ~8 M1 |1 v- Y1 {
重启完电脑后 右击鼠标 点击SVN checkout (svn捡出)下载代码
9 t% Q# x/ H6 J7 a输入你的svn地址 地址请根据自己的设置自行更改3 k- j% G# E% ^2 ^

& e3 H( d! W, Z$ ^3 \$ W7 ?) U( I. @- `0 \. f8 _- z
然后会弹出框让你输入你的账号和密码 输入后即可下载 服务器端的代码 你会发现文件夹里 只有一个.svn 如果没有的请将你的隐藏文件夹选项去掉这是你的svn 就搭建好了
: r" @' @/ m% ^  u$ c: [$ W$ {' f4 j# N$ |

5 O0 N& E9 x; H+ Q- `0 L2 Y(svn客户端简单使用 svn update 更新代码 svn commit 提交代码). r; c9 T9 u6 o( q; P( @3 {! s

% m0 I0 b) U9 R' g  u' e/ J, `! v+ @9 A7 L7 b7 d4 Y
( c: X8 |7 F5 _- @- j
可是这并不是我们想要的效果我们需要的是在web可以直接同步访问的所以我们要设置提交到svn的 代码能同步更新到web 根目录 svn 也是可以达到这种效果的 首先我们进入 web 根目录 这里我的跟目录在 /var/www/html/ 切换到 html目录下使用 svn co svn://192.168.1.35/blog 与网站根目录建立联系 同样的跟具体提示 输入自己设置的账号和密码并 输入yes设置保存
1 I# u! V0 t, p/ m3 p* g" Q/ ?) }+ k6 w( q" x# y, m
这时我们保存在版本库的代码就会被同步到网站根目录9 X6 o8 r0 V. v( q( G3 W
4 i5 L+ M3 U$ e" k5 ^
) N4 i6 `1 @& S2 ?1 {
5 w3 m4 o# E. z4 {/ S1 X
! k% ]. M' L; M. b
. ~$ i% j7 Q) A" l, ~2 i& @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
板凳
 楼主| 发表于 2021-12-2 21:57:31 | 只看该作者
#!/bin/sh5 U! B# Q3 B9 Y/ C# g+ y
export LAND="zh_CN.UTF-8"0 @% b3 u; l. p
REPOS="$1"5 N, r; }+ a  a) q5 ^: c- L# x8 L: W; G
REV="$2"" f3 _+ c! ^4 P+ }$ R0 \' L
svn co svn://localhost /www/wwwroot/193/193 --username cncml --password pw --no-auth-cache, n) `' D4 _. B# v, {
svn up /www/wwwroot/193 /www/wwwroot/193/193 --username cncml --password pw --no-auth-cache
( ?, I/ Q3 A" Q5 X3 X+ b9 ?

  1. ) U4 i! I3 y# N" \7 D8 @( n; @
  2. #!/bin/sh
    * c1 C& E- J: G" w
  3. export LAND="zh_CN.UTF-8"
    ' ?+ S) ]  G3 ^
  4. REPOS="$1"
    3 H& t  H+ `: A  v1 m0 d$ \
  5. REV="$2"
    , K$ X+ J& b  y
  6. svn co svn://localhost /www/wwwroot/193/193 --username cncml --password pw --no-auth-cache
    7 E* H# z0 T2 R0 _
  7. svn up /www/wwwroot/193 /www/wwwroot/193/193 --username cncml --password pw --no-auth-cache
复制代码

4 u3 D: S6 x+ }' E+ x4 @. ]% d! U4 J1 D
回复 支持 反对

使用道具 举报

沙发
 楼主| 发表于 2021-12-2 19:04:14 | 只看该作者
配置同步web目录
- s- A! W" T) f% w1 z. Q* k, ?cp /data/svn/ssyleo/hooks/post-commit.tmpl /data/svn/ssyleo/hooks/post-commit/ s" h6 H# x% p# _  D- |

* v* n" q) |9 x
  1. REPOS="$1"
    ; `3 F+ ~# u* Y2 s
  2. REV="$2"
    * s8 E7 ~! d4 L5 P2 u
  3. TXN_NAME="$3": G/ X! _* V3 q0 m0 e8 V* G% }
  4. AUTHOR="$(svnlook author -r $REV $REPOS)"
    2 U+ j( i' K- V3 U/ j9 L; A$ X; w
  5. MESSAGE="$(svnlook log $REPOS)"
    ) ~" u) {* t; z# f' b- d2 m
  6. SVN_PATH=/usr/bin/svn
    , q+ r" V* Z6 H/ s7 W  h
  7. WEB_PATH=/usr/share/nginx/html/ssyleo
    5 g$ O8 C7 _! I/ @2 m" q
  8. mkdir -p /var/log/svnlog
    # h0 W/ S* P9 o! w7 K' y  d
  9. touch /var/log/svnlog/ssyleo_update.log* Q2 t; V# C& \( v* c; }: {
  10. LOG_PATH=/var/log/svnlog/ssyleo_update.log! C4 o4 b/ U# a/ q; o3 J) F8 G
  11. echo "\n开始提交" `date '+%Y-%m-%d %H:%M:%S'` '######' >> $LOG_PATH$ c" ?6 B9 ]) C1 q7 K6 R* G
  12. echo $AUTHOR,$MESSAGE >> $LOG_PATH
    ) ^+ D( X  O. O1 e6 F; [7 Y3 i
  13. echo `whoami`,$REPOS,$REV,$TXN_NAME >> $LOG_PATH; ^; _: j# E; q' x
  14. $SVN_PATH update --username username --password password $WEB_PATH >> $LOG_PATH
复制代码

4 S" o0 d4 T4 o, P: ~) s
/ B& a. z& ~$ |- Q
  1. #!/bin/sh
    8 s/ f& D$ C* O; n- O
  2. #设定环境变量,如果没有设定可能会出现update报错4 V5 m; M& L/ F9 o! o
  3. export LANG=zh_CN.UTF-8
    7 u7 e% m% o0 Y3 }0 T& ]
  4. REPOS="$1"
    4 r/ g8 b* t, p: ^
  5. REV="$2"
    7 l) K/ b, ]* h( K
  6. SVN_PATH=/usr/bin/svn$ |/ M/ f0 `5 I! P, [) G
  7. WEB_PATH=/web/project9 P, |; l+ A5 e% }* F
  8. LOG_PATH=/tmp/svn_update.log
    : r3 \% c! _  Y& k+ a
  9. #/usr/bin/svn update --username user --password password $WEB_PATH --no-auth-cache
    # F- r8 o0 l6 @. {; L4 W4 ]
  10. echo "nnn##########开始提交 " `date "+%Y-%m-%d %H:%M:%S"` '##################' >> $LOG_PATH8 r" B: P+ N- W! B( q
  11. echo `whoami`,$REPOS,$REV >> $LOG_PATH" Q1 R8 p/ S; B/ ?$ M4 i" `. o) Y
  12. $SVN_PATH update --username user --password password $WEB_PATH --no-auth-cache >> $LOG_PATH8 L  V; g4 F  z  [
  13. chown -R www:www $WEB_PATH
复制代码
6 q( k/ D2 Q" b0 n5 V+ @
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 17:18 , Processed in 0.056327 second(s), 19 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!