创建svn

创建svn

对一个已有目录建立svn的最最精简的步骤:
1. svnadmin create svn_root
2. 修改svn_root/conf/svnserve.conf中的下面这一行:
anon-access = write
3. svnserve -d -r svn_root
4. svn mkdir svn://localhost/test_proj -m 'create the root dir for test_proj'
5. cd test_proj #假设test_proj已经存在
6. svn co svn://localhost/test_proj .
7. svn add *
8. svn ci -m 'first version'

其他的一些资料:
svnadmin create /home/admin/svn_root/
svn mkdir --parents file:///home/admin/svn_root/project1_repo/{trunk,tags,branches} -m "initial dir creation"
#下面这些配置文件在配置时,千万不能以空格开头
cat > /home/admin/svn_root/conf/svnserve.conf
[general]  
password-db = passwd  
cat > /home/admin/svn_root/conf/passwd  
admin = admin
svnserve -d -r  /home/admin/svn_root/ --listen-port 3389
#会把/home/admin/some_existed_stuffs/目录下的东西ci到trunk下,不会在trunk下创建some_existed_stuffs目录
svn import -m "Initial import" /home/admin/some_existed_stuffs svn://localhost:3389/svn_root/project1_repo/trunk/
svn co svn://localhost:3389/svn_root/project1_repo/ project1_repo

备注:
其实用file://和svn://的区别就在于是否通过svnserve启动了daemon进程侦听端口,所以svn mkdir和svn import都可以通过svn://来进行。
因此,如果不考虑打个http服务给别人使用,而只是在本地自己控制版本的话,完全可以用file://协议,例如:
$ svnadmin create svn_test
$ svn mkdir file:///home/admin/svn_test/trunk/ -m 'create trunk dir'
Committed revision 1.
$ svn import mk_test/ file:///home/admin/svn_test/trunk/ -m 'import basic files'
Adding  (bin)  mk_test/t3
Adding         mk_test/t3.cpp
Adding         mk_test/Makefile
Committed revision 2.
$ svn co file:///home/admin/svn_test/trunk/ test_trunk
A    test_trunk/t3
A    test_trunk/t3.cpp
A    test_trunk/Makefile
Checked out revision 2.
$ cd test_trunk
$ svn st
$ svn info
Path: .
URL: file:///home/admin/svn_test/trunk
Repository Root: file:///home/admin/svn_test
Repository UUID: 873f7a52-8ee6-4740-958b-5e58c9997b03
Revision: 2
Node Kind: directory
Schedule: normal
Last Changed Author: admin
Last Changed Rev: 2
Last Changed Date: 2012-11-14 14:46:19 +0800 (Wed, 14 Nov 2012)
$ vi t4.cpp
$ svn st
?       t4.cpp
M       t3.cpp
$ svn add t4.cpp
A         t4.cpp
$ svn st
M       t3.cpp
A       t4.cpp
$ svn ci -m 'add t4.cpp'
Sending        t3.cpp
Adding         t4.cpp
Transmitting file data ..
Committed revision 3.
$ svn log
------------------------------------------------------------------------
r2 | admin | 2012-11-14 14:46:19 +0800 (Wed, 14 Nov 2012) | 1 line
import basic files
------------------------------------------------------------------------
r1 | admin | 2012-11-14 14:45:54 +0800 (Wed, 14 Nov 2012) | 1 line
create trunk dir
------------------------------------------------------------------------

说到这里,有一个很有用的功能,例如你已经有一个目录,下面有一些文件,现在你想把这个目录受到版本控制,即把当前状态作为最开始的一个版本,在本地可以这么干:
cd /home/admin/project1
svn co file:///home/admin/svn_root/tmp_projects/project1 . #this only creates the ".svn" folder for version control,其实就是将当前目录分配到svn的某一个节点下,这个节点如果不存在,需要事先mkdir,注意最后一个参数一定得是'.'
svn add ./*                        #tell svn you want to version control all files in this dir
svn ci  -m 'add /home/admin/project1 under version control'                          #check the files in
此外,如果需要http://协议,那需要搭建一个apache服务,参见相关链接[2]

相关链接:
[1]  http://greatwqs.iteye.com/blog/1074448
[2]  https://support.eapps.com/index.php?/Knowledgebase/Article/View/254/62/cloud-hosting-applications---subversion-svn

你可能感兴趣的:(创建svn)