- 浏览: 270483 次
- 性别:
- 来自: 新乡
文章分类
- 全部博客 (227)
- servciemix (10)
- db (18)
- javaTools (4)
- hibernate (31)
- web (3)
- spring (14)
- design pattern (4)
- java security (3)
- portal (1)
- ejb (6)
- session (2)
- java_lang (21)
- jbpm (29)
- struts (7)
- orgRights (2)
- project manager Jira (7)
- 跨库事务 (2)
- mysql (14)
- ubuntu (7)
- osgi (9)
- maven ant make (4)
- 分布式 高并发 高性能 (5)
- virgo-dm_server (0)
- osgi web (3)
- platform (1)
- smooks (1)
- business (1)
- 职场生涯 (14)
- Java编码格式 (2)
- web服务 (1)
- 计算机使用 (1)
- 健康工作生活的保障,工作中务必抛掉的不良心态 (4)
- 电信-网络监控 (1)
- 多线程-multithread (1)
- 海量数据-高性能 (2)
- Mybatis (1)
- web开发平台研发 (0)
- oracle (0)
- 应用服务器调优 (0)
- web前端 (0)
- servlet-jsp (0)
- tomcat (2)
- newtouch (1)
- portal_liferay (2)
- version control (1)
- apm-impact (2)
- tools (1)
- 研发管理 (1)
- 电商业务 (1)
- 生鲜电商市场调查 (0)
- PBX (0)
- 房东 (0)
最新评论
-
lifuchao:
...
权限问题 -
Branding:
谢谢,受教了,另外,CONN AS SYSDBA,必须是在操作 ...
Oracle密码忘记了怎么办? -
zhuchao_ko:
...
Portal实现原理 -
败类斯文:
不知道改哪里。。。木有见到红色。。表示悟性低了、、
jira error: Neither the JAVA_HOME nor the JRE_HOME environment variable is defin -
c__06:
正文:假如事务我是这样定义的: <tx:method n ...
Spring中Transactional配置
Ubuntu 10.04学习笔记(4)——Subversion+RabbitVCS 版本控制
2011年04月19日 星期二 17:28
1、安装Subversion软件
sudo apt-get install apache2 %先安装apache,配合阅读svn用,并且平时开发也是要用到的
sudo apt-get install subversion %svn
sudo apt-get install libapache2-svn %svn中apache的库
sudo /etc/init.d/apache2 restart (重启apache服务器) %测试一下apache是否运行正常,记住这条命令,会经常用到
2、创建仓库
许多位置都可以放置 Subversion 文件仓库,其中两个最常用的是:/usr/local/svn 以及 /home/svn。为了在下面的描述中简单明了,我们假设您的 Subversion 文件仓库放在 /home/svn,并且你的项目名称是简单的“Repository”。
sudo svnadmin create --fs-type fsfs /home/svn/Repository
# 运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb
# /home/svn/Repository 为所创建仓库的路径,理论上可以是任何目录
同样的,也有许多常用的方式设置文件仓库的访问权限。然而,这也是安装过程中最经常出现错误的地方。通常的情况下,应该创建一个名为“Subversion”的用户组,该组是SVN仓库所在的目录的拥有者。下面是一个快速的操作说明,有关内容请参考相关文档的详细说明:
* 在 Ubuntu 菜单上选择“系统->系统管理->用户和组”;
* 切换到“组”标签;
* 点击“添加组”按钮;
* 组名为“subversion”;
* 将您自己和“www-data”(Apache 用户)加入组成员中;
* 点击“OK”以确认修改,关闭该程序。
或者使用命令完成上述功能(增加组,并且把用户加到组里):
sudo addgroup subversion
sudo usermod -G subversion -a www-data
再或者直接使用命令编辑组文件"sudo vi /etc/group",增加组和成员(不推荐):
$ sudo vi /etc/group
结果看上去,像这样。
$ cat /etc/group|grep subversion
subversion:x:1001:www-data,exp
您需要注销然后再登录以便您能够成为 subversion 组的一员,然后就可以执行签入文件(Check in,也称提交文件)的操作了。
现在执行下面的命令
$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo mkdir Repository
$ sudo chown -R root:subversion Repository
下面的命令用于创建 SVN 文件仓库:
$ sudo svnadmin create /home/svn/Repository
赋予组成员对所有新加入文件仓库的文件拥有相应的权限:
$ sudo chmod -R g+rws Repository
如果上面这个命令在创建SVN文件仓库之前运行,你可能在后续Check in的时候遇到如下错误:
Can't open '/home/svn/Repository/db/txn-current-lock': Permission denied
查看txn-current-lock文件的权限和用户以及组信息,应该类似于:
$ ls -l /home/svn/Repository/db/txn-current-lock -rw-rwSr-- 1 root subversion 0 2009-06-18 15:33 txn-current-lock
除了权限以外,用户及其组如果不对,则仍然会遇到上述问题,可以再次运行命令:
$ sudo chown -R root:subversion Repository
3、修改配置文件/var/svn/conf/svnserve.conf
sudo gedit /home/svn/Repository/conf/svnserve.conf
1. #去掉#[general]前面的#号
2. [general]
3. #匿名访问的权限,可以是read,write,none,默认为read
4. anon-access = none
5. #认证用户的权限,可以是read,write,none,默认为write
6. auth-access = write
7. #密码数据库的路径,去掉前面的#
8. password-db = passwd
注意:所有的行都必须顶格,否则报错。
4、修改配置文件passwd
sudo gedit /home/svn/Repository/conf/passwd
1. [users]
2. svnuser = password
3. jesszjessz = jessz
注意:
◆一定要去掉[users]前面的#,否则svn只能以匿名用户登录,客户端不会出现登录窗口,除非你的anon不为none,否则将返回一个错误。
◆这里的密码都是没有加密的。
5、停止Subversion服务器:killall svnserve
6、启动Subversion服务器
对于单个代码仓库,启动命令:svnserve -d -r /home/svn/Repository --listen-host 10.19.3.103
其中-d表示在后台运行,-r指定服务器的根目录,这样访问服务器时就可以直接 用svn://服务器ip来访问了。
如果服务器有多ip的话–listen-host来指定监听的ip地址. 我们可以在Subversion客户端中通过svn://10.19.3.103来访问Subversion服务器.对于多个代码仓库,我们在启动时也可以用-r选项来指定服务器根目录,但访问时需要写上每个仓库相对于svn根目录的相对路径. 比如,我们有两个代码仓库/var/vss/repo1 和/var/vss/repo2,我们用 svnserve -d -r /var/vss –listen-host 10.19.3.103来启动,那么在客户端访问时可以用svn://10.19.3.103/repo1和svn: //10.19.3.103/repo2来分别访问两个项目。
Subversion 文件仓库可以通过许多不同的方式进行访问(Check Out,签出)——通过本地硬盘,或者通过各种网络协议。无论如何,文件仓库的位置总是使用 URL 来表示。下表显示了不同的 URL 模式对应的访问方法:
模式 访问方法
file:/// 直接访问本地硬盘上文件仓库
http:// 通过 WebDAV 协议访问支持 Subversion 的 Apache 2 Web 服务器
https:// 类似 http://,支持 SSL 加密
svn:// 通过自带协议访问 svnserve 服务器
svn+ssh:// 类似 svn://,支持通过 SSH 通道
1)直接访问文件仓库(file://)
这是所有访问方式中最简单的。它不需要事先运行任何 SVN 服务。这种访问方式用于访问本地的 SVN 文件仓库。语法是:
$ svn co file:///home/svn/Repository
或者
$ svn co file://localhost/home/svn/Repository
注意:如果您并不确定主机的名称,您必须使用三个斜杠(///),而如果您指定了主机的名称,则您必须使用两个斜杠(//).
对文件仓库的访问权限基于文件系统的权限。如果该用户具有读/写权限,那么他/她就可以签出/提交修改。如果您像前面我们说描述的那样设置了相应的组,您可以简单的将一个用户添加到“subversion”组中以使其具有签出和提交的权限。
通过 WebDAV 协议访问(http://)
要通过 WebDAV 协议访问 SVN 文件仓库,您必须配置您的 Apache 2 Web 服务器。执行下面的命令,配置apache启动时加载dav模块
cd /etc/apache2/mods-enabled
sudo ln -s ../mods-available/dav.load dav.load
sudo ln -s ../mods-available/dav_svn.conf dav_svn.conf
sudo ln -s ../mods-available/dav_svn.load dav_svn.load
编辑加入下面的代码片段到 /etc/apache2/httpd.conf中:
#LoadModule dav_module modules/mod_dav.so %加载mod_dav模块
#LoadModule dav_svn_module modules/mod_dav_svn.so %加载mod_dav_svn模块
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so %加载mod_anthz.svn模块
<Location /Repository> % location标签头
DAV svn
SVNPath /home/svn/Repository %指明版本库的路径
AuthType Basic %认证类型为基本认证
AuthName "SVN Repository" %认证名称,将在IE界面弹出一个对话框,其标题就是SVN Repository
AuthUserFile /home/svn/Repository/RepositoryPasswdFile %加载密码文件
# AuthzSVNAcessFile //home/svn//Repository/accesspolicy
# satisfy Any
# Require valid-user %要求验证用户,即不能匿名访问
</Location> %location标签尾
加#号的语句被注释掉了!如果有两个以上的版本库,可以针对每个版本库添加不同的location标签,两个互不影响。
配置完成后,您必须重新起动 Apache 2 Web 服务器,请输入下面的命令:
sudo /etc/init.d/apache2 restart
就可以在http://localhost/Repository访问svn库了,编辑一下/var/www/index.html文件,加上个链接,可以使自己方便些。
接下来,您需要创建 /etc/subversion/passwd 文件,该文件包含了用户授权的详细信息。要添加用户,您可以执行下面的命令:
sudo htpasswd -c /etc/subversion/passwd user_name
它会提示您输入密码,当您输入了密码,该用户就建立了。“-c”选项表示创建新的/etc/subversion/passwd文件,所以user_name所指的用户将是文件中唯一的用户。如果要添加其他用户,则去掉“-c”选项即可:
sudo htpasswd /etc/subversion/passwd other_user_name
您可以通过下面的命令来访问文件仓库:
$ svn co http://hostname/svn/myproject myproject --username user_name
它会提示您输入密码。您必须输入您使用 htpasswd 设置的密码。当通过验证,项目的文件就被签出了。
警告:密码是通过纯文本传输的。如果您担心密码泄漏的问题,我们建议您使用 SSL 加密。
通过具有安全套接字(SSL)的 WebDAV 协议访问(https:// )
通过具有 SSL 加密的 WebDAV 协议访问 SVN 文件仓库(https:// )非常类似上节所述的内容,除了您必须为您的 Apache 2 Web 服务器设置数字证书之外。
您可以安装由诸如 Verisign 发放的数字签名,或者您可以安装您自己的数字签名。
我们假设您已经为 Apache 2 Web 服务器安装和配置好了相应的数字证书。现在按照上一节所描述的方法访问 SVN 文件仓库,别忘了把 http:// 换成 https://。如何,几乎是一模一样的!
通过自带协议访问(svn://)
当您创建了 SVN 文件仓库,您可以修改 /home/svn/myproject/conf/svnserve.conf 来配置其访问控制。
例如,您可以取消下面的注释符号来设置授权机制:
# [general]
# password-db = passwd
现在,您可以在“passwd”文件中维护用户清单。编辑同一目录下“passwd”文件,添加新用户。语法如下:
username = password
#(注意行开始不要有多余空格)
要了解详情,请参考该文件。
现在,您可以在本地或者远程通过 svn://访问 SVN 了,您可以使用“svnserve”来运行 svnserver,语法如下:
$ sudo svnserve -d --foreground -r /home/svn
# -d -- daemon mode
# --foreground -- run in foreground (useful for debugging)
# -r -- root of directory to serve
要了解更多信息,请输入:
$ svnserve --help
当您执行了该命令,SVN 就开始监听默认的端口(3690)。您可以通过下面的命令来访问文件仓库:
$ svn co svn://hostname/myproject myproject --username user_name
基于服务器的配置,它会要求输入密码。一旦通过验证,就会签出文件仓库中的代码。
要同步文件仓库和本地的副本,您可以执行 update 子命令,语法如下:
$ cd project_dir
$ svn update
要了解更多的 SVN 子命令,您可以参考手册。例如要了解 co (checkout) 命令,请执行:
$ svn co --help
或者这样
$ svn --help commit
或者直接
svn help co
checkout (co): 从版本库签出工作副本。
使用: checkout URL[@REV]... [PATH]
一个实例:
killall svnserve; svnserve -d -r /home/svn/
/home/svn/lj12-source/conf ☎ dog *
authz:[groups]
authz:lj12 = veexp
authz:[lj12-source:/] <-注意写法。
authz:veexp = rw
authz:@lj12 = rw
authz:* = passwd:[users] <-2个用户和密码。
passwd:veexp = icep
passwd:test = test
svnserve.conf:[general]
svnserve.conf:anon-access = none
svnserve.conf:auth-access = write
svnserve.conf:password-db = passwd
svnserve.conf:authz-db = authz <-如果不启用authz,则test也可以取出。
☎ svn co svn://localhost/lj12-source --username veexp
认证领域: <svn://localhost:3690> a712643f-661e-0410-8ad4-f0554cd88977
用户名: veexp “veexp”的密码:
A lj12-source/tim.h A lj12-source/en.c
......
认证失败的密码缓冲记录位置,明文密码。到1.6版本,可能使用keyring管理。如果调试密码,直接删除如下文件就可。
~/.subversion/auth/svn.simple/:
eea34a6f7baa67a3639cacd6a428dba4
通过具被SSH隧道保护的自带协议访问(svn+ssh://)
配置和服务器进程于上节所述相同。我们假设您已经运行了“svnserve”命令。
我们还假设您运行了 ssh 服务并允许接入。要验证这一点,请尝试使用 ssh 登录计算机。如果您可以登录,那么大功告成,如果不能,请在执行下面的步骤前解决它。
svn+ssh:// 协议使用 SSH 加密来访问 SVN 文件仓库。如您所知,数据传输是加密的。要访问这样的文件仓库,请输入:
$ svn co svn+ssh://hostname/home/svn/myproject myproject --username user_name
注意:在这种方式下,您必须使用完整的路径(/home/svn/myproject)来访问 SVN 文件仓库
基于服务器的配置,它会要求输入密码。您必须输入您用于登录 ssh 的密码,一旦通过验证,就会签出文件仓库中的代码。
您还应该参考 SVN book 以了解关于 svn+ssh:// 协议的详细信息。
7、配置svn服务随系统启动
创建/etc/init.d/svnserve文件,文件中包含如下内容:
#!/bin/sh
/usr/bin/svnserve -d -r /home/svn/
执行
sudo chmod a+x /etc/init.d/svnserve
在启动阶段2中启动,具体配置方法为运行命令:
cd /etc/rc2.d
sudo ln -s /etc/init.d/svnserve S92svnserve
这样,svn就会随系统在开机时候启动啦。可以自己手动运行一下立即启动,将项目导入到svn库中使用svn import命令
8、客户端RabbitVCS
具体安装参见 http://wiki.rabbitvcs.org/wiki/install/ubuntu
首先在源里添加:
sudo add-apt-repository ppa:rabbitvcs/ppa
sudo apt-get update
sudo apt-get install rabbitvcs-core rabbitvcs-nautilus rabbitvcs-thunar rabbitvcs-gedit rabbitvcs-cli
安装完毕后,注销,重新登录,在文件夹和文件夹内点击鼠标右键就可用RabbitVCS操作了。
9、自动网络备份
在home/jerry文件夹(输入cd回车就进入了)中建立cron目录,建立一个svnbackup.sh文件,内容如下:
#!/bin/sh
projects=”Repository redirecter”
svnroot=”/svn”
backdir=”/home/jerry/Dropbox/code/svnbackup”
date=`date +%Y%m%d`
for project in $projects
do
/usr/bin/svnadmin dump $svnroot/$project > $backdir/${project}_$date
done
其中projects里面可以配置你的多个工程。
执行crontab -e,输入如下内容:
0 22 * * 6 (cd /home/jerry/cron && /home/jerry/cron/svnbackup.sh)
/home/jerry/cron/是home文件夹的路径,记得添加时候修改。
dropbox是一个跨平台的,多pc自动同步文件软件,在国内的下载速度可以达到500kB以上(公司的网络比较快哈,在家里用,一般就是133kB),十分强大。就用它来备份svn库再好不过了。注册账号,下载软件
这样就全都搞好了,每周六的22点就会自动帮你备份好svn,dropbox也会帮你把svn库传到你的账号中存好。如果你在自己的多台电脑上都安装了dropbox,每台电脑都会自动拥有svn备份数据(dropbox网络上也有一份)。想修改备份的时间,请参考crontab
10、svn dump 全自动备份脚本
From: http://carywu.blog.51cto.com/13185/207571
shell功能:
这个脚本完成的主要工作是先用svnadmin hotcopy命令备份代码仓库到指定目录,用tar打包保存;另一项工作是会删除10天前(因为我选择的是每天备份,你可以根据需要制定自己的方案)的副本。以下脚本命名保存为backup.sh。
#!/bin/bash
project="Repository"
date=`date +%Y%m%d`
log=/home/jerry/svnback/cpreport.log
SRCPATH=/home/jerry/svn/Repository
backdir=/home/jerry/svnback
DISTPATH=/home/jerry/svnback/`date +%Y%m%d`
SVNADMIN=/usr/bin/svnadmin
echo " - BACKUP START ----------------- "
echo " - BACKUP START ----------------- " >> $log
# omit request in the same day
if [ -d $DISTPATH ]
then
echo `date +"%y-%m-%d %H:%M:%S"`" backupfile [$DISTPATH] has exist!"
echo `date +"%y-%m-%d %H:%M:%S"`" backupfile [$DISTPATH] has exist!" >> $log
# backup repos with `svnadmin hotcopy'
else
mkdir $DISTPATH
chmod g+s $DISTPATH
mkdir $DISTPATH/Repository
chmod g+s $DISTPATH/Repository
svnadmin hotcopy $SRCPATH $DISTPATH/Repository >>$log 2>&1
#svnadmin hotcopy $SRCPATH/Project2 $DISTPATH/Project2
echo `date +"%y-%m-%d %H:%M:%S"`" backup [$project] done into [$DISTPATH]"
echo `date +"%y-%m-%d %H:%M:%S"`" backup [$project] done into [$DISTPATH]" >> $log
# compress backup data
cd $backdir
dumpfile=$date.$project.tar.gz
$SVNADMIN hotcopy $SRCPATH $project --clean-logs
tar -czvf $dumpfile $project > /dev/null
echo `date +"%y-%m-%d %H:%M:%S"`" compress [$DISTPATH] finished"
echo `date +"%y-%m-%d %H:%M:%S"`" compress [$DISTPATH] finished" >> $log
#remove temp project dir
rm -rf $project
fi
#运行删除脚本,对过期备份进行删除。
# remove old dump file [at most 10 copies store here]
olddump=$(date +%Y%m%d --date='10 days ago').$project.tar.gz
if [ -f $olddump ]
then
rm -f $olddump >> $log 2>&1
echo `date +"%y-%m-%d %H:%M:%S"`" [$olddump] delete success!" >> $log
else
echo `date +"%y-%m-%d %H:%M:%S"`" [$olddump] not exist!" >> $log
fi
echo " - BACKUP ENDED ----------------- "
echo " - BACKUP ENDED ----------------- " >> $log
简单测试通过后,就可以添加到crontab(crontab用于管理周期事务)了,第一次使用crontab -e命令时需要选择编辑器,编辑格式非常简单:
命令行:jerry@jerry-desktop:~$ crontab -e
显示:
no crontab for jerry - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano <---- easiest
3. /usr/bin/emacs23
4. /usr/bin/vim.basic
5. /usr/bin/vim.gnome
6. /usr/bin/vim.gtk
7. /usr/bin/vim.nox
8. /usr/bin/vim.tiny
Choose 1-8 [2]: 5 %根据自己的爱好选择
>>>> 下面是编辑的内容
1 # m h dom mon dow command
2 0 23 * * * /home/jerry/svn/Repository/backup.sh %24个小时更新一次
参见 http://www.chinaunix.net/jh/6/271992.html
>>>> 保存退出,自动加入事务列表
crontab: installing new crontab
>>>> 查看当前事务
$ crontab -l
2011年04月19日 星期二 17:28
1、安装Subversion软件
sudo apt-get install apache2 %先安装apache,配合阅读svn用,并且平时开发也是要用到的
sudo apt-get install subversion %svn
sudo apt-get install libapache2-svn %svn中apache的库
sudo /etc/init.d/apache2 restart (重启apache服务器) %测试一下apache是否运行正常,记住这条命令,会经常用到
2、创建仓库
许多位置都可以放置 Subversion 文件仓库,其中两个最常用的是:/usr/local/svn 以及 /home/svn。为了在下面的描述中简单明了,我们假设您的 Subversion 文件仓库放在 /home/svn,并且你的项目名称是简单的“Repository”。
sudo svnadmin create --fs-type fsfs /home/svn/Repository
# 运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb
# /home/svn/Repository 为所创建仓库的路径,理论上可以是任何目录
同样的,也有许多常用的方式设置文件仓库的访问权限。然而,这也是安装过程中最经常出现错误的地方。通常的情况下,应该创建一个名为“Subversion”的用户组,该组是SVN仓库所在的目录的拥有者。下面是一个快速的操作说明,有关内容请参考相关文档的详细说明:
* 在 Ubuntu 菜单上选择“系统->系统管理->用户和组”;
* 切换到“组”标签;
* 点击“添加组”按钮;
* 组名为“subversion”;
* 将您自己和“www-data”(Apache 用户)加入组成员中;
* 点击“OK”以确认修改,关闭该程序。
或者使用命令完成上述功能(增加组,并且把用户加到组里):
sudo addgroup subversion
sudo usermod -G subversion -a www-data
再或者直接使用命令编辑组文件"sudo vi /etc/group",增加组和成员(不推荐):
$ sudo vi /etc/group
结果看上去,像这样。
$ cat /etc/group|grep subversion
subversion:x:1001:www-data,exp
您需要注销然后再登录以便您能够成为 subversion 组的一员,然后就可以执行签入文件(Check in,也称提交文件)的操作了。
现在执行下面的命令
$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo mkdir Repository
$ sudo chown -R root:subversion Repository
下面的命令用于创建 SVN 文件仓库:
$ sudo svnadmin create /home/svn/Repository
赋予组成员对所有新加入文件仓库的文件拥有相应的权限:
$ sudo chmod -R g+rws Repository
如果上面这个命令在创建SVN文件仓库之前运行,你可能在后续Check in的时候遇到如下错误:
Can't open '/home/svn/Repository/db/txn-current-lock': Permission denied
查看txn-current-lock文件的权限和用户以及组信息,应该类似于:
$ ls -l /home/svn/Repository/db/txn-current-lock -rw-rwSr-- 1 root subversion 0 2009-06-18 15:33 txn-current-lock
除了权限以外,用户及其组如果不对,则仍然会遇到上述问题,可以再次运行命令:
$ sudo chown -R root:subversion Repository
3、修改配置文件/var/svn/conf/svnserve.conf
sudo gedit /home/svn/Repository/conf/svnserve.conf
1. #去掉#[general]前面的#号
2. [general]
3. #匿名访问的权限,可以是read,write,none,默认为read
4. anon-access = none
5. #认证用户的权限,可以是read,write,none,默认为write
6. auth-access = write
7. #密码数据库的路径,去掉前面的#
8. password-db = passwd
注意:所有的行都必须顶格,否则报错。
4、修改配置文件passwd
sudo gedit /home/svn/Repository/conf/passwd
1. [users]
2. svnuser = password
3. jesszjessz = jessz
注意:
◆一定要去掉[users]前面的#,否则svn只能以匿名用户登录,客户端不会出现登录窗口,除非你的anon不为none,否则将返回一个错误。
◆这里的密码都是没有加密的。
5、停止Subversion服务器:killall svnserve
6、启动Subversion服务器
对于单个代码仓库,启动命令:svnserve -d -r /home/svn/Repository --listen-host 10.19.3.103
其中-d表示在后台运行,-r指定服务器的根目录,这样访问服务器时就可以直接 用svn://服务器ip来访问了。
如果服务器有多ip的话–listen-host来指定监听的ip地址. 我们可以在Subversion客户端中通过svn://10.19.3.103来访问Subversion服务器.对于多个代码仓库,我们在启动时也可以用-r选项来指定服务器根目录,但访问时需要写上每个仓库相对于svn根目录的相对路径. 比如,我们有两个代码仓库/var/vss/repo1 和/var/vss/repo2,我们用 svnserve -d -r /var/vss –listen-host 10.19.3.103来启动,那么在客户端访问时可以用svn://10.19.3.103/repo1和svn: //10.19.3.103/repo2来分别访问两个项目。
Subversion 文件仓库可以通过许多不同的方式进行访问(Check Out,签出)——通过本地硬盘,或者通过各种网络协议。无论如何,文件仓库的位置总是使用 URL 来表示。下表显示了不同的 URL 模式对应的访问方法:
模式 访问方法
file:/// 直接访问本地硬盘上文件仓库
http:// 通过 WebDAV 协议访问支持 Subversion 的 Apache 2 Web 服务器
https:// 类似 http://,支持 SSL 加密
svn:// 通过自带协议访问 svnserve 服务器
svn+ssh:// 类似 svn://,支持通过 SSH 通道
1)直接访问文件仓库(file://)
这是所有访问方式中最简单的。它不需要事先运行任何 SVN 服务。这种访问方式用于访问本地的 SVN 文件仓库。语法是:
$ svn co file:///home/svn/Repository
或者
$ svn co file://localhost/home/svn/Repository
注意:如果您并不确定主机的名称,您必须使用三个斜杠(///),而如果您指定了主机的名称,则您必须使用两个斜杠(//).
对文件仓库的访问权限基于文件系统的权限。如果该用户具有读/写权限,那么他/她就可以签出/提交修改。如果您像前面我们说描述的那样设置了相应的组,您可以简单的将一个用户添加到“subversion”组中以使其具有签出和提交的权限。
通过 WebDAV 协议访问(http://)
要通过 WebDAV 协议访问 SVN 文件仓库,您必须配置您的 Apache 2 Web 服务器。执行下面的命令,配置apache启动时加载dav模块
cd /etc/apache2/mods-enabled
sudo ln -s ../mods-available/dav.load dav.load
sudo ln -s ../mods-available/dav_svn.conf dav_svn.conf
sudo ln -s ../mods-available/dav_svn.load dav_svn.load
编辑加入下面的代码片段到 /etc/apache2/httpd.conf中:
#LoadModule dav_module modules/mod_dav.so %加载mod_dav模块
#LoadModule dav_svn_module modules/mod_dav_svn.so %加载mod_dav_svn模块
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so %加载mod_anthz.svn模块
<Location /Repository> % location标签头
DAV svn
SVNPath /home/svn/Repository %指明版本库的路径
AuthType Basic %认证类型为基本认证
AuthName "SVN Repository" %认证名称,将在IE界面弹出一个对话框,其标题就是SVN Repository
AuthUserFile /home/svn/Repository/RepositoryPasswdFile %加载密码文件
# AuthzSVNAcessFile //home/svn//Repository/accesspolicy
# satisfy Any
# Require valid-user %要求验证用户,即不能匿名访问
</Location> %location标签尾
加#号的语句被注释掉了!如果有两个以上的版本库,可以针对每个版本库添加不同的location标签,两个互不影响。
配置完成后,您必须重新起动 Apache 2 Web 服务器,请输入下面的命令:
sudo /etc/init.d/apache2 restart
就可以在http://localhost/Repository访问svn库了,编辑一下/var/www/index.html文件,加上个链接,可以使自己方便些。
接下来,您需要创建 /etc/subversion/passwd 文件,该文件包含了用户授权的详细信息。要添加用户,您可以执行下面的命令:
sudo htpasswd -c /etc/subversion/passwd user_name
它会提示您输入密码,当您输入了密码,该用户就建立了。“-c”选项表示创建新的/etc/subversion/passwd文件,所以user_name所指的用户将是文件中唯一的用户。如果要添加其他用户,则去掉“-c”选项即可:
sudo htpasswd /etc/subversion/passwd other_user_name
您可以通过下面的命令来访问文件仓库:
$ svn co http://hostname/svn/myproject myproject --username user_name
它会提示您输入密码。您必须输入您使用 htpasswd 设置的密码。当通过验证,项目的文件就被签出了。
警告:密码是通过纯文本传输的。如果您担心密码泄漏的问题,我们建议您使用 SSL 加密。
通过具有安全套接字(SSL)的 WebDAV 协议访问(https:// )
通过具有 SSL 加密的 WebDAV 协议访问 SVN 文件仓库(https:// )非常类似上节所述的内容,除了您必须为您的 Apache 2 Web 服务器设置数字证书之外。
您可以安装由诸如 Verisign 发放的数字签名,或者您可以安装您自己的数字签名。
我们假设您已经为 Apache 2 Web 服务器安装和配置好了相应的数字证书。现在按照上一节所描述的方法访问 SVN 文件仓库,别忘了把 http:// 换成 https://。如何,几乎是一模一样的!
通过自带协议访问(svn://)
当您创建了 SVN 文件仓库,您可以修改 /home/svn/myproject/conf/svnserve.conf 来配置其访问控制。
例如,您可以取消下面的注释符号来设置授权机制:
# [general]
# password-db = passwd
现在,您可以在“passwd”文件中维护用户清单。编辑同一目录下“passwd”文件,添加新用户。语法如下:
username = password
#(注意行开始不要有多余空格)
要了解详情,请参考该文件。
现在,您可以在本地或者远程通过 svn://访问 SVN 了,您可以使用“svnserve”来运行 svnserver,语法如下:
$ sudo svnserve -d --foreground -r /home/svn
# -d -- daemon mode
# --foreground -- run in foreground (useful for debugging)
# -r -- root of directory to serve
要了解更多信息,请输入:
$ svnserve --help
当您执行了该命令,SVN 就开始监听默认的端口(3690)。您可以通过下面的命令来访问文件仓库:
$ svn co svn://hostname/myproject myproject --username user_name
基于服务器的配置,它会要求输入密码。一旦通过验证,就会签出文件仓库中的代码。
要同步文件仓库和本地的副本,您可以执行 update 子命令,语法如下:
$ cd project_dir
$ svn update
要了解更多的 SVN 子命令,您可以参考手册。例如要了解 co (checkout) 命令,请执行:
$ svn co --help
或者这样
$ svn --help commit
或者直接
svn help co
checkout (co): 从版本库签出工作副本。
使用: checkout URL[@REV]... [PATH]
一个实例:
killall svnserve; svnserve -d -r /home/svn/
/home/svn/lj12-source/conf ☎ dog *
authz:[groups]
authz:lj12 = veexp
authz:[lj12-source:/] <-注意写法。
authz:veexp = rw
authz:@lj12 = rw
authz:* = passwd:[users] <-2个用户和密码。
passwd:veexp = icep
passwd:test = test
svnserve.conf:[general]
svnserve.conf:anon-access = none
svnserve.conf:auth-access = write
svnserve.conf:password-db = passwd
svnserve.conf:authz-db = authz <-如果不启用authz,则test也可以取出。
☎ svn co svn://localhost/lj12-source --username veexp
认证领域: <svn://localhost:3690> a712643f-661e-0410-8ad4-f0554cd88977
用户名: veexp “veexp”的密码:
A lj12-source/tim.h A lj12-source/en.c
......
认证失败的密码缓冲记录位置,明文密码。到1.6版本,可能使用keyring管理。如果调试密码,直接删除如下文件就可。
~/.subversion/auth/svn.simple/:
eea34a6f7baa67a3639cacd6a428dba4
通过具被SSH隧道保护的自带协议访问(svn+ssh://)
配置和服务器进程于上节所述相同。我们假设您已经运行了“svnserve”命令。
我们还假设您运行了 ssh 服务并允许接入。要验证这一点,请尝试使用 ssh 登录计算机。如果您可以登录,那么大功告成,如果不能,请在执行下面的步骤前解决它。
svn+ssh:// 协议使用 SSH 加密来访问 SVN 文件仓库。如您所知,数据传输是加密的。要访问这样的文件仓库,请输入:
$ svn co svn+ssh://hostname/home/svn/myproject myproject --username user_name
注意:在这种方式下,您必须使用完整的路径(/home/svn/myproject)来访问 SVN 文件仓库
基于服务器的配置,它会要求输入密码。您必须输入您用于登录 ssh 的密码,一旦通过验证,就会签出文件仓库中的代码。
您还应该参考 SVN book 以了解关于 svn+ssh:// 协议的详细信息。
7、配置svn服务随系统启动
创建/etc/init.d/svnserve文件,文件中包含如下内容:
#!/bin/sh
/usr/bin/svnserve -d -r /home/svn/
执行
sudo chmod a+x /etc/init.d/svnserve
在启动阶段2中启动,具体配置方法为运行命令:
cd /etc/rc2.d
sudo ln -s /etc/init.d/svnserve S92svnserve
这样,svn就会随系统在开机时候启动啦。可以自己手动运行一下立即启动,将项目导入到svn库中使用svn import命令
8、客户端RabbitVCS
具体安装参见 http://wiki.rabbitvcs.org/wiki/install/ubuntu
首先在源里添加:
sudo add-apt-repository ppa:rabbitvcs/ppa
sudo apt-get update
sudo apt-get install rabbitvcs-core rabbitvcs-nautilus rabbitvcs-thunar rabbitvcs-gedit rabbitvcs-cli
安装完毕后,注销,重新登录,在文件夹和文件夹内点击鼠标右键就可用RabbitVCS操作了。
9、自动网络备份
在home/jerry文件夹(输入cd回车就进入了)中建立cron目录,建立一个svnbackup.sh文件,内容如下:
#!/bin/sh
projects=”Repository redirecter”
svnroot=”/svn”
backdir=”/home/jerry/Dropbox/code/svnbackup”
date=`date +%Y%m%d`
for project in $projects
do
/usr/bin/svnadmin dump $svnroot/$project > $backdir/${project}_$date
done
其中projects里面可以配置你的多个工程。
执行crontab -e,输入如下内容:
0 22 * * 6 (cd /home/jerry/cron && /home/jerry/cron/svnbackup.sh)
/home/jerry/cron/是home文件夹的路径,记得添加时候修改。
dropbox是一个跨平台的,多pc自动同步文件软件,在国内的下载速度可以达到500kB以上(公司的网络比较快哈,在家里用,一般就是133kB),十分强大。就用它来备份svn库再好不过了。注册账号,下载软件
这样就全都搞好了,每周六的22点就会自动帮你备份好svn,dropbox也会帮你把svn库传到你的账号中存好。如果你在自己的多台电脑上都安装了dropbox,每台电脑都会自动拥有svn备份数据(dropbox网络上也有一份)。想修改备份的时间,请参考crontab
10、svn dump 全自动备份脚本
From: http://carywu.blog.51cto.com/13185/207571
shell功能:
这个脚本完成的主要工作是先用svnadmin hotcopy命令备份代码仓库到指定目录,用tar打包保存;另一项工作是会删除10天前(因为我选择的是每天备份,你可以根据需要制定自己的方案)的副本。以下脚本命名保存为backup.sh。
#!/bin/bash
project="Repository"
date=`date +%Y%m%d`
log=/home/jerry/svnback/cpreport.log
SRCPATH=/home/jerry/svn/Repository
backdir=/home/jerry/svnback
DISTPATH=/home/jerry/svnback/`date +%Y%m%d`
SVNADMIN=/usr/bin/svnadmin
echo " - BACKUP START ----------------- "
echo " - BACKUP START ----------------- " >> $log
# omit request in the same day
if [ -d $DISTPATH ]
then
echo `date +"%y-%m-%d %H:%M:%S"`" backupfile [$DISTPATH] has exist!"
echo `date +"%y-%m-%d %H:%M:%S"`" backupfile [$DISTPATH] has exist!" >> $log
# backup repos with `svnadmin hotcopy'
else
mkdir $DISTPATH
chmod g+s $DISTPATH
mkdir $DISTPATH/Repository
chmod g+s $DISTPATH/Repository
svnadmin hotcopy $SRCPATH $DISTPATH/Repository >>$log 2>&1
#svnadmin hotcopy $SRCPATH/Project2 $DISTPATH/Project2
echo `date +"%y-%m-%d %H:%M:%S"`" backup [$project] done into [$DISTPATH]"
echo `date +"%y-%m-%d %H:%M:%S"`" backup [$project] done into [$DISTPATH]" >> $log
# compress backup data
cd $backdir
dumpfile=$date.$project.tar.gz
$SVNADMIN hotcopy $SRCPATH $project --clean-logs
tar -czvf $dumpfile $project > /dev/null
echo `date +"%y-%m-%d %H:%M:%S"`" compress [$DISTPATH] finished"
echo `date +"%y-%m-%d %H:%M:%S"`" compress [$DISTPATH] finished" >> $log
#remove temp project dir
rm -rf $project
fi
#运行删除脚本,对过期备份进行删除。
# remove old dump file [at most 10 copies store here]
olddump=$(date +%Y%m%d --date='10 days ago').$project.tar.gz
if [ -f $olddump ]
then
rm -f $olddump >> $log 2>&1
echo `date +"%y-%m-%d %H:%M:%S"`" [$olddump] delete success!" >> $log
else
echo `date +"%y-%m-%d %H:%M:%S"`" [$olddump] not exist!" >> $log
fi
echo " - BACKUP ENDED ----------------- "
echo " - BACKUP ENDED ----------------- " >> $log
简单测试通过后,就可以添加到crontab(crontab用于管理周期事务)了,第一次使用crontab -e命令时需要选择编辑器,编辑格式非常简单:
命令行:jerry@jerry-desktop:~$ crontab -e
显示:
no crontab for jerry - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano <---- easiest
3. /usr/bin/emacs23
4. /usr/bin/vim.basic
5. /usr/bin/vim.gnome
6. /usr/bin/vim.gtk
7. /usr/bin/vim.nox
8. /usr/bin/vim.tiny
Choose 1-8 [2]: 5 %根据自己的爱好选择
>>>> 下面是编辑的内容
1 # m h dom mon dow command
2 0 23 * * * /home/jerry/svn/Repository/backup.sh %24个小时更新一次
参见 http://www.chinaunix.net/jh/6/271992.html
>>>> 保存退出,自动加入事务列表
crontab: installing new crontab
>>>> 查看当前事务
$ crontab -l
发表评论
-
关于分工协作
2012-02-27 11:29 931一、任何工作都要经过一下步骤 1、以一人为主先行设计,拿出初稿 ... -
安装maven和Jira到Eclipse
2011-11-13 11:30 1696安装maven到Eclipse 14.1. 简介 Eclip ... -
SubVersion
2011-10-29 15:27 9SubVersion 出自Ubuntu中文 ... -
ubuntu10.10中安装subversion
2011-10-29 12:00 6ubuntu下安装svn确定比较简单。 1、安装 sudo ... -
安装apache和subsersion on linux
2011-10-29 11:58 5一. 安装apr依赖库(Apache Portable Ru ... -
rethat安装svnserver(转)
2011-10-29 11:27 6rethat安装svnserver 1. 本 ... -
ubuntu下svn服务器的安装配置
2011-10-28 17:23 5ubuntu下svn服务器的安装配置 2011年01月1日 / ... -
'java.lang.OutOfMemoryError PermGen Space' 错误导致JIRA崩溃
2011-10-26 19:08 1558'java.lang.OutOfMemoryError Per ... -
jira error: Neither the JAVA_HOME nor the JRE_HOME environment variable is defin
2011-10-25 16:41 2705jira error: Neither the JAVA_HO ... -
Jira的安装步骤
2011-10-19 14:00 1348第一步:oracle官网下装安装 jdk-6u24-wi ... -
如何做好项目经理
2011-08-31 22:12 984我觉得做项目关键还是 ...
相关推荐
Linux下的版本控制工具RabbitVCS是一款轻量级且易用的版本控制系统,它主要集成了Subversion(SVN)和Git两种版本控制方案,为Linux用户提供了一个方便的图形化界面。RabbitVCS在Linux社区中颇受欢迎,因为它允许...
本文将详述如何在CentOS 7上安装和配置RabbitVCS,这是一个用于Subversion(SVN)的图形化版本控制系统。RabbitVCS提供了直观的界面,使得版本控制操作变得更加简单。 首先,我们要明确的是,RabbitVCS依赖于Python...
RabbitVCS(Rabbit Version Control System)是一款轻量级的版本控制系统,它为Git和SVN提供了图形化界面,使得用户在Ubuntu这样的Linux环境下管理代码仓库更为便捷。 首先,RabbitVCS主要适用于那些希望通过图形化...
【标题】"rabbitvcs-master" 是一个与版本控制系统相关的项目,主要针对的是RabbitVCS,这是一个轻量级的、基于图形用户界面的Subversion(SVN)和Git工具,广泛应用于Linux和macOS系统。它使得在这些平台上进行版本...
Subversion(SVN)是版本控制系统的一个开源实现,它允许用户跟踪和管理代码库的更改。在本案例中,我们讨论的是Subversion的1.7.6版本,它被打包成一个名为"subversion-1.7.6.tar.gz"的压缩文件,适合在Linux环境下...
Subversion(SVN)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件的更改历史。在团队开发环境中,Subversion扮演着至关重要的角色,它允许开发者协作工作,同时跟踪每个成员对项目所做的修改,...
在Ubuntu系统中,Subversion(SVN)是一个广泛使用的版本控制系统,用于管理软件开发过程中的源代码和其他文件。它允许团队成员协作工作,跟踪每个文件的更改,以及回滚到先前的版本。这篇博文将详细介绍如何在...
RabbitVCS是一款轻量级且易于使用的SVN和Git客户端,它集成了Nautilus文件管理器,为用户提供了一种直观的图形界面来管理版本控制系统。 首先,确保你正在使用的Ubuntu版本是10.04或更高版本。对于10.04之前的版本...
SVN,全称为Subversion,是一种广泛使用的版本控制系统,用于管理代码和其他文档的变更历史。在软件开发过程中,SVN可以帮助团队协同工作,跟踪文件的修改,合并不同开发者的更改,并确保代码库的一致性和完整性。本...
SVN,全称为Subversion,是一款广泛应用于软件版本控制系统,特别是在开源社区中极其流行。它管理着项目中的源代码、文档等文件的历史版本,使得团队协作变得高效且有序。Subversion 支持多种操作系统,包括Windows...
在Ubuntu系统下,通过可视化方式安装SVN(Subversion)客户端是一种提高开发效率、简化版本控制流程的有效手段。本文将围绕“ubuntu下可视化SVN安装”这一主题,深入解析其重要性和具体步骤,帮助读者更好地理解和...
Subversion(SVN)是一个广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。在Linux环境中,SVN 1.9.3是一个重要的版本,它提供了许多改进和新功能。以下是对这个版本的详细说明: 1. **版本控制概念**:...
它的名字"乌龟"源于GUI工具的传统命名方式,通常使用动物来代表不同的版本控制工具,如CVS的“RabbitVCS”(兔子)。TortoiseSVN因其强大的功能、易用性和对Windows系统的完美融合,深受开发人员和项目团队的欢迎。 ...
SVN,全称为Subversion,是一款广泛应用于软件开发领域的版本控制系统。它允许团队协作,跟踪文件和目录的修改,管理代码历史,确保代码的一致性和完整性。SVN-1.6.6是Subversion的一个特定版本,发布于2009年,提供...
SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。它允许团队成员协同工作,记录每次更改,以便于回滚到以前的版本,解决冲突,并进行代码审查。本教程将详细介绍如何安装SVN服务器...
Subversion是一个开源的版本控制系统,它允许用户跟踪文件和目录的变更,便于团队成员共享和管理代码库。下面我们将详细探讨如何在Ubuntu 10.04上安装、配置SVN服务器,并使用客户端进行操作。 首先,安装SVN服务器...
SVN,全称为Subversion,是一款广泛应用于软件版本控制系统,用于管理对文件和目录的更改。它使得多人协作开发成为可能,每个团队成员可以安全地修改项目,而不会覆盖其他人的工作。本教程将详细讲解如何进行SVN的...
- **源码管理**:服务器端使用SVN(Subversion),客户端可使用svn和RabbitVCS。 - **应用框架**:JavaScript使用Jquery,前端使用Bootstrap,PHP和C/C++、Golang都有公司自有的框架。 这个技术架构为新员工提供...