so true

心怀未来,开创未来!
随笔 - 160, 文章 - 0, 评论 - 40, 引用 - 0
数据加载中……

创建svn

对一个已有目录建立svn的最最精简的步骤:
1. svnadmin create svn_root
2. 修改svn_root/conf/svnserve.conf中的下面这一行(注意,每行配置,要把前面的空格也删除掉):
anon-access = write
3. svnserve -d -r svn_root #svnserve的根目录必须是通过svnadmin创建出来的目录,该目录下有conf/ db/ format hooks/ locks/等文件或文件夹
4. svn mkdir --parents svn://localhost/search/spider/trunk/ -m 'create the trunk dir for spider team of search group'
5. svn list svn://localhost/
6. svn list svn://localhost/search/
7. svn list svn://localhost/search/spider/
8. svn list svn://localhost/search/spider/trunk/
9. mkdir -p svn_spider_root/trunk/ #或许这个路径已经存在,更或许在svn_spider_root/trunk/目录下已经有很多内容了
10. cd svn_spider_root/trunk #可见,本地路径和svn server里的路径不一定一致,其实是压根没什么关系
11. svn co svn://localhost/search/spider/trunk . #此时,trunk目录已经在svn的control下了
12. svn info .
13. cp -r XXX .
14. svn add *
15. 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

posted on 2012-11-14 14:28 so true 阅读(600) 评论(0)  编辑  收藏 所属分类: Linux


只有注册用户登录后才能发表评论。


网站导航: