SVN的介绍和使用

SVN的介绍

简介

TortoiseSVN 是Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录。文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将 Subversion 和版本控制系统看作一种“时间机器”。

SVN的服务运行模式与访问方式

SVN服务器常见的有3种运行访问方式:

独立服务器(例如:svn://svn.beyondjie.com/test)

借助Apache(例如:http://svn.beyondjie.com/test

本地直接访问(例如:file:///svn/svndata/test

SVN数据格式

svn存储版本数据也有两种格式:BDB(一种实物安全型表类型)和FSFS(一种不需要数据库的存储)。BDB在服务器中断时有可能锁住数据,所以FSFS比较安全一些。

BDB:伯克利版本库

可以使用的一种经过充分测试的后台数据库实现,不能在通过网络共享的文件系统上使用,是svn 1.2版本之前默认使用的格式

FSFS

一个专用于svn版本库的文件系统后端,可以使用网络文件系统(例如NFS或SMBFS),是1.2版本以后默认使用的格式

SVN是基于关系数据库或一系列二进制文件,一方面解决了许多问题(例如并行读写共享文件),以及添加了许多新功能。但是数据由此变得不透明,在服务器上是不能看到上传的文件的原件的

SVN工作架构图

SVN的部署

系统环境

[[email protected]~]# uname -r
2.6.32-358.el6.x86_64
[[email protected]~]# uname -m
x86_64
[[email protected]~]# uname -a
LinuxSVNServer 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64x86_64 x86_64 GNU/Linux

安装SVN

由于svn大多数用于局域网内开发上传代码使用,所以使用yum源安装即可,方便快捷

yuminstall subversion –y
检查:
[[email protected]~]# rpm -qa subversion
subversion-1.6.11-7.el6.x86_64

配置SVN并启动

1)创建SVN目录

[[email protected]~]# mkdir -p /svn/{svndata,svnpassword}
[[email protected]~]# ls /svn
svndata  svnpassword

2)启动SVN

[[email protected]~]# svnserve -d -r /svn/svndata/
 [[email protected] ~]# netstat -anput | grep svn 
tcp        0     0 0.0.0.0:3690               0.0.0.0:*                   LISTEN      1678/svnserve
[[email protected] ~]# ps -ef | grep svn
root      1678     1  011:33 ?        00:00:00 svnserve -d -r/svn/svndata/
[[email protected] ~]# lsof -i :3690
COMMAND   PIDUSER   FD   TYPE DEVICE SIZE/OFF NODE NAME
svnserve 1678 root   3u  IPv4  13985     0t0  TCP *:svn (LISTEN)

3)建立版本库

[[email protected] ~]# svnadmin create /svn/svndata/test
[[email protected] ~]# ls /svn/svndata/test
conf  db  format hooks  locks  README.txt

4)配置用户权限

现在有三个用户,user1,user2,user3,两个组 admin,guest;admin组的成员可以对版本库内容读写,guest组用户只能读。user1属于admin组,user2和user3属于guest组

[[email protected] ~]# cd /svn/svndata/test/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
[[email protected] conf]# vim svnserve.conf
修改为
anon-access = none   #禁止匿名访问
auth-access = write    #是否允许可写
password-db = /svn/svnpassword/passwd          #密码文件存放的地方
authz-db = /svn/svnpassword/authz                                   #权限文件所在地方
查看修改:
[[email protected] conf]# egrep ‘\-access|\-db =‘svnserve.conf                   anon-access = none
auth-access = write
password-db = /svn/svnpassword/passwd
authz-db = /svn/svnpassword/authz
 
快捷修改:
sed -i ‘s/# anon-access = read/anon-access = none/g‘svnserve.conf
sed -i ‘s/# auth-access = write/auth-access = write/g‘svnserve.conf
sed -i ‘s/# password-db = passwd/password-db =\/svn\/svnpassword\/passwd/g‘ svnserve.conf
sed -i ‘s/# authz-db = authz/authz-db =\/svn\/svnpassword\/authz/g‘ svnserve.conf

编辑passwd,增加user1,user2,user3三个用户

[[email protected]]# cp authz passwd /svn/svnpassword/
[[email protected]]# cd /svn/svnpassword/
[[email protected]]# vim passwd 
[[email protected]]# tail -3 passwd 
user1= 123.com
user2= 456.com
user3= 789.com
提示:注意格式

编辑权限文件authz,设置相应权限

[[email protected]]# vim authz
admin= user1
guest= user2,user3
[test:/]
@admin= rw
@guest= r
注意:
权限配置文件中出现的用户名必须在用户密码文件passwd中有
对权限修改立即生效,不必重启SVN
用户组格式:
[groups]
groupname= username1,username2
其中1个组可以包含1个或多个用户,用户之间用逗号隔开
版本库目录格式
[<版本库>:/项目/目录]
@<groupnameor username> = <权限>
其中方括号内可以有多种写法 [/]表示根目录及一下,根目录是svnserver启动时指定的,我们此时指定的为/svn/svndata/test

此时SVN已经部署完成

svn管理命令

[[email protected] svnpassword]# svnserve --help

用法: svnserve [-d | -i | -t | -X] [options]

有效选项:

-d [--daemon]            : 后台模式

-i [--inetd]             : inetd 模式

-t [--tunnel]            : 隧道模式

-X [--listen-once]       : 监听一次方式(调试用)

-r [--root] ARG          : 服务的根目录

-R [--read-only]         : 强制只读;覆盖版本库配置文件

--config-file ARG        : 从文件 ARG 读取配置

--listen-port ARG        : 监听端口

--listen-host ARG        : 监听主机名称或IP地址

-T [--threads]           : 使用线程代替进程 [方式: daemon]

--foreground             : 在前台运行(调试用)

--log-file ARG           : svnserve 日志文件

--pid-file ARG           : 写进程 PID 到文件 ARG

--tunnel-user ARG        : 隧道用户名(默认是当前UID对应的用户名)

-h [--help]              : 显示本帮助

--version                : 显示程序版本信息

svn配置文件的详细解释

(1)svn配置文件vim /svn/svndata/test/conf/svnserve.conf

各参数功能在配置文件的注释中有说明, 此处配置如下:

[general]

anon-access =none      #使非授权用户无法访问

auth-access = write    #使授权用户有写权限

password-db = passwd   #指明密码文件路径

authz-db = authz       #访问控制文件

realm = /svn/svndata/test #认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。

注意:各语句都必须顶格写,左侧不能留空格,否则会出错.

(2)配置用户认证信息 vim /svn/app1/svndata/test/conf/passwd

格式:

[users]

<用户> = <密码>

例如:

admin = admin

username2 = password2

(3)配置权限信息 vim /svn/svndata/test/conf/authz

说明:

用户组格式:

[groups]

<用户组名> = <用户1>,<用户2>

其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。

版本库目录格式:

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

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

<用户名> = <权限>

其中,方框号内部分可以有多种写法:

/,表示根目录及以下。根目录是svnserve启动时指定的,我们指定/svn/svndata。这样,/就是表示对全部版本库设置权限。

repos1:/,表示对版本库1设置权限

repos2:/abc, ,表示对版本库2中的abc项目设置权限

repos2:/abc/aaa, ,表示对版本库2中的abc项目的aaa目录设置权限

权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。

例1:

[groups]

admins = admin,user1,user2

[/]

@admins = rw

user3 = rw

user4 = r

* =

[repos:/]

@admins = rw

* = rw

注意:配置auth 、passwd和svnserve.conf一定要心细,否则客户端访问时会认证失败,svn默认端口是3690

SVN钩子的介绍和使用

介绍:

SVN钩子就是被版本库事件触发的程序或脚本,例如新修订版本的创建,或是未版本化属性的修改。每个钩子都会被告知足够多的信息,包括那是什么事件,所操作的对象,和触发事件的用户名。通过钩子的输出或返回状态,钩子程序能让工作继续、停止或是以某种方式挂起。通常在版本库里的hooks目录里

post-commit.tmpl         pre-revprop-change.tmpl
post-revprop-change.tmpl start-commit.tmpl
pre-commit.tmpl

对每种Subversion版本库支持的钩子的都有一个模板,通过查看这些脚本的内容,你能看到是什么事件触发了脚本及如何给传脚本传递数据。同时,这些模版也是如何使用这些脚本,结合Subversion支持的工具来完成有用任务的例子。要实际安装一个可用的钩子,你需要在 hooks目录下安装一些与钩子同名(如 start-commit或者post-commit)的可执行程序或脚本。
提示
由于安全原因,Subversion版本库在一个空环境中执行钩子脚本—就是没有任何环境变量,甚至没有$PATH或%PATH%。由于这个原因,许多管 理员会感到很困惑,它们的钩子脚本手工运行时正常,可在Subversion中却不能运行。要注意,必须在你的钩子中设置好环境变量或为你的程序指定好绝对路径。

start-commit.tmpl
它在提交事务产生前已运行,通常用来判定一个用户是否有权提交。版本库传给该程序两个参数:到版本库的路径,和要进行提交的用户名。如果程序返回一个非零值,会在事务产生前停止该提交操作。如果钩子程序要在stderr中写入数据,它将排队送至客户端。

pre-commit.tmpl
在事务完成提交之前运行,通常这个钩子是用来保护因为内容或位置(例如,你要求所有到一个特定分支的提交必须包括一个bug追踪的ticket号,或者是 要求日志信息不为空)而不允许的提交。版本库传递两个参数到程序:版本库的路径和正在提交的事务名称,如果程序返回非零值,提交会失败,事务也会删除。如果钩子程序在stderr中写入了数据,也会传递到客户端。

Subversion的分发版本包括了一些访问控制脚本(在Subversion源文件目录树的tools/hook-scripts目录),可以用来被 pre-commit调用来实现精密的写访问控制。另一个选择是使用Apache的httpd模块mod_authz_svn,可以对单个目录进行读写访问控制

post-commit.tmpl
它在事务完成后运行,创建一个新的修订版本。大多数人用这个钩子来发送关于提交的描述性电子邮件,或者作为版本库的备份。版本库传给程序两个参数:到版本库的路径和被创建的新的修订版本号。退出程序会被忽略。

Subversion分发版本中包括mailer.py和commit-email.pl脚本(存于Subversion源代码树中的 tools/hook-scripts/目录中)可以用来发送描述给定提交的email(并且或只是追加到一个日志文件),这个mail包含变化的路径清 单,提交的日志信息、日期和作者以及修改文件的GNU区别样式输出。

Subversion提供的另一个有用的工具是hot-backup.py脚本(在Subversion源代码树中的tools/backup/目录 中)。这个脚本可以为Subversion版本库进行热备份(Berkeley DB数据库后端支持的一种特性),可以制作版本库每次提交的快照作为归档和紧急情况的备份。

pre-revprop-change.tmpl
因为Subversion的修订版本属性不是版本化的,对这类属性的修改(例如提交日志属性 svn:log)将会永久覆盖以前的属性值。因为数据在此可能丢失,所以Subversion提供了这种钩子(及与之对应的post-revprop- change),因此版本库管理员可用一些外部方法记录变化。作为对丢失未版本化属性数据的防范,Subversion客户端不能远程修改修订版本属性, 除非为你的版本库实现这个钩子。

这个钩子在对版本库进行这种修改时才会运行,版本库给钩子传递四个参数:到版本库的路径,要修改属性的修订版本,经过认证的用户名和属性自身的名字。

post-revprop-change.bat
我们在前面提到过,这个钩子与pre-revprop-change对应。事实上,因为多疑的原因,只有存在pre-revprop-change时这个 脚本才会执行。当这两个钩子都存在时,post-revprop-change在修订版本属性被改变之后运行,通常用来发送包含新属性的email。版本 库传递四个参数给该钩子:到版本库的路径,属性存在的修订版本,经过校验的产生变化的用户名,和属性自身的名字。

Subversion分发版本中包含propchange-email.pl脚本(在Subversion源代码树中的tools/hook- scripts/目录中),可以用来发送修订版本属性修改细节的email(并且或只是追加到一个日志文件)。这个email包含修订版本和发生变化的属性名,作出修改的用户和新属性值。

警告

不要尝试用钩子脚本修改事务。一个常见的例子就是在提交时自动设置svn:eol-style或svn:mime-type这类属性。这看起来是个好主 意,但它会引起问题。主要的问题是客户并不知道由钩子脚本进行的修改,同时没有办法通告客户它的数据是过时的,这种矛盾会导致出人意料和不能预测的行为。

作为尝试修改事务的替代,我们通过检查pre-commit钩子的事务,在不满足要求时拒绝提交。
Subversion会试图以当前访问版本库的用户身份执行钩子。通常,对版本库的访问总是通过ApacheHTTP服务器和mod_dav_svn进行,因此,执行钩子的用户就是运行Apache的用户。钩子本身需要具有操作系统级的访问许可,用户可以运行 它。另外,其它被钩子直接或间接使用的文件或程序(包括Subversion版本库本身)也要被同一个用户访问。换句话说,要注意潜在的访问控制问题,它 可能会让你的钩子无法按照你的目的顺利执行

SVN客户端的使用

linux客户端使用

1.将svn中的资源池同步到本地

svn checkout path(path是服务器上的目录)  本地目录

svn checkout svn://172.16.254.4/project//project

或 svn co svn://172.16.254.4/project/ /project

2.将本地资源导入到svn中

svn import localdir svn://ip/dir

3.将本地新创建的文件添加到svn中

svn add file

4.将改动的文件提交到版本库中

svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)

例如:svn commit -m “addtest file for my test“ test.php

简写:svn ci

5、Linux命令行下的加锁/解锁

svn lock -m “LockMessage“ [--force] PATH

例如:svn lock -m “locktest file“ test.php

svn unlock PATH

6、Linux命令行下更新到某个版本

svn update -r m path

例如:

svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。

svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)

svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)

简写:svn up

7、Linux命令行下查看文件或者目录状态

1)svn statuspath(目录下的文件和子目录的状态,正常状态不显示)

【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】

2)svn status-v path(显示文件和子目录状态)

第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。

注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。

简写:svn st

8、Linux命令行下删除文件

svn delete path -m “delete test fle“

例如:svn deletesvn://192.168.1.1/pro/domain/test.php -m “delete testfile”

或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种

简写:svn (del, remove, rm)

9、Linux命令行下查看日志

svn log path

例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化

10、Linux命令行下查看文件详细信息

svn info path

例如:svn info test.php

11、Linux命令行下比较差异

svn diff path(将修改的文件与基础版本比较)

例如:svn diff test.php

svn diff -r m:n path(对版本m和版本n比较差异)

例如:svn diff -r 200:201 test.php

简写:svn di

12、Linux命令行下将两个版本之间的差异合并到当前文件

svn merge -r m:n path

例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)

13、Linux命令行下SVN 帮助

svn help

svn help ci

14、Linux命令行下版本库下的文件和目录列表

svn list path

显示path目录下的所有属于版本库的文件和目录

简写:svn ls

15、Linux命令行下恢复本地修改

svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:

用法: revert PATH…

注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录

windows客户端使用

1.安装

客户端程序

TortoiseSVN-1.6.8.19260-win32-svn-1.6.11.msi

中文支持包:

LanguagePack_1.6.8.19260-win32-zh_CN.msi

安装完成后,在资源浏览器中,点击鼠标右键,如下图所示:

2. 中文设置

在语言设置中,设置使用中文。

3. 基本工作流程

1)        检出工作副本

2)        更新工作副本

3)        产生更改

4)        查看更改

5)        合并其他人的改动

6)        提交改动

4. 检出工作副本

将后台svn服务器,检出到本地目录:

版本库URL为:svn://192.168.237.5/windows

指定输出的目录。

输入用户、口令(SVN后台服务器分配的用户、口令,请联系相关系统管理员获取)

钩选“保存认证”,下次打开不需要再输入用户、口令信息。

点击“确定”后,会下载文件至本地。

5.更新工作副本

选中工作副本目录,右键点击“SVN更新”获取当前最新版本代码。

6. 产生更改、提交改动

增加文件:将文件拷贝到工作副本目录下,右键“TortoiseSVN”>“增加”

提交改动:右键选中文件,点击“SVN提交”

说明本次版本变更情况,并确定后提交。

提交成功后,会显示当前版本号:

删除文件:选中文件后,点击“TortoiseSVN”>“删除”

完成后必须点击“SVN提交”才能删除。

SVN实现本地提交目录之后自动同步到远程服务器上

思路:

方法一:本地成功向SVN提交之后,会触动post-commit钩子,然后post-commit钩子会先在本地checkout出svn中的资源,最后调用rsync脚本进行把本地文件推送到远程服务器上。

方法二:本地成功向SVN提交之后,会触动post-commit钩子,不在本地checkout,直接使用ssh调用远程服务器上的svn update命令来同步svn库中的资源,前提是远程服务器需要先checkout svn中的资源

总之关键在于远程设备上同步目录的权限设定和post-commit钩子的编写

1.做ssh免交互式验证登录

2.编写脚本和钩子

方法一的脚本

Post-commit脚本
#!/bin/bash
#date: 2014年07月18日
REPOS="$1"
REV="$2"
export.UTF-8
/usr/local/svn/bin/svn update--username www --password 123456789.com /data/jxq_web/3g.club.xywy.com
if [ $? == 0 ]
then
    chown -R www:develop/data/jxq_web/3g.club.xywy.com
    /bin/sh/shell/jxq_rsync-script/3g.club.xywy.com.sh > /dev/null 2>&1
fi
rsync脚本
#/bin/bash
#date: 2014年02月17日
#client--->server
#define variables
IP="118.244.192.243"
Auth_module="3g.club.xywy.com"
Localdir="/data/jxq_web/3g.club.xywy.com/"
Auth_user="xywy_svn_user"
Passwd_file="/shell/rsync-password/rsync.password"
Exc=" --exclude=.svn --exclude=cache/--exclude=application/logs/ --exclude=www/dianshang --exclude=www/robots.txt"
rsync -vzrtopgl --progress--delete ${Exc} ${Localdir} [email protected]${IP}::${Auth_module}--password-file=${Passwd_file}

方法二脚本

#!/bin/bash
REPOS="$1"                  # 仓库的路径
REV="$2"                    # 新提交的版本号
LOGFILE=/var/log/svn.log    # 钩子脚本的日志
# 脚本的标准输出和标准错误输出都打印到日志文件里
exec1>>"$LOGFILE"
exec 2>&1
 
SVNLOOK=/usr/bin/svnlook
TIME=$(date "+%Y-%m-%d%H:%M:%S")
AUTHOR=$($SVNLOOK author -r$REV "$REPOS")  #提交作者
CHANGEDDIRS=$($SVNLOOKdirs-changed $REPOS) #修改的目录集合
MESSAGE=$($SVNLOOK log -r$REV "$REPOS")    #提交时的备注信息,不建议用中文
 
# SVN客户端配置,需要自行修改**********************************
CLIENT1=172.16.254.3        #project1的服务器
CLIENT2=172.16.254.5        #project2的服务器
CLIENTSVNROOT=/usr/local/haproxy
   #WEB服务器的代码根目录
SVNUSER="fuzj"
SVNPASSWD="fuzj123"
#**************************************************************
 
function myecho() {
    echo "$TIME" "$*"
}
 
myecho "**************************************************************"
myecho "提交版本:$REV 作者:$AUTHOR"
myecho "提交备注:$MESSAGE"
myecho "修改目录:$(echo $CHANGEDDIRS | tr ‘\n‘ ‘ ‘)"
 
MASTERDIR=$(echo"$CHANGEDDIRS" | head -1) #CHANGEDDIRS里的最上级目录
# 遍历提交的代码目录,同步到WEB服务器上
while ["$CHANGEDDIRS" != "" ];do
    PROJECT=$(echo $MASTERDIR | awk -F /‘{print $1}‘) 
    # 判断项目文件夹
    if [ "$PROJECT" =="tage" ];then
        myecho
        myecho "项目:$PROJECT 同步目录:$MASTERDIR"
   #    myecho "同步 $MASTERDIR 到 $CLIENT1:$CLIENTSVNROOT/$MASTERDIR"
       myecho "同步 $MASTERDIR 到 $CLIENT1:$CLIENTSVNROOT"
        # 无密码ssh连接到客户端服务器,执行svn up
        /usr/bin/ssh [email protected]$CLIENT1 "exportLANG=en_US.UTF-8; svn up --non-interactive --username $SVNUSER --password$SVNPASSWD ‘$CLIENTSVNROOT‘"
    elif [ "$PROJECT" =="trunk" ];then
        myecho
        myecho "项目:$PROJECT 同步目录:$MASTERDIR"
        myecho "同步 $MASTERDIR 到$CLIENT2:$CLIENTSVNROOT/$MASTERDIR"
        /usr/bin/ssh [email protected]$CLIENT2 "exportLANG=en_US.UTF-8; svn up --non-interactive --username $SVNUSER --password$SVNPASSWD ‘$CLIENTSVNROOT‘"
    fi
    # 在目录集合里删除子目录
    CHANGEDDIRS=$(echo "$CHANGEDDIRS"| grep -v "^$MASTERDIR")
    # 获取新的需要同步的最上级目录
    MASTERDIR=$(echo "$CHANGEDDIRS" |head -1)
done
时间: 2024-10-02 23:21:12

SVN的介绍和使用的相关文章

02~ 一步一步教你使用 SVN之SVN 的介绍

SVN的介绍 一.学习SVN的主要内容的介绍 1.基本操作:学习SVN有哪些基本操作 2.服务器端的安装配置:SVN中必不可少的2个环境之一,会在下面的课程中介绍服务器如何去安装和配置 3.客户端软件的使用:在实际开发中,使用客户端软件来操作SVN也变得很常见,也是项目经理或者技术总监经常会使用到的工具,主要是为了初始化项目,以及忽略一些不需要上传的文件,后面的课程会详细演示 4.与Xcode的集成:随着Xcode升级,目前xcode对svn的集成越来越好,后面的课程也会详细演示如何使用xcod

SVN基本介绍

SVN是一种项目合作开发的软件,参与项目的人员可以在不同的地方实现文件和目录的超时空共享. 两个重要的概念: 1.配置库(Repository) SVN的核心是配置库,储存所有的数据,配置库按照文件树形式储存数据-包括文件和目录,任意数量的客户端可以连接到配置库,读写这些文件.通过写数据,这些信息就会共享,别人可以看到这些信息:通过读数据,可以看到别人的修改. 打开VisualSVN Server,就可以看到配置库. 2.工作副本(WorkSpace) 每个人的工作空间,它是每个程序员工作的地方

关于git和SVN的介绍和区别

主要对git,svn进行一个简单的介绍. 顺带,我会在后面把我整理的一整套CSS3,PHP,MYSQL的开发的笔记打包放到百度云,有需要可以直接去百度云下载,这样以后你们开发就可以直接翻笔记不用百度搜那么麻烦了.  笔记链接:http://pan.baidu.com/s/1qYdQdKK 密码:pvj2   一.git.cvs.svn的区别 cvs.svn都是集中式的版本控制系统,而git是分布式版本管理系统. 集中式版本控制系统: 集中式版本控制系统,版本库是集中存放在中央服务器的,而大家工作

一、svn 基本原理介绍

一.svn介绍 概念:       svn(subversion)是一个跨平台的版本管理系统,类似一个文件服务器,但是可以记录每个文件的每一次修改更新记录,这样就可以回退到到任意时刻的旧的版本,可以用来管理程序源码.其他文件类型(文本.视频.图片等等): 官方网站: svn官方网站: http://subversion.apache.org/  OR  http://subversion.tigris.org/(已被锁定) svn中文网站:http://www.iusesvn.com/ (垃圾,

版本管理种类与Svn工具介绍(一)

什么是SVN(Subversion)? Svn(Subversion)是近年来崛起的非常优秀的版本管理工具,与CVS管理工具一样,SVN是一个跨平台的开源的版本控制系统.Svn版本管理工具随着时间改变的各种数据.这些数据都放置在一个中央资料档案库(repository)中,这个档案库很像一个普通文件的服务器或者FTP服务器,但是,与其他服务器不同的是,SVN会备份并记录每个文件每一次的修改更新变动.这样我们就可以把任意一个时间点的档案恢复到想要的某一个旧的版本,当然也可以直接浏览指定文件的更新历

svn详细介绍,独立安装配置,hooks的配置管理以及大型门户网站代码上线流程

代码发布方案: 1,安装,优化 软件环境,(nginx,lvs)  <-------运维工程师 2,程序代码(不断更新).   <--------开发工程师,(开发,运维都可以发布) 3,配置变更(不断变更).   <--------运维工程师. 一.版本控制管理工具SVN详解 1.1 什么是SVN(subversion) ? SVN是近年来非常优秀的版本管理工具,与CSV管理工具一样,SVN是一个跨平台开元版本控制系统,但是SVN与众不同的是,SVN会备份并记 录每个文件每一次的修改更

svn简单介绍

版本号控制(Revision control)是维护project蓝图的标准做法,能追踪project蓝图从诞生一直到定案的过程.是一种记录若干文件内容变化.以便将来查阅特定版本号修订情况的系统. 能够简单理解: 版本号控制工具:就是控制我们项目开发的代码.管理这些代码.使这些代码可以协调工作.形成一个完整的总体:可以上传代码,更新最新代码到本地: 详细做法: 三个人开发各自的代码,引入一台专门的server,SVN Server,一人开发代码.本地开发完直接上传到server(commit),

svn使用教程各种杂七杂八!

1.svn环境搭建 在应用myEclips 8.5做项目时,svn会成为团队项目的一个非常好的工具,苦苦在网上寻求了一下午,终于整合好了这个环境,在这里简单介绍下,希望能为刚开始用svn的朋友一点点帮助. svn环境需要(1)服务器端(2)客户端(3)应用在myeclipse中的svn插件 第一步,安装svn服务器端.我用的是VisualSVN-Server-2.1.3这个版本的. 安装完后,打开VisualSVN-Server,创建一个根目录test,则这个目录在服务器的地址 为:https:

Java SVN管理工具的使用

1.svn环境搭建 在应用myEclips 8.5做项目时,svn会成为团队项目的一个非常好的工具,苦苦在网上寻求了一下午,终于整合好了这个环境,在这里简单介绍下,希望能为刚开始用svn的朋友一点点帮助. svn环境需要(1)服务器端(2)客户端(3)应用在myeclipse中的svn插件 第一步,安装svn服务器端.我用的是VisualSVN-Server-2.1.3这个版本的. 安装完后,打开VisualSVN-Server,创建一个根目录test,则这个目录在服务器的地址 为:https: