SVN简易使用手册实例详解

开发 项目管理
本文介绍上篇文章介绍SV的使用问题,主要包括使用Subversion管理本地project和使用svn获取开源项目源代码等内容。

本节接着上节介绍SVN简易使用手册,上节我们讲到了使用Subversion管理本地project中如何将本地工程hello导入本地的Subversion的工程仓库问题,本节继续介绍,另外介绍一下使用svn获取开源项目源代码问题,希望你能感兴趣,让我们一起来学习SVN简易使用手册
(4)工程开发过程中的版本管理与控制
SVN简易使用手册介绍使用subversion对工程进行版本管理的一般流程如下:
a)建立工程的数据仓库,并导入工程的最初版本(前面已经完成);
b)从仓库获取一个“工作副本”(svncheckout,可以获取***版本也可以获取以前的某个版本),在这个“工作副本”中进行工程开发,修改完毕将变动提交到仓库。下面简单介绍b)步骤。
由于工程hello已经导入到仓库,因此原目录可以删除。我们删除原目录,并从仓库获取工程hello的一个“工作副本”(workingcopy);当然,如果你当心这样做会造成数据丢失,完全可以重新建立一个目录,将“工作副本”保存到那里。
[aaronwong@localhostprojects]$rm-rfhello/
[aaronwong@localhostprojects]$svncheckoutfile:///home/aaronwong/.subversion/repos/hello/trunkhello
Ahello/hello.c取出版本1。//注意,我们用红色标出了"trunk",如果不指定这一目录,则会取出除工程源文件外的其他不必要的目录如branches和tags。
[aaronwong@localhostprojects]$ls-ahello/...hello.c.svn
//可以看到“工作副本”下有一个.svn隐藏目录,其中就包含了subversion用用來进行版本管理的信息。下面可以对工程hello的内容进行编辑和修改。注意,如果要在工程中增加或删除某一文件或目录(包括复制和移动),必须使用svnadd/delete/mkdir/copy/move等相关命令进行标记。
 

  1. [aaronwong@localhosthello]$pwd  
  2. /home/aaronwong/projects/hello  
  3. [aaronwong@localhosthello]$vimhello.c  
  4. [aaronwong@localhosthello]$cathello.c  
  5. //Thisisthesecondversion.  
  6. #include<stdio.h> 
  7. intmain()  
  8. {printf("Helloworld!\n");  
  9. return;}  
  10. [aaronwong@localhosthello]$mkdirdoc  
  11. [aaronwong@localhosthello]$vimdoc/readme.txt  
  12. [aaronwong@localhosthello]$svnadddoc  
  13. Adoc  
  14. Adoc/readme.txt//说明:如果svnadd的对象是一个目录,则该目录及其子目录和其下的文件都会被添加到工程。对工程编辑完毕,你可以检查一下该次编辑对工程(实际上是对你的"工作副本")做了哪些改动。  
  15. [aaronwong@localhosthello]$svnstatus  
  16. Mhello.c  
  17. Adoc  
  18. Adoc/readme.txt  
  19. [aaronwong@localhosthello]$svndiff  
  20. Index:hello.c 
  21. ===================================================================  
  22. ---hello.c(版本1)  
  23. +++hello.c(工作副本)  
  24. @@-1,10+1,10@@  
  25. -//Thisisaoriginalversion.  
  26. +//Thisisthesecondversion.  
  27. #include<stdio.h> 
  28. intmain()  
  29. {printf("Helloworld!\n");-  
  30. +return;}  
  31. Index:doc/readme.txt 
  32. ===================================================================  
  33. ---doc/readme.txt(版本0)  
  34. +++doc/readme.txt(版本0)  
  35. @@-0,0+1,2@@  
  36. +Thisisanexampleforsubversiontutorial.  

//可以看到,svndiff提供了更详细的改动信息,并且很容易的将该命令的输出重定向为一个patch补丁。检查确认无误后,便可提交此次更改,同时要附加此次更改的说明注释信息。
[aaronwong@localhosthello]$svncommit-m"documentsadded."
新增doc
新增doc/readme.txt
正在发送hello.c
传输文件数据..
提交后的版本为2。
现在工程仓库中已经保存了上面所提交的版本2的工程的所有信息,因此,上面的“工作副本”也可以被删除:当然,如果下次你还要继续使用这个“工作副本”进行工作,则可以保留这个副本,不过需要注意的是,如果你是在一个开发团队中,开发团队的任一成员都可能在你不知情的情况下更新了工程版本,因此,在团队开发中,进入已有的“工作副本”进行编辑前,应该先使用"svnupdate"命令将当前“工作副本”更新到仓库中的***版本。
3.使用svn获取开源项目源代码
SVN简易使用手册介绍一下使用svn获取开源项目源代码。这实际上是获取一个“工作副本”的过程。例如我需要下载ffmpeg的***源代码,就可以使用svncheckout命令来完成:
[aaronwong@localhost~]$svncheckoutsvn://svn.mplayerhq.hu/ffmpeg/trunkffmpeg
Affmpeg/configure
Affmpeg/Doxyfile
Affmpeg/ffmpeg.c
Affmpeg/vhook
Affmpeg/vhook/imlib2.c
Affmpeg/vhook/drawtext.c
Affmpeg/vhook/fish.c
Affmpeg/vhook/null.c......
Subversion有许多特性、选项和华而不实的高级功能,但日常的工作中你只使用其中的一小部分,有一些只在特殊情况才会使用,在这一节里,我们会介绍许多你在日常工作中常见的命令。
典型的工作周期是这样的:
更新你的工作拷贝
svnupdate
做出修改
svnadd
svndelete
svncopy
svnmove
检验修改
svnstatus
svndiff
svnrevert
合并别人的修改到工作拷贝
svnupdate
svnresolved
提交你的修改
svncommit
更新你的工作拷贝
SVN简易使用手册介绍如何更新你的工作拷贝。当你在一个团队的项目里工作时,你希望更新你的工作拷贝得到所有其他人这段时间作出的修改,使用svnupdate让你的工作拷贝与***的版本同步。
$svnupdateUfoo.cUbar.cUpdatedtorevision2.
这种情况下,其他人在你上次更新之后提交了对foo.c和bar.c的修改,因此Subversion更新你的工作拷贝来引入这些更改。
让我们认真检查svnupdate的输出,当服务器发送修改到你的工作拷贝,一个字母显示在每一个项目之前,来让你知道Subversion对你的工作拷贝做了什么操作:
Ufoo文件foo更新了(从服务器收到修改)。
Afoo文件或目录foo被添加到工作拷贝。
Dfoo文件或目录foo在工作拷贝被删除了。
Rfoo文件或目录foo在工作拷贝已经被替换了,这是说,foo被删除,而一个新的同样名字的项目添加进来,它们具有同样的名字,但是版本库会把它们看作具备不同历史的不同对象。
Gfoo文件foo接收到版本库的更改,你的本地版本也已经修改,但改变没有互相影响,Subversion成功的将版本库和本地文件合并,没有发生任何问题。
Cfoo文件foo的修改与服务器冲突,服务器的修改与你的修改交迭在一起,不要恐慌,这种冲突需要人(你)来解决,我们在后面的章节讨论这种情况。请期待下节SVN简易使用手册介绍。

【编辑推荐】

  1. SVN使用手册之入门篇
  2. SVN管理与应用相关的资料参考手册
  3. Windows操作系统中SVN使用手册详解
  4. Centos下SVN的安装配置实用手册
  5. SVN服务器安装指导手册
责任编辑:佚名
相关推荐

2010-05-27 13:08:46

SVN简易使用手册

2010-05-26 12:59:48

SVN简易使用手册

2010-05-27 13:35:43

SVN简易使用手册

2010-05-26 13:32:16

SVN简易使用手册

2010-05-21 12:37:49

SVN使用教程

2010-05-26 14:01:47

SVN安装使用手册

2010-05-26 12:35:11

2010-05-20 19:12:37

2010-05-26 13:51:40

SVN安装使用手册

2010-05-26 12:45:49

SVN使用手册

2010-06-01 13:19:04

2010-06-13 17:07:10

Cacti使用手册

2010-05-17 14:53:16

Subversion使

2009-10-26 11:11:33

linux Emacs

2010-06-01 13:28:54

SVN客户端用户使用手

2011-08-09 13:22:31

iPhoneSqlite数据库

2009-12-02 18:03:00

PHP cURL

2010-08-31 08:59:06

marginHTML

2010-05-19 10:57:34

Subversion配

2013-10-31 14:55:22

点赞
收藏

51CTO技术栈公众号