svn 代码管理工具

1.1 svn安装配置:

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

cp CentOS6-Base-163.repo /etc/yum.repos.d/

[[email protected] ~]# yum clean all

[[email protected] ~]# rpm -ivh epel-release-6-8.noarch.rpm

[[email protected] ~]# yum install subversion -y

补:yum安装rpm包安装后本地不清除的方法

[[email protected] ~]# sed -i ‘s#keepcache=0#keepcache=1#g‘ /etc/yum.conf

[[email protected] ~]# grep keepcache /etc/yum.conf

keepcache=1  //rpm 包下载后不清除

1.2 配置并启动svn

建立SVN版本库存储根目录(svndata)及用户、密码权限目录(svnpasswd);

[[email protected] ~]# mkdir -p /application/svndata

[[email protected] ~]# mkdir -p /application/svnpasswd

启动SVN服务指定服务的SVN根目录

svnserve -d -r /application/svndata --pid-file=/application/svndata/svn.pid

提示:pid的参数可加可不加,本文就不加了

查看进程和端口

[[email protected] ~]# ps -ef|grep svn

root      37492      1  0 16:06 ?        00:00:00 svnserve -d -r /application/svndata/

root      37494  34093  0 16:06 pts/3    00:00:00 grep svn

[[email protected] ~]# netstat -antup|grep svn

tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      37492/svnserve

[[email protected] ~]# lsof -i:3690

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

svnserve 37492 root    3u  IPv4  97424      0t0  TCP *:svn (LISTEN)

重新启动SVN:

[[email protected] svnpasswd]# pkill svnserve

[[email protected] svnpasswd]# svnserve -d -r /application/svndata/

1.3 建立项目版本库

创建一个新的Subversion项目sadoc,其实,类似sadoc这样的项目可以创建多个,每个项目不同的代码,这里只是以创建一个项目为例演示:

[[email protected] ~]# svnadmin create /application/svndata/sadoc

[[email protected] ~]# ll /application/svndata/

总用量 4

drwxr-xr-x. 6 root root 4096 9月  29 16:19 sadoc

提示:查看svnadmin命令帮助的方法

[[email protected] ~]# svnadmin help

[[email protected] ~]# svnadmin help create

1.4 调整svn配置文件及权限文件

1.4.1配置允许用户oldboy读写访问

[[email protected] conf]# cd /application/svndata/sadoc/conf/

[[email protected] conf]# ll

总用量 12

-rw-r--r--. 1 root root 1080 9月  29 16:19 authz

-rw-r--r--. 1 root root  309 9月  29 16:19 passwd

-rw-r--r--. 1 root root 2279 9月  29 16:19 svnserve.conf

[[email protected] conf]# cp svnserve.conf svnserve.conf.bak

[[email protected] conf]# egrep "\-access|\-db =" svnserve.conf

# anon-access = read

# auth-access = write

# password-db = passwd

# authz-db = authz

修改:

vim svserve.conf 修改

anon-access=none #12行

auth-access=write #13行

password-db = /application/svnpasswd/passwd #18行

authz-db = /application/svnpasswd/authz #25行

拷贝文件:

[[email protected] conf]# cp authz passwd /application/svnpasswd/

[[email protected] conf]# ll /application/svnpasswd/

总用量 8

-rw-r--r--. 1 root root 1080 9月  29 17:09 authz

-rw-r--r--. 1 root root  309 9月  29 17:09 passwd

修改权限,保证安全:

[[email protected] svnpasswd]# cd /application/svnpasswd/

[[email protected] svnpasswd]# chmod 700 *

[[email protected] svnpasswd]# ll

总用量 8

-rwx------. 1 root root 1080 9月  29 17:09 authz

-rwx------. 1 root root  309 9月  29 17:09 passwd

提示:svnserve.conf中每个参数都要顶格写,开头不能有空格。

快速替换方法

sed -i ‘s/# auth-access = write/auth-access=write’ svnserve.conf

sed -i ‘s/# anon-access = read/anon-access=none’ svnserve.conf

sed -i ‘s%# password-db = passwd%password-db = /application/svnpasswd/passwd%’ svnserve.conf

sed -i ‘s%# authz-db = authz%authz-db = /application/svnpasswd/authz%g’ svnserve.conf

1.4.2passwd配置用户账号密码:

[[email protected] svnpasswd]# cd /application/svnpasswd/

[[email protected] svnpasswd]# vim passwd

### This file is an example password file for svnserve.

### Its format is similar to that of svnserve.conf. As shown in the

### example below it contains one section labelled [users].

### The name and password for each user follow, one account per line.

[users]

# harry = harryssecret

# sally = sallyssecret

zhaoxin = zhaoxin123

xinlin  = xinlin123

提示:

1.等号前为SVN账号,等号后为SVN密码,密码是明文的,注意密码权限;

2.更改svnserve.conf时,需要重启SVN,更改authz,passwd文件时不需要重启svn服务。

1.4.3 authz权限配置文件

[[email protected] svnpasswd]# cd /application/svnpasswd/

[[email protected] svnpasswd]# vim authz

版本库目录格式:

[<版本库>:/项目/目录]

@<用户组名>  =  <权限>

<用户名>  =  <权限>

注意:

* 权限配置文件中出现的用户名必须已在用户配置文件中定义。

* 对权限配置文件的修改立即生效,不必重启SVN

sagroup = zhaoxin,xinlin

[sadoc:/]

zhaoxin = rw

xinlin = r

@sagroup = r

1.5 客户端软件 TortoiseSVN

1.5.1 windows使用:

进入:

http://tortoisesvn.net/downloads.html

下载:TortoiseSVN

不习惯英文的可以下载汉化包。

安装过程一路向东

Svn客户端链接服务器方式,账号及密码:

svn://192.168.19.119/sadoc

用户名: zhaoxin

密  码: zhaoxin123

1.5.2 linux 客户端使用:

1、svn管理命令用法

用法:svn<subcommand>[options][args]

可用的子命令:(括号内是子命令的简写)

add

blame (praise, annotate, ann)

cat

changelist (cl)

checkout (co)

cleanup

commit (ci)

copy (cp)

delete (del, remove, rm)

diff (di)

export

help (?, h)

import

info

list (ls)

lock

log

merge

mergeinfo

mkdir

move (mv, rename, ren)

propdel (pdel, pd)

propedit (pedit, pe)

propget (pget, pg)

proplist (plist, pl)

propset (pset, ps)

resolve

resolved

revert

status (stat, st)

switch (sw)

unlock

update (up)

2、从SVN提取数据

将文件checkout到本地目录。

svn checkout remotepath localpath

可以简写:

svn co remotepath localpath

例如:

svn co svn://192.168.19.72/sadoc/ /data/ --username=zhaoxin --password=zhaoxin123

svn如果出现下面问题

提示:svn:Cant`t convert string from ‘UTF-8’ to native encoding:

解决方法:
[[email protected] ~]# export LC_CTYPE="en_US.UTF-8"

[[email protected] ~]# export LC_ALL=

[[email protected] ~]# locale

LANG=en_US.UTF-8

LC_CTYPE=en_US.UTF-8

LC_NUMERIC="en_US.UTF-8"

LC_TIME="en_US.UTF-8"

LC_COLLATE="en_US.UTF-8"

LC_MONETARY="en_US.UTF-8"

LC_MESSAGES="en_US.UTF-8"

LC_PAPER="en_US.UTF-8"

LC_NAME="en_US.UTF-8"

LC_ADDRESS="en_US.UTF-8"

LC_TELEPHONE="en_US.UTF-8"

LC_MEASUREMENT="en_US.UTF-8"

LC_IDENTIFICATION="en_US.UTF-8"

LC_ALL=

3、查看SVN中的数据

查看版本库下的内容

[[email protected] ~]# svn ls svn://192.168.19.119/sadoc/ --username=zhaoxin --password=zhaoxin123

4、从本地提交数据到SVN

[[email protected] ~]# ll /data/

total 0

-rw-r--r-- 1 root root 0 Oct 19 03:06 daima.txt

-rw-r--r-- 1 root root 0 Oct 19 03:09 新建文本文档.txt

[[email protected] ~]# touch /data/{a..d}

[[email protected] ~]# ll /data/

total 0

-rw-r--r-- 1 root root 0 Oct 19 03:38 a

-rw-r--r-- 1 root root 0 Oct 19 03:38 b

-rw-r--r-- 1 root root 0 Oct 19 03:38 c

-rw-r--r-- 1 root root 0 Oct 19 03:38 d

-rw-r--r-- 1 root root 0 Oct 19 03:06 daima.txt

-rw-r--r-- 1 root root 0 Oct 19 03:09 新建文本文档.txt

[[email protected] data]# svn add a b c d

A         a

A         b

A         c

A         d

[[email protected] data]# svn ci -m "svn ci data"

Adding         a

Adding         b

Adding         c

Adding         d

Transmitting file data ....

Committed revision 3.

5、导入原始目录树

[[email protected] ~]# svnadmin create /application/svndata/zhaoxin

[[email protected] ~]# mkdir -p /svn/trunk /svn/branch /svn/tag

[[email protected] ~]# svn import /svn/ file:///application/svndata/zhaoxin/ -m ‘import‘

Adding         /svn/trunk

Adding         /svn/tag

Adding         /svn/branch

Committed revision 1.

6、将主干拷贝为分支

svn copy svn://192.168.19.119/sadoc/trunk svn://192.168.19.119/sadoc/trunk/branch_cms_110329 -m "create fenzhi" --username=zhaoxin --password=zhaoxin123

Svn钩子(hooks)

1.1 Svn钩子脚本简介

钩子脚本的具体写法就是操作系统中的shell脚本程序的写法,可根据自己的SVN所在的操作系统和shell程序进行相应的开发。

钩子脚本就是被某些版本库事件触发的应用程序,例如:创建新版本或修改未被版本控制的属性。每个钩子都能掌管足够的信息来了解什么事件,操作对象是什么以及触发事件用户的账号。inotify或sersync

根据钩子的输出或者返回状态,钩子程序能够以某种方式控制该动作继续执行,停止或者挂起。

使用方式,将后面的扩展名去掉变成(post-commit)

[[email protected] ~]# cd /application/svndata/sadoc/hooks/

[[email protected] hooks]# ll

total 36

-rw-r--r-- 1 root root 1977 Oct 19 01:57 post-commit.tmpl

-rw-r--r-- 1 root root 1638 Oct 19 01:57 post-lock.tmpl

-rw-r--r-- 1 root root 2289 Oct 19 01:57 post-revprop-change.tmpl

-rw-r--r-- 1 root root 1567 Oct 19 01:57 post-unlock.tmpl

-rw-r--r-- 1 root root 3426 Oct 19 01:57 pre-commit.tmpl

-rw-r--r-- 1 root root 2410 Oct 19 01:57 pre-lock.tmpl

-rw-r--r-- 1 root root 2786 Oct 19 01:57 pre-revprop-change.tmpl

-rw-r--r-- 1 root root 2100 Oct 19 01:57 pre-unlock.tmpl

-rw-r--r-- 1 root root 2780 Oct 19 01:57 start-commit.tmpl

重要提示:

由于安全原因,subversion版本库在一个空环境中执行钩子脚本----就是没有任何环境变量,甚至没有$PATH或%PATH%,由于这个原因,许多管理员会感到困惑,他们的钩子脚本手工运行时正常,可在subversion中却不能运行。 要注意,必须在你的钩子中去设置好环境变量或为你的程序指定好绝对路径。

1.2 钩子的模板

1.2.1 常用钩子脚本


钩子脚本


说明


post-commit


在提交完成成功创建版本之后执行该钩子,

提交已经完成,不可更改,因此,本脚本的

返回值被忽略。提交完成时触发事物。


pre-commit


提交完成前触发执行该脚本


start-commit


在客户端还没有向服务器提交数据之前,即还没有建立subversion transaction(缩写为txn)之前,执行该

脚本(提交前触发事务)

1.3 svn钩子生产应用场景举例

per-commit:

1.限制上传文件扩展名及大小,控制提交要输入的信息等。

post-commit:

2.SVN更新自动周知,MSN,邮件或者短信周知。

3.SVN更新触发checkout程序,然后实时rsync推送到服务器等。

1.4 SVN钩子生产应用实战

1.4.1 rsync 与 svn 钩子结合实现数据实时同步某企业小案例

1 建立同步WEB目录

mkdir /data/www

2 将SVN中内容checkou到WEB目录一份

[[email protected] ~]# svn co svn://192.168.19.119/sadoc /data/www --username=zhaoxin --password=zhaoxin123

A    /data/www/a

A    /data/www/b

A    /data/www/新建文本文档.txt

A    /data/www/c

A    /data/www/d

A    /data/www/trunk

A    /data/www/trunk/branch_cms_110329

A    /data/www/daima.txt

A    /data/www/tag

A    /data/www/branch

Checked out revision 7.

钩子脚本 post-commit

在windows上用过的脚本在linux上 dos2unix FILE_NAME处理一下

REPOS="$1"

REV="$2"

export LC_CTYPE="en_US.UTF-8"

export LC_ALL=

LOGPATH="/app/log"

[ ! -d ${LOGPATH} ] && mkdir ${LOGPATH} -p

#update content from svn

SVN=/usr/bin/svn

$SVN update --username zhaoxin --password zhaxin123 /data/www

if [$? -eq 0 ]

then

/usr/bin/rsync -az --delete /data/www /tmp/

fi

注意:

1、钩子脚本必须有执行权限

[[email protected] hooks]# chmod 700 post-commit

[[email protected] hooks]# ll post-commit

-rwx------ 1 root root 2282 Oct 19 09:57 post-commit

2、注意定义环境变量

1.4.2 限制文件上传文件扩展名及大小

钩子脚本 per-commit

REPOS="$1"

TXN="$2"

#此处更改大小限制,这里是5M

MAX_SIZE=5242880

#此处增加限制文件后缀名

FILTER=’\.(zip|rar|o|obj|tar|gz)$’

#Make sure that the log message contains some text.

SVNLOOK=/usr/bin/svnlook

#LOGMSG=`$SVNLOOK log -t “$TXN” “$REPOS”|grep “[a-zA-Z0-9]” wc -c`

LOGMSG=`$SVNLOOK log -t “$TXN” “$REPOS” | wc -c`

if [ “$LOGMSG” -lt 9 ]:

then

echo -e “nLog message can’t be empty! you must input more than 8 chars as comment !.” 1>&2

exit 1

fi

files=$($SVNLOOK changed -t $TXN $PREPOS |cut -d “ ” -f  4-)

#echo “$files”>&2

#echo “$r”>&2

#exit 1

rc=0

echo “$files” |while read f:

do

#check file type

if echo $f|tr A-Z a-z |grep -Eq $FILTER:

then

echo “File $f is not allow ($FILTER) file” >&2

exit 1:

fi

#check file size

filesize=`$SVNLOOK cat -t “$TXN” “$REPOS” “$f”| wc -c`

if [ “$filesize” -gt “$MAX_SIZE” ]:

then

echo “File $f is too large(must <=$MAX_SIZE) B” >&2

exit 1

fi

done

# ALL checks passed, so allow the commit

时间: 2024-11-10 15:08:20

svn 代码管理工具的相关文章

SVN代码管理工具修改IP

问题是这样, 原来代码是在一个服务器上, 其IP为ip1, 现在这个机器ip变成ip2了. 以前从ip1上检出的代码现在再提交时有问题了, 找不到原来的ip1. TortoiseSVN,在目录上右键,TortoiseSVN=>Relocate(汉化后显示的是重新定位),输入新的IP2对应的完整svn目录.按Ok搞定..

IOS开发-关于代码管理工具之SVN

最近在做的一个项目,就用到了代码管理工具,那么就对SCN进行了一个简单的了解,即原理和一些常用命令. 那么我们为什么需要使用SVN呢,我们可以吧SVN当成是一个备份服务器,他可以帮你记住每次上传到这个服务器的档案内容,并且自动的赋予每次变更的一个版本. 因为如果是团队开发的话,版本管控是非常重要,你无法保证你手头上的版本永远都是对的,对于团队开发来说,数据同步非常重要,因为互相都需要各自的数据,所以SVN可以帮你解决这个问题. 1.概述 SVN 是集中式源代码管理工具 概念:1> Reposit

常用代码管理工具,如git、hg、svn

常用代码管理工具,如git.hg.svn:

Git代码管理工具

Git代码管理工具 Git 是分布式的源代码管理工具,这点区别于svn -让源代码可以被追溯,主要是记录了每次的更新了什么,如果新版本不想用,那么则可以退回之前的版本 -Git 是Linux之父当年为了维护管理Linux的源代码写的一个工具 -在没有网络的情况下也可以提交代码(提交到本地),进行记录,有网络时再提交到服务器 Git安装 下载相应的版本并安装,记住你选择的安装目录 安装完成之后,打开dos窗口,输入 git --version   检测是否安装成功以及Git的版本 C:\Users

SVN代码管理器的安装

资源的统一管理,再软件开发的时候,遇到项目比较大时,项目需要记录每次修改的痕迹时,都需要用到代码管理器.前些 年,流行的代码管理器有 CVS.VSS.SVN等,最近这2年Git代码管理器火了,使用的人越来越多,但是SVN还是占据一大半的使用江 山.代码管理器天天都用到,和我们的开发工具一样,但是安装.配置的时候,就只有刚开始搭建开发环境的时候会用到,导致SVN 的安装配置很容易忘记.下面就讲述一些SVN客户端常用安装配置. 一.直接安装SVN客户端 这个很容易去网站上下载一个安装文件,一步一步的

开发中的代码管理工具梳理

参考:https://blog.csdn.net/growing_tree/article/details/44084179 参考:https://blog.csdn.net/zhhelnice/article/details/52385285 参考:https://blog.csdn.net/growing_tree/article/details/44084179 代码管理工具有很多,看了很多文章,有必要梳理一下. 一.为什么使用代码管理工具? 就像zhhelnice的博客在博客里总结的那样

GIT: 分布式开发 代码管理工具使用命令大全

代码管理工具: GIT 什么是GIT? Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目 Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理. 特点: 可以管理各种项目,特别是代码项目,多使用在Linux.Unix系统中 是分布式管理,不同于集中管理,这是git和svn的核心区别 更好的支持分支 拥有全球唯一的版本号 代码安全性更加有保证 开源.方便.快捷.数据传输速度更快.可以无网络操作 集中式和分布式: 集中式: 代码集中管

开发新人-代码管理工具

1.版本管理工具 1.VSS(Visual Source Safe) 描述:此为微软公司出品,与其.net平台可无缝衔接,适用于小型项目管理. 百度百科:https://baike.baidu.com/item/VSS 2.CVS(Concurrent Versions System) 描述:基于unix的开源版本管理工具.SS 百度百科:https://baike.baidu.com/item/CVS 3.SVN(Subversion) 描述:在CVS的基础上改良的版本管理工具. 百度百科:h

代码管理工具 --- git的学习笔记四《重新整理git(1)》

1.创建版本库 mkdir  创建目录 cd  地址,到该地址下 pwd 显示当前目录 1.创建目录 $ mkdir startGit $ cd startGit $ pwd 显示当前目录 或者cd到桌面,然后再创建目录 2.初始化版本库 $ git init 初始化仓库 提示信息:Initialized empty Git repository in /Users/xingzai/Desktop/startGit/.git/ 建立一个空的git仓库在/Users/xingzai/Desktop