免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1833 | 回复: 0
打印 上一主题 下一主题

svn学习笔记 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-20 18:36 |只看该作者 |倒序浏览
摘自: http://www.subversion.org.cn/svnbook/1.4/index.html
subversion的组件:
svn
命令行客户端程序。

svnversion
此工具用来显示工作拷贝的状态(用术语来说,就是当前项目的修订版本)。

svnlook
直接查看Subversion版本库的工具。

svnadmin
建立、调整和修复Subversion版本库的工具。

svndumpfilter
过滤Subversion版本库转储数据流的工具。

mod_dav_svn
Apache HTTP服务器的一个插件,使版本库可以通过网络访问。

svnserve
一个单独运行的服务器程序,可以作为守护进程或由SSH调用。这是另一种使版本库可以通过网络访问的方式。

svnsync
一个通过网络增量镜像版本库的程序。

基本使用
$ svnadmin create /usr/local/svn/newrepos
$ svn import mytree file:///usr/local/svn/newrepos/some/project \
             -m "Initial import"
$ svn checkout http://svn.collab.net/repos/svn/trunk
$ svn log -r 5:19    # shows logs 5 through 19 in chronological order
$ svn log -r 19:5    # shows logs 5 through 19 in reverse order
$ svn log -r 8       # shows log for revision 8
比较本地修改
$ svn diff
比较工作拷贝和版本库
$ svn diff -r 3 rules.txt
比较版本库与版本库
$ svn diff -r 2:3 rules.txt
$ svn diff -c 3 rules.txt
$ svn diff -c 5 http://svn.example.com/repos/example/trunk/text/rules.txt
浏览版本库
$ svn cat -r 2 rules.txt > rules.txt.v2
$ svn list http://svn.collab.net/repos/svn
$ svn list -v http://svn.collab.net/repos/svn
$ svn export http://svn.example.com/svn/repos1 -r 1729
$ svn log -r {2006-11-28}
$ svn log -r {2006-11-20}:{2006-11-29}
属性
$ svn propset copyright '(c) 2006 Red-Bean Software' calc/button.c
$ svn propedit copyright calc/button.c  ### exit the editor without changes
No changes to property 'copyright' on 'calc/button.c'
$
$ svn proplist calc/button.c
$ svn proplist -v calc/button.c
$ svn propdel license calc/button.c
版本库管理
$ svnadmin create /path/to/repos
$ svnadmin dump myrepos > dumpfile
$ svnadmin load newrepos < dumpfile
$ svnadmin dump /path/to/repos > repos-dumpfile
$ svndumpfilter include calc < repos-dumpfile > calc-dumpfile
$ svndumpfilter include calendar < repos-dumpfile > cal-dumpfile
$ svndumpfilter include spreadsheet < repos-dumpfile > ss-dumpfile
$ svnadmin create calc; svnadmin load calc < calc-dumpfile
服务配置
1 svnserve服务器
为什么你会希望使用它:
设置快速简单。
网络协议是有状态的,比WebDAV快很多。
不需要在服务器创建系统帐号。
不会在网络传输密码。
为什么你会希望避免它:
网络协议没有加密。
只有一个认证方法选择。
在这个服务器上明文保存密码。
没有任何类型的日志,甚至是错误。
有许多不同方法运行svnserve:
1.1 svnserve作为守护进程
$ svnserve -d
$               # svnserve is now running, listening on port 3690
$ svnserve -d -r /usr/local/repositories
$ svn checkout svn://host.example.com/project1
1.2 使用svnserve通过inetd
$ svnserve -i
( success ( 1 2 ( ANONYMOUS ) ( edit-pipeline ) ) )
当用参数--inetd调用时,svnserve会尝试使用自定义协议通过stdin和stdout来与Subversion客户端通话,这是使用inetd工作的标准方式,IANA为Subversion协议保留3690端口,所以在类Unix系统你可以在/etc/services添加如下的几行(如果不存在的话):

svn           3690/tcp   # Subversion
svn           3690/udp   # Subversion
如果系统是使用经典的类Unix的inetd守护进程,你可以在/etc/inetd.conf添加这几行:

svn stream tcp nowait svnowner /usr/bin/svnserve svnserve -i
确定“svnowner”用户拥有访问版本库的适当权限,现在如果一个客户连接来到你的服务器的端口3690,inetd会产生一个svnserve进程来做服务。当然,你也可以添加-r到命令行,限制暴露出的版本库。

1.3 通过通道使用svnserve



1.4 svnserve作为Windows服务

1.5 内置的认证和授权

2 svnserve使用SSH通道

为什么你会希望使用它:
网络协议是有状态的,比WebDAV快很多。
你可以利用现有的ssh帐号和用户基础。
所有网络传输是加密的。
为什么你会希望避免它:
只有一个认证方法选择。
没有任何类型的日志,甚至是错误。
需要用户在同一个系统组,使用共享ssh密钥。
如果使用不正确,会导致文件许可问题。
2.1 SSH 隧道

SSH与svnserve结合很简单,svnserve是以管道模式调用的(-t)客户端只需要使用svn+ssh://的URL模式来连接:

$ whoami
harry
$ svn list svn+ssh://host.example.com/repos/project

3 Apache 的 HTTP 服务器
为什么你会希望使用它:
允许Subversion使用大量已经集成到Apache的用户认证系统。
不需要在服务器创建系统帐号。
完全的Apache日志。
网络传输可以通过SSL加密。
HTTP(S) 通常可以穿越公司防火墙。
通过web浏览器访问内置的版本库浏览。
版本库可以作为网络驱动器加载,实现透明的版本控制,见“自动版本化”一节。
为什么你会希望避免它:
比svnserve慢很多,因为HTTP是无状态的协议,需要更多的传递。
初始设置可能复杂
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP