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 这套系统. 若您的机器上已经安装好了, 您可以跳过这一步.
若您在 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能在许多的作业系统上面执行.
对于每一个专案,通常会有一个专属的档案库.若您不打算自行架设,您可以至 https://opensvn.csie.org 申请一个.
首先您需要从档案库中取一份资料至目前目录下.您需要使用 `svn checkout档案库路径[目的地路径]` ,例如说:
这时svn会自动建立一个目录, 若无指定`目的地路径` 的话则会以档案库路径最一个目路为准(以上例来说是demo) , svn 将会作用在这个目录底下.
有两个重要的指令, 分别是svn update , 用来将档案库中的版本和本地端同步(例如说有别人已经修正并上传了) ; 另一个是svn status , 可以看到本地端更动尚未上传的情况. 若您尚不了解这是做什么的并没有关系, 接下来就会看到范例.
若要增加新的档案进来, 请透过`svn add <file name>`, 例如说我现在开始撰写newfile.c:
若要在这底下开新的目录, 请透过`svn mkdir <dir name>` , 或是先开好目录, 再透过`svn add <dir name>` 亦可.
这时, 我可以针对我手上这一份档案进行修改, 在我进行上传(commit)前, 别人并不会看到这个更动, 所以并不用担心我修正错误时, 别人会无法使用.
一旦修改到一个断落或完成时(若是在程式开发的情况下, 通常都是在至少可以顺利compile 过时)需要下commit 这个指令, 将我本地端的修改送回档案库; 而在每次commit 的时候, 可以顺便附带一个讯息, 表示这次commit 时修正了什么地方,
以方便之后在找寻的时候, 除了透过时间及作者外, 还能有一些其他的资讯. 我们称这个讯息为commit log , 建议最好要填写, 就算是只有一行五六个字, 也胜于什么都没有写. 若您的commit log 只有一行, 可以直接透过-m "<your commit log>" 加在commit 后面, 如:
或是直接用svn commit , 这时它会自动跳出一个编辑器让您输入. 接着会看到像是这样的画面:
表示完成, 此时在别的地方进行svn update 时, 就会含有刚才您更新的资讯.
透过Subversion 进行开发的流程:
1.只有第一次的时候须要进行svn checkout , 之后请从2. 起即可
2.假设有其他人在之间有进行修正, 所以先svn update 更新到最新的版本
3.进行修正
4.再同步一次
(这时可以再用svn status 观看一下目前的结果, 以及可以透过svn diff 观看修正内容. 这将在后文介绍)
5.若有问题则回3 再进行修正. 要不然确认后, 上传自己的修正
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]
相关文章推荐
- Codeforces Round #311 (Div. 2)A Ilya and Diplomas
- 【面试总结】--记录一次面试经历
- 对于多表联合查询的一点理解
- c++中输出十进制,十六进制,八进制。默认输出十进制的数据和左右对齐
- iOS Portrait Landscape retina 4
- 14.04麒麟为/检查磁盘时发生严重错误的解决方法
- android sqlite的orm框架
- 和View Controllers一起工作
- mondb入手
- 二分算法
- 云计算名词解析
- Storm
- jaxp解析XML之DOM解析
- 关于签名
- 云计算的由来——开发过程和交付方式
- uva806 Spatial Structures 空间结构 (黑白图像的四分树表示)
- 百万级PHP网站架构工具箱
- Win7 ie的cookie存放路径
- ENode框架Conference案例分析系列之 - ENode框架初始化
- 《JavaScript高级程序设计》——笔记(2)