【累积知识】svn版本管理初窥
关于svn版本管理的基本操作如下
源自http://maverick.inria.fr/~Xavier.Decoret/resources/svn/index.html
创建svn database
svnadmin create --fs-type fsfs /home/user/svn
查看svn database的文件列表
svn ls file:///home/user/svn
直接操作svn database内的文件
svn mkdir file:///home/user/svn/foo -m "Created dumb directory" svn rm file:///home/user/svn/foo -m "Removed dumb directory"
查看svn database的log
svn log file:///home/user/svn
向已存在的svn database内导入文件
svn import ~/project file:///home/user/svn/project/trunk -m "Initial"
将svn database内文件checkout出
svn checkout file:///home/user/svn/project/trunk ~/temp/project
查看文件(夹)checkout下来的info(包括文件版本,路径,URL等信息)
svn info ../rtl/
查看文件(夹)自从checkout下来后做过的更改
svn status ../sim/
对于checkout出的文件夹下面每个子文件夹都会有个.svn文件,这个是特有的,对checkout出的文件可以进行正常操作,但是记得操作之后要用svn 命令进行更改
touch file1 file2 svn add file1 file2
svn rm file1
svn rename file1 file30
将更改上传至svn database
svn commit ../rtl -m "test for commit rtl directory"
将不同版本的svn database进行checkout下来
svn checkout -r 3 file:///home/user/svn ~/project
查看svn database的相关信息
svnlook youngest /home/user/svn(查看最新版本号,注:这里的是path而不是URL)
改变svn database的位置
svnadmin dump /home/user/svn > /temp/dumpfile.db svnadmin create --fs-type fsfs /home/user/newsvn svnadmin load /home/user/newsvn < /temp/dumpfile.db
ok就先来这么多,基本已经够用
同时还发现了一个很好用的命令tree -aC就是可以树状的显示文件目录下的文件
补充一个revision 2,这才基本够用,来着
运行svnserve使得可以通过client网络访问
svnserve -d -r svn_path (注:这里的svn_path即是创建的svn repository的路径)
访问svn repository,开启了svnserve之后
svn ls svn://172.20.31.153
从svn repository上面checkout下来的文件进行修改,想恢复到修改之前,checkout后的状态
svn revert filename (注:这里没有-r选项)
比较某两个版本间的不同
svn diff -r R1:R2 filename/path [--summarize] (注:summarize可以笼统的体现出有哪些不同的文件)
显示文件每行的revision 和 author
svn blame filename (注:此处仅可以为file,不能为path)
若开启的svnserve的IP发生变化,改变svn的ip地址
svn switch --relocate svn://pre_ip svn://now_ip
如何创建不同用户的访问权限呢?
首先在svn repository下面的conf/下有svnserve.conf,passwd和authz,svnserve.conf里面都是一些general的设置,需要把注释掉的都打开,passwd就是不同用户的密码信息(明文!),authz就是访问的权限了。按照例子来就可以,需要注意的是,文件的设置,每行的行首不能有空格,不然会报错(有点低智),authz是核心配置权限的文件,可以针对不同的用户组/用户/文件目录,进行权限的设置
当开启了权限控制之后,每个命令都可以加上
--username XXX --password ***
来控制访问权限,ok这样才能叫基本可以用起来了