SVN基本使用

1:如何查看SVN上当前代码库的最新版本号是多少?

    打开右键菜单中的show log,然后看到一系列版本更新历史,最上面的那一行,即是最新版本号,所谓的head revision。

 

2:如何查看本地SVN管理的代码库的当前版本号是多少?

    打开右键菜单中的show log,然后看到一系列版本更新历史,显示为粗体的那一行即你本地当前的版本。

 

3:如何将本地代码库的版本回退到某一个旧版本?

    打开右键菜单中的update to revision 在弹出的对话框中进行版本号指定即可,如果选择head revision则更新为最新版本。

 

4:如何将服务器上的版本回退到某一个旧版本?

    将服务器上的版本回退到某一个旧版本我还没找到什么比较好的办法,现在的笨办法是先更一个旧版本到本地,然后没办法直接COMMIT上去,得先把整个文件夹下面的所有.SVN文件全部清除掉,然后覆盖本地一个版本,再进行COMMIT。

 

5:TortoiseSVN的export 和check out 有什么区别?

  、新建一个空的文件夹,右键点击它,可以看到TortoiseSVN菜单以及上面的SVN Checkout。 
  、不用管这个Checkout,我们选择TortoiseSVN菜单下的Export...,接着它会让你输入url。 
  、比如输入【迷宫探宝】的SVN地址是:http://game-rts-framework.googlecode.com/svn/trunk/ 
  、其他选项不需要更改,Omit externals不要勾选,HEAD Revision选中表示最新的代码版本,接着点击OK即可将代码导出到这个目录中。 
  而check out 意思 签出,虽然和Export的效果一样是把代码从服务器下载到本地,但是Checkout有验证的功能,Checkout到某处的代码,将会被TortoiseSVN监视,里面的文件可以享受各种SVN的服务。 

 

6:每次commit 代码需要注意哪些问题?
  如果你更新了目录中的文件,提交代码需要用到commit功能,commit的功能不仅仅是上传,他会和服务器上面的文件进行对比,假如你更新了某个文件而服务器上面也有人更新了这个文件,并且是在你checkout之后做的更新,那么它会尝试将你的更新和他人的更新进行融合(merge),假如自动merge不成功,那么报告conflict,你必须自己来手动merge,也就是把你的更新和别人的更新无冲突的写在一起。 
  commit的时候,最好填写Log信息,这样保证别人可以看到你的更新究竟做了写什么。这就相当于上传文件并且说明自己做了那些修改,多人合作的时候log非常重要。 
  TortoiseSVN的commit只会上传原先checkout然后又被修改了的文件,假如你新加入了某些文件,需要右键点击文件选择Add,然后文件上面会出现一个加号,在下次commit的时候它就会被upload并且被标记为绿色对勾。没有绿色对勾的文件不会被commit。 

7:clean up是什么东东?

     也许由于服务器问题,一个Subversion指令不能成功地完成,你的工作副本因此被滞留在一个不一致的状态。 那样的话,你需要在该目录上使用TortoiseSVN → 清理命令。在工作副本的根目录使用它是一个好主意。

     clean up还有一个用处就是,如果一个文件的日期改变了但是它的内容没有变, SVN不能知道倒底是不是发生了变化,除非跟旧文档做一个逐字节的比较。如果你有很多文件是这种状态,那就导致更新操作非常慢,系统响应也会受到影响。这时候运行一个clean up就能够使那些文件的状态变为正常,使得以后的检查速度变好起来。


SVN代码提交流程
前言:

经常从SVN上取最新代码下来后发现编译过不去,查找提交log找到之前提交的人,了解其提交代码的流程后,发现SVN代码提交流程有点问题. SVN代码提交虽然简单,但是如果没严格按照步骤来的话,很容易出错,出现代码覆盖,遗漏提交的情况。现在整理一个SVN提交代码流程的精简的版本。

有2种方法,推荐方法1。

方法1 通过本地SVN代码库中转提交:

1。本地SVN代码库更新

为了方便代码提交,建议本地维护一个与SVN对应的,只用来存放最新代码的本地SVN代码库(不做开发用)。其作用主要是用来在每次代码合并前,先从SVN上取最新代码。

(代码更新完毕后,如果修改不多,合并时间不会太长,则可以把代码库锁定:代码库文件夹右键--TortoiseSVN--Get lock...;如果修改太多,合并时间比较长,建议不要锁库)

2。合并本地开发库代码到本地SVN代码中

本地开发库代码可能是我们在一个月前,半个月前与SVN同步过,但是现在可能不一样了。我们现在要做的,是把本地开发库中的代码合并到前面1中的那个SVN代码库中去。

这里有一个非常重要的原则:合并代码的时候,我们只处理那些我们确认是我们自己新增的,修改的,删除的代码到本地SVN库中。任何不是我们做的修改,我们一律不要去动它。

 比如有一段代码我们我们开发的时候没有,但是现在本地SVN库里有,那我们不要去删除它,而是忽视它,因为它应该是其他人新增上来的。

(说明:如果碰到修改冲突,这个不多,如果是遇到这个情况,应该考虑如何把我们的修改加入到最新代码上去)

3。编译本地SVN库代码

编译通过了才能提交到。这个可以防止提交遗漏,保证其他人从SVN上取下来的文件都可以编译通过。

4。合并本地SVN代码到服务器SVN代码库中

现在,我们本地SVN代码库中已经有了我们本地要提交的代码了。

如果我们之前有锁库了,则可以直接就把代码提交上去了(提交时记得写上日志,以便后面修改调阅)。

如果之前没锁库,这个时候还不能马上就提交了。因为这个时候可能其他人又提交代码了。所以,我们要先把这个代码与服务器SVN的代码再diff一下,以确保要提交的内容就是我们修改的内容。

说明:如果发现有变动,则重复上面1,2,3,4操作。

5。提交完毕

如果有锁库,则要进行解锁。

方法2 直接在开发库提交:

1。直接更新本地开发库代码

更新过程中,可能会发现不少提示冲突的。

更新完毕,如果修改不多,像上面方法1的1一样,可以把库锁定。

2。备份冲突

逐一找出提示冲突的那些文件(比如test.cpp),ctrl+c,ctrl+V一下(多出个 复件 test.cpp来),把test.cpp删掉

3。解决冲突

等把所有有冲突的文件备份过后,重新更新所有代码,这时那些有冲突的文件都将回到目前最新的版本中。

把备份的文件(复件 test.cpp)和目前最新文件test.cpp进行对比,把属于我们的修改的代码合并到test.cpp中去。当然,如果功能冲突,则要考虑我们的修该该做如何变动。

如果仅仅是修改位置冲突,则挪下位置就可以了。

4。编译代码

编译有问题则要进行修改。

5。提交代码

如果之前有锁库,则可以填上日志,直接提交。

如果没锁库,则在提交之前还要再diff一下,以确保要提交的内容都是我们自己修改的内容。

PS: 如果中间又有人做修改,则重复1,2,3,4,5操作。

6。提交完毕

如果有锁库,则要进行解锁。

方法1和方法2的比较:

方法1 通过本地SVN代码库中转提交

缺点: 浪费空间 

优点: 比较安全。比如我们在进行提交到服务器SVN代码库中,如果操作失误(冲突合并错了),没关系,重新从本地开发库合并到本地SVN中再进行比较提交。

方法2 直接在开发库提交

缺点: 1)比较危险。因为我们是直接对本地开发库进行操作,万一在提交过程中发现错误了(比如冲突合并错了或代码删错了),则可能就没的恢复了。 2)不容易发现提交遗漏的情况.因为编译的时候,由于是代码都在本地,不容易发现代码提交遗漏

优点: 提交比较快,不用通过中转

所以推荐使用方法1。

附注:一般,我们提交代码时,为了减少合并冲突,最好都在群里告知项目组其他同学我要提交代码了,这样别人可以有意避开

svn 更新 合并 提交的区别
别人告诉的 原文复制

当本地文件没有改动,服务器文件改动的时候,更新会从服务器取文件覆盖当前文件
当本地文件有改动,服务器文件没改动的话,不会更新此文件
当本地文件有改动,服务器文件有改动的话,如果改动的部分不冲突,就会合并文件到本地,如果有冲突的话,会提示文件冲突,需要自己手动修改以后上传到服务器

最后一个讲解合并:
服务器和本地的同一个文件(所谓同一个文件应该就是SVN相对路径相同,文件名相同的文件,这个由SVN留在本地的信息决定)已经修改,且修改的部分不重合,不重叠
当满足上面的条件的时候再更新,SVN就会自动合并

SVN的奥妙之处就在于别人提交了修改后的文件,你再提交你的话,他是不允许你提交滴。。。

>>>>
<<<
里面标记的是冲突的区域,把冲突区域删除掉为什么还不能提交

解决办法1:

删掉的话还是没有解决冲突,文件后面还会有几个文件名相同,但是后缀不同的文件
如果你不知道用SVN解决冲突的话,最简单的办法是这样的
把这个文件改名字,然后在文件所在目录更新,这样就会把服务器文件下下来,然后把自己修改的部分添加到更新的文件里面,这样就可以提交了


解决办法2:

在文件上面点击右键,到SVN的菜单,应该有编辑冲突的按钮,选择就会出现一个窗口,一边是服务器版本,一边是自己修改的版本


SVN源代码管理心得

1.负责而谨慎地提交自己的代码(先更新后提交)

SVN更新的原则是要随时更新,随时提交。当完成了一个小功能,能够通过编译并且并且自己测试之后,谨慎地提交。
如果提交过程中产生了冲突,则需要同之前的开发人员联系,两个人一起协商解决冲突,解决冲突之后,需要两人一起测试保证解决冲突之后,程序不会影响其他功能。
如果提交过程中产生了更新,则也是需要重新编译并且完成自己的一些必要测试,再进行提交。

2.SVN源代码管理时要保持原子性的提交

每次提交的间歇尽可能地短,以一个小时,两个小时的开发工作为宜。如在更改UI界面的时候,可以每完成一个UI界面的修改或者设计,就提交一次。在开发功能模块的时候,可以每完成一个小细节功能的测试,就提交一次,在修改bug的时候,每修改掉一个bug并且确认修改了这个bug,也就提交一次。我们提倡多提交,也就能多为代码添加上保险。

3.SVN源代码管理时不要提交自动生成的文件

VisualStudio在生成过程中会产生很多自动文件,如.suo等配置文件,Debug,Release,Obj等编译文件,以及其他的一些自动生成,同编译代码无关的文件,这些文件在提交的时候不应该签入,如果不小心签入了,需要使用Delete命令从仓库中删除。这个可以使用SVN过滤功能,在设置里面设置ignorelists.

4.SVN源代码管理时不要提交不能通过编译的代码

代码在提交之前,首先要确认自己能够在本地编译。如果在代码中使用了第三方类库,要考虑到项目组成员中有些成员可能没有安装相应的第三方类库或者没有放入GAC(针对.NetFramework)中,项目经理在准备项目工作区域的时候,需要考虑到这样的情况,确保开发小组成员在签出代码之后能够在统一的环境中进行编译。

5.SVN源代码管理时不要提交自己不明白的代码

代码在提交入SVN之后,你的代码将被项目成员所分享。如果提交了你不明白的代码,你看不懂,别人也看不懂,如果在以后出现了问题将会成为项目质量的隐患。因此在引入任何第三方代码之前,确保你对这个代码有一个很清晰的了解。

6.SVN源代码管理时要提前宣布自己的工作计划

在自己准备开始进行某项功能的修改之前,先给工作小组的成员谈谈自己的修改计划,让大家都能了解你的思想,了解你即将对软件作出的修改,这样能尽可能的减少在开发过程中可能出现的冲突,提高开发效率。同时你也能够在和成员的交流中发现自己之前设计的不足,完善你的设计。

7.SVN源代码管理时要对提交的信息采用明晰的标注

+)表示增加了功能
*)表示对某些功能进行了更改
-)表示删除了文件,或者对某些功能进行了裁剪,删除,屏蔽。
b)表示修正了具体的某个bug
源代码管理时项目管理中很重要的一环,同时发现测试真的时很重要,一定要有专门的测试人员。

本节和大家一起学习一下TortoiseSVN客户端使用情况,主要从六个方面来介绍,和大家分享一下,希望通过本节的介绍大家对TortoiseSVN客户端使用方法有一定的掌握。
近一月,使用SVN来管理和提交工作文档,以及私人文档,感觉非常方便,特别是保持办公室的工作机和自己的笔记本之间文件的同步,非常简单好用。
本文不讨论有关SVN服务器的搭建和SVN的帐号管理等问题,仅叙述一下作为SVN客户端的用户的一些TortoiseSVN客户端使用心得:
环境:采用TortoiseSVN客户端。需要事先安装。

1、初次签出文件:(Checkout)
任意建立一个目录,比如:docs,然后进入该目录,在该目录右击,应该会看到一个"SVNCheckout...",点击,在弹出的窗口中填入:
URLofrepository:(SVN的仓库地址,可能是http://开头或者svn://开头的地址)
Checkoutdirectory:(这个通常不用变)
然后点击“OK”即可。其他选项可以暂时不管。
如果SVN仓库访问是需要密码的,点击“OK”后,会弹出要求填入用户名和密码的窗口,将其填入即可。(记住密码之后,以后就不用每次都填入密码了)

这个目录就是工作目录了,之后的所有操作,都会在这个目录之下进行了。你可以将该目录任意转移(整体转移),或更名(对于工作目录本身),都不影响目录内的文件内容。不需要了的话,直接整个目录删除就可以了,反正提交到仓库的文件,通过SVN仓库地址和密码都可以在任何地方,任何时候取回,非常方便。

2、将本地的文件提交到SVN仓库:(Commit)
在工作目录下,如果修改了文件或新建了新文件,为了让SVN来帮你管理他们,你就需要将它们提交到SVN中去。在工作目录中右击,会看到一个"SVNCommit...",点击,在弹出的窗口中,你会看到:
Committo:是提示你文件提交到的仓库的地址;
Message:这里你需要填入一些注释,说明为什么提交了这些文件,这些文件做了那些修改等等。当然,可以留空,不过,建议还是写点什么好,方便自己,也方便使用该仓库的其他用户。

Changesmade(double-clickonfilefordiff):
在这里,TortoiseSVN列出了目录下所有做了改变的文件(有些文件是做了修改,在TextStatus会显示"modified",仓库中没有的新增文件,在TextStatus中会"non-versioned",意思就是该文件没有纳入到版本控制中来。),将需要提交的文件勾选,点击“OK”,即可开始提交了。
成功提交后,TortoiseSVN会给出提交结果的窗口,显示那些是新增加的文件,那些是修改了的文件,那些是删除了的文件等等。最后一行,显示当前仓库的版本号。

3、工作目录下不同状态的文件呈现不同的图标,有打钩的(正常的、只读的),有注明惊叹号的(修改了的、冲突的),有注明加号的(需要添加的),有打岔的(待删除的),有加锁的(锁定的)等等。下面我们看一下TortoiseSVN客户端使用中的更改,删除,移动操作。

4、更名操作:直接在工作目录下更名,并不能使得文件在仓库中也更名,反倒可能产生重复的文件。如果需要对版本管理下的文件进行更名,在文件(或目录)上右击,选择“TortoiseSVN"->"rename...",然后提交,即可。不能在WINDOWS的资源管理器中像通常那样直接更名。
直接更名文件,再提交,可能会丢失原文件的版本信息,而利用“TortoiseSVN"的”rename"方法来更名,不会丢失原文件的版本信息。

5、删除操作:对文件的删除和更名操作一样,在工作目录下,直接将文件删除是起不到我们想要的结果的,应该像更名操作一样,在文件(或目录)上右击,选择“TortoiseSVN”->"Delete...",然后再提交。这样才能达到我们的效果。需要注意的是,你在工作目录中,利用Tortoise将文件删除了,只是意味着在最新版本(以及今后的版本)中,该文件不存在了,但是,如果你那天又想要该文件了,你只要恢复到合适的旧版本时,该文件也就会恢复了。这就是SVN的好处,它替我们记录下了所有对于文件的操作,我们不用害怕会误删文件。

6、移动操作:如果你希望将某个文件或目录移动到其他目录中去,然后将这种移动提交到SVN中去。和前面的更名操作、删除操作一样,直接在资源管理器中移动是起不到我们想要的效果的,正确的操作,实际上采用的是“更名”操作。比如,dic目录和文件file.txt都位于工作目录,现在你想要将file.txt移动到dic目录下,你需要进行的操作实际上是要将file.txt文件“更名”为./dic/file.txt文件,执行完更名操作后,提交,即可达到我们想要的效果了。
需要注意的是,如果dic目录是刚刚新建的一个目录,还没有添加到SVN时,将file.txt文件更名到dic目录下时,会出错,因为SVN现在还不认识dic目录。你需要做的,是先将dic目录添加到SVN中,然后再更名移动。本节介绍TortoiseSVN客户端使用完毕。

【编辑推荐】

  1. 专家推荐 TortoiseSVN中文使用手册新手必备
  2. 技术分享 SVN客户端安装及环境配置在Linux下如何进行
  3. 技术指导:TortoiseSVN在Windows客户端如何使用
  4. SVN客户端常用命令在线课堂
  5. 跟踪报道SVN客户端常用命令 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值