您的位置:首页 > 其它

SVN commit,update用法

2015-06-30 23:29 375 查看
转自:
http://blog.csdn.net/studyvcmfc/archive/2009/09/07/4528896.aspx
您是否有过这样子的经验, 在编修档案的过程中, 尤其是在撰写程式档, 突然改烂了, 而想说: 如果我有办法知道刚才改了什么地方有多好! 或是在一份大作业或者是专案的情况下, 须要多个人一同改一份档案, 总须事先说好谁要改哪个档案, 改的时候别人都不能动,
以免在存档的时候被互相覆盖.

有这么苦吗?!

事实上这些工作,都可以交给一套完善的版本控制系统(Version Control System)来解决.接下来要介绍的这套系统名做[subversion] ,
subversion透过一个集中管理的档案库(repository),记录下每一次的更动,于是您可以取得每一次修改的纪录,甚至还可以多个人一起改, subversion会负责把两个人的修正合并起来!


安装Subversion

首先您须要在您所要工作的机器上安装Subversion 这套系统. 若您的机器上已经安装好了, 您可以跳过这一步.

若您在 FreeBSD 底下,请直接cd
/usr/ports/devel/subversion; make install
若您在Microsoft Windows底下,请至 http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 下载最新的Subversion安装档安装即可,或者是选择跟Explorer整合在一起,可以用右键来选择功能的 TortoiseSVN http://tortoisesvn.tigris.org/download.html

若您使用其他的系统,请参考 http://subversion.tigris.org/project_packages.html .目前Subversion能在许多的作业系统上面执行.


checkout

对于每一个专案,通常会有一个专属的档案库.若您不打算自行架设,您可以至 https://opensvn.csie.org 申请一个.

首先您需要从档案库中取一份资料至目前目录下.您需要使用 `svn checkout档案库路径[目的地路径]` ,例如说:
~$ svn checkout http://OpenSVN.csie.org/demo 
A demo

A demo/Makefile

A demo/integer.c

A demo/button.c

~$ cd demo # 切换到工作目录(demo) 下面

~/demo$


这时svn会自动建立一个目录, 若无指定`目的地路径` 的话则会以档案库路径最一个目路为准(以上例来说是demo) , svn 将会作用在这个目录底下.


一般操作

有两个重要的指令, 分别是svn update , 用来将档案库中的版本和本地端同步(例如说有别人已经修正并上传了) ; 另一个是svn status , 可以看到本地端更动尚未上传的情况. 若您尚不了解这是做什么的并没有关系, 接下来就会看到范例.


加入档案svn add

若要增加新的档案进来, 请透过`svn add <file name>`, 例如说我现在开始撰写newfile.c:
~/demo$ vim newfile.c # 开始编辑newfile.c

~/demo$ svn status # 看本地端的情况

? newfile.c # 前面加?表示该档案尚未加入版本控制

~/demo$ svn add newfile.c # 将其加入版本控制

A newfile.c

~/demo$ svn status # 看本地端的情况

A newfile.c # 有新增的档案, 尚未上传


若要在这底下开新的目录, 请透过`svn mkdir <dir name>` , 或是先开好目录, 再透过`svn add <dir name>` 亦可.


修改

这时, 我可以针对我手上这一份档案进行修改, 在我进行上传(commit)前, 别人并不会看到这个更动, 所以并不用担心我修正错误时, 别人会无法使用.
~/demo$ vim integer.c # 修改integer.c

~/demo$ svn status

A newfile.c

M integer.c # M 表是modified


commit

一旦修改到一个断落或完成时(若是在程式开发的情况下, 通常都是在至少可以顺利compile 过时)需要下commit 这个指令, 将我本地端的修改送回档案库; 而在每次commit 的时候, 可以顺便附带一个讯息, 表示这次commit 时修正了什么地方,
以方便之后在找寻的时候, 除了透过时间及作者外, 还能有一些其他的资讯. 我们称这个讯息为commit log , 建议最好要填写, 就算是只有一行五六个字, 也胜于什么都没有写. 若您的commit log 只有一行, 可以直接透过-m "<your commit log>" 加在commit 后面, 如:
~/demo$ svn commit -m "fix bug"


或是直接用svn commit , 这时它会自动跳出一个编辑器让您输入. 接着会看到像是这样的画面:
Sending newfile.c

Sending integer.c

Transmitting file data..

Committed revision 57.


表示完成, 此时在别的地方进行svn update 时, 就会含有刚才您更新的资讯.


总结

透过Subversion 进行开发的流程:

1.只有第一次的时候须要进行svn checkout , 之后请从2. 起即可
svn checkout <repository url>


2.假设有其他人在之间有进行修正, 所以先svn update 更新到最新的版本
svn update


3.进行修正

4.再同步一次
svn update


(这时可以再用svn status 观看一下目前的结果, 以及可以透过svn diff 观看修正内容. 这将在后文介绍)

5.若有问题则回3 再进行修正. 要不然确认后, 上传自己的修正
svn commit

在文章末尾转贴cu上一大牛的一篇文章,写得更加详细也更加复杂: http://blog.chinaunix.net/u2/67750/showart_1212829.html[/code] 
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: