四、svn使用

1、创建一个版本库
[apachesvn@dns ~]$ svnadmin create /opt/repos
[apachesvn@dns ~]$ ls /opt/repos
conf  db  format  hooks  locks  README.txt

在这个例子中,我们假定已经有一些需要导入到Subversion版本库的条目(一组文件和目录)。接下来,我们需要把这些条目整理到一个名为myproject的目录(或者其它任意目录)里。在这个目录下,创建三个顶级子目录:branches、tags和trunk,这样做的原因将在后文中阐述。之后,将所有需版本化的数据保存到trunk目录下,同时保持branches和tags目录为空:
[apachesvn@dns ~]$ mkdir -p /tmp/myproject/branches
[apachesvn@dns ~]$ mkdir -p /tmp/myproject/tags
[apachesvn@dns ~]$ mkdir -p /tmp/myproject/trunk
[apachesvn@dns ~]$ touch /tmp/myproject/trunk/foo.c
[apachesvn@dns ~]$ touch /tmp/myproject/trunk/bar.c
[apachesvn@dns ~]$ touch /tmp/myproject/trunk/Makefile
[apachesvn@dns ~]$ tree /tmp/myproject/
/tmp/myproject/
├── branches
├── tags
└── trunk
    ├── bar.c
    ├── foo.c
    └── Makefile


2、导入数据到版本库
[apachesvn@dns ~]$ svn import /tmp/myproject file:///opt/repos/myproject -m "initial repos"
正在增加       /tmp/myproject/branches
正在增加       /tmp/myproject/tags
正在增加       /tmp/myproject/trunk
正在增加       /tmp/myproject/trunk/Makefile
正在增加       /tmp/myproject/trunk/bar.c
正在增加       /tmp/myproject/trunk/foo.c

现在版本库中已经保存了目录中的数据。如前所述,直接查看版本库是看不到文件和目录的;它们存放在数据库之中。但是版本库的虚拟文件系统中则包含了一个名为myproject的顶级目录,其中依此保存了所有的数据。

3、检出工作拷贝
从Subversion版本库里“检出”一个myproject/trunk目录工作拷贝的操作如下:
[apachesvn@dns ~]$ svn checkout file:///opt/repos/myproject/trunk myproject
A    myproject/Makefile
A    myproject/foo.c
A    myproject/bar.c
取出版本 1。

4、使用svnserver
svnserve是一个轻型的服务器,可以同客户端通过在TCP/IP基础上的自定义有状态协议通讯,客户端通过使用开头为svn://或者svn+ssh://svnserve的URL来访问一个svnserve服务器。这一小节将会解释运行svnserve的不同方式,客户端怎样实现服务器的认证,怎样配置版本库恰当的访问控制。
调用服务器:
有许多不同方法运行svnserve:
• 作为一个独立守护进程启动svnserve,监听请求。
• 当特定端口收到一个请求,就会使UNIX的inetd守护进程临时调用svnserve处理。
• 使用SSH在加密通道发起临时svnserve服务。
• 以Windows service服务方式运行svnserve。

svnserve作为守护进程
使用svnserve最简单的方式是作为独立“守护”进程运行,使用-d选项:
$ svnserve -d
$ # svnserve is now running, listening on port 3690
当以守护模式运行svnserve时,你可以使用--listen-port=和--listen-host=选项来自
定义“绑定”的端口和主机名。
一旦svnserve已经运行,它会将你系统中所有版本库发布到网络,一个客户端需要指定版本库在URL中的绝对路径,举个例子,如果一个版本库是位于/usr/local/repositories/project1,则一个客户端可以使用svn://host.example.com/usr/local/
repositories/project1来进行访问,为了提高安全性,你可以使用svnserve的-r选项,这样会限制只输出指定路径下的版本库,例如:
$ svnserve -d -r /usr/local/repositories

使用-r可以有效地改变文件系统的根位置,客户端可以使用去掉前半部分的路径,留下的要
短一些的(更加有提示性)URL:
$ svn checkout svn://host.example.com/project1

实践:
[apachesvn@dns opt]$ svnserve -d -r /opt/repos
[apachesvn@dns opt]$ ps -ef |grep svnserve
501        2844      1  0 22:36 ?        00:00:00 svnserve -d -r /opt/repos


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值