SVN commit,update用法[转]

转自:
http://blog.csdn.net/studyvcmfc/archive/2009/09/07/4528896.aspx


您是否有过这样子的经验, 在编修档案的过程中, 尤其是在撰写程式档, 突然改烂了, 而想说: 如果我有办法知道刚才改了什么地方有多好! 或是在一份大作业或者是专案的情况下, 须要多个人一同改一份档案, 总须事先说好谁要改哪个档案, 改的时候别人都不能动, 以免在存档的时候被互相覆盖.

有这么苦吗?!

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

安装Subversion

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

  1. 若您在 FreeBSD 底下,请直接cd /usr/ports/devel/subversion; make install
  2. 若您在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
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Idea SVN只能update而不能commit的原因是因为Idea SVN是用于从代码版本控制系统中获取最新更新内容的工具。当我们在Idea中使用SVN进行update操作时,它会将最新的代码更新到本地工作副本中,以便我们能够获取其他团队成员提交的最新代码。 而commit操作则是将我们在本地对代码的修改提交到版本控制系统中,使其他团队成员能够获取到我们的修改。在Idea中,我们通常使用SVNcommit功能来将我们的代码修改提交到远程版本库。 由于在Idea使用SVN时只能使用update功能,而不能使用commit功能,可能是由于以下几个原因: 1. 权限问题:你没有使用SVNcommit功能的权限,可能是因为你的用户角色在SVN版本库中没有被授予相应的commit权限。 2. 配置问题:可能是你的Idea中SVN插件的配置出现了问题。你可以尝试检查SVN插件的配置,并确保它正确地连接到了你需要提交代码的远程版本库。 3. 工作副本状态问题:Idea SVN只能在你的本地工作副本是干净的状态下进行commit操作。如果你的本地工作副本有未提交的修改或冲突,那么SVN是不能执行commit操作的。 如果你想在Idea中进行commit操作,你可以尝试检查以上几个问题,并寻找相应的解决方法来解决你无法commit的问题。另外,你也可以使用其他SVN客户端软件来代替Idea进行commit操作,以达到你的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值