分类: 项目管理
2007-09-26 21:42:06
[aaronwong@localhost ~]$ sudo yum -y install subversion [aaronwong@localhost ~]$ rpm -ql subversion //上面的命令可查询subversion软件包在系统上所安装的文件列表 [aaronwong@localhost ~]$ sudo yum -y install mod_dav_svn //mod_dav_svn不是必须安装的,它是Apache HTTP Server的一个插件,你本地仓库(repository)的文件必须通过它才能在网络上与别人共享。 //subversion的组件列表查看。 [aaronwong@localhost ~]$ svn --version svn,版本 1.4.3 (r23084) 编译于 Mar 23 2007,09:29:55 版权所有 (C) 2000-2007 CollabNet。 Subversion 是开放源代码软件,请参阅 此产品包含由 CollabNet ()开发的软件。 可使用以下的仓库存取 (RA) 模块: * ra_dav : 通过WebDAV(DeltaV)协议访问仓库的模块。 - 处理“http”方案 - 处理“https”方案 * ra_svn : 使用svn网络协议访问仓库的模块。 - 处理“svn”方案 * ra_local : 访问本地磁盘的仓库模块。 - 处理“file”方案 |
[aaronwong@localhost ~]$ svnadmin create .subversion/repos/hello //subversion安装后会生成一个~/.subversion目录,这里,我们将工程hello的数据仓库建立在~/.subversion/repos/hello目录。 [aaronwong@localhost ~]$ ls -p .subversion/repos/hello/ conf/ dav/ db/ format hooks/ locks/ README.txt |
~/projects/hello/branches ~/projects/hello/tags ~/projects/hello/trunk/ hello.c |
//trunk目录是实际上的工程顶层目录,工程中的所有文件和文件夹都在该目录下组织。 [aaronwong@localhost ~]$ cd projects/hello/ [aaronwong@localhost hello]$ ls -p branches/ tags/ trunk/ [aaronwong@localhost hello]$ cat trunk/hello.c //This is a original version. #include int main() { printf("Hello world!\n"); } |
[aaronwong@localhost trunk]$ svn import ~/projects/hello/ file:///home/aaronwong/.subversion/repos/hello/ -m "initial improt" 新增 /home/aaronwong/projects/hello/trunk 新增 /home/aaronwong/projects/hello/trunk/hello.c 新增 /home/aaronwong/projects/hello/branches 新增 /home/aaronwong/projects/hello/tags 提交后的版本为 1。 |
[aaronwong@localhost projects]$ rm -rf hello/ [aaronwong@localhost projects]$ svn checkout file:///home/aaronwong/.subversion/repos/hello/trunk hello A hello/hello.c 取出版本 1。 //注意,我们用红色标出了"trunk",如果不指定这一目录,则会取出除工程源文件外的其他不必要的目录如branches和tags。 [aaronwong@localhost projects]$ ls -a hello/ . .. hello.c .svn //可以看到“工作副本”下有一个.svn隐藏目录,其中就包含了subversion用來进行版本管理的信息。 |
[aaronwong@localhost hello]$ pwd /home/aaronwong/projects/hello [aaronwong@localhost hello]$ vim hello.c [aaronwong@localhost hello]$ cat hello.c //This is the second version. #include int main() { printf("Hello world!\n"); return; } [aaronwong@localhost hello]$ mkdir doc [aaronwong@localhost hello]$ vim doc/readme.txt [aaronwong@localhost hello]$ svn add doc A doc A doc/readme.txt //说明:如果svn add的对象是一个目录,则该目录及其子目录和其下的文件都会被添加到工程。 |
[aaronwong@localhost hello]$ svn status M hello.c A doc A doc/readme.txt [aaronwong@localhost hello]$ svn diff Index: hello.c =================================================================== --- hello.c (版本 1) +++ hello.c (工作副本) @@ -1,10 +1,10 @@ -//This is a original version. +//This is the second version. #include int main() { printf("Hello world!\n"); - + return; } Index: doc/readme.txt =================================================================== --- doc/readme.txt (版本 0) +++ doc/readme.txt (版本 0) @@ -0,0 +1,2 @@ +This is an example for subversion tutorial. + //可以看到,svn diff提供了更详细的改动信息,并且很容易的将该命令的输出重定向为一个patch补丁。 |
[aaronwong@localhost hello]$ svn commit -m "documents added." 新增 doc 新增 doc/readme.txt 正在发送 hello.c 传输文件数据.. 提交后的版本为 2。 |
[aaronwong@localhost ~]$ svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg A ffmpeg/configure A ffmpeg/Doxyfile A ffmpeg/ffmpeg.c A ffmpeg/vhook A ffmpeg/vhook/imlib2.c A ffmpeg/vhook/drawtext.c A ffmpeg/vhook/fish.c A ffmpeg/vhook/null.c ...... |