svn使用需要注意的
每次提交代码需要注意哪些问题 :
如果你更新了目录中的文件,提交代码需要用到commit功能,commit的功能不仅仅是上传,他会和服务器上面的文件进行对比,假如你更新了某个文件而服务器上面也有人更新了这个文件,并且是在你checkout之后做的更新,那么它会尝试将你的更新和他人的更新进行融合(merge),假如自动merge不成功,那么报告conflict,你必须自己来手动merge,也就是把你的更新和别人的更新无冲突的写在一起。
commit的时候,最好填写Log信息,这样保证别人可以看到你的更新究竟做了写什么。这就相当于上传文件并且说明自己做了那些修改,多人合作的时候log非常重要。
TortoiseSVN的commit只会上传原先checkout然后又被修改了的文件,假如你新加入了某些文件,需要右键点击文件选择Add,然后文件上面会出现一个加号,在下次commit的时候它就会被upload并且被标记为绿色对勾。没有绿色对勾的文件不会被commit。
假如你需要给带有绿色对勾文件改名或者移动它的位置,请不要使用windows的功能,右键点击它们,TortoiseSVN都有相应的操作。想象这些文件已经不在是你本地的东西,你的一举一动都必须让Tortoise知道。
假如修改了某个文件但是你后悔了,可以右键点击它选择Revert,它将变回上次checkout时候的情况。或者Revert整个工程到任意一个从前的版本.
下面描述在使用Commit时的几个注意点:
如有多个文件需要同时提交,同时文件在不同的目录下,必须找到这些文件的最短目录上点击Commit,TortoiseSVN会搜索被点击目录以及该目录下所有的文件,并将修改变动的文件罗列在列表中。
仔细查看列表中的文件,确定哪些文件时需要更新的,如果不需要更新某个已经变化了的文件,只需要在该文件上点击右键,选择还原操作;选择需要新增的文件,不要将临时文件添加到版本库中。
如遇到文件冲突(冲突:要提交的文件已被其他人改动并提交到版本库中)要启用解决冲突功能。
其他的注意事项
1. 文件应该按组提交。即一个功能或一次修改用到的文件一次提交而不是分开提交。
2. 确保每一次提交的版本都是可用的,而不是编译都通不过的。如果多个人的提交相互依赖,应该一个人为主,其他人提交patch给他,合并后一次提交。
3. .svn 隐藏文件夹保存着SVN当前同步文件夹的一些元信息,不要修改,也不要删除。 不过有时候被锁定的时候,可以删除这个文件夹中的lock文件以解锁,但是这样做有可能会造成同步错误。
4. 添加文件的时候,需要在要添加的文件上点右键然后Add...,然后要想与服务器同步,还需要Commit提交。
5. 提交失败的时候,可以试着先更新一下,或者清理一下,然后再提交。
6. 如果删除了.svn文件夹,造成一个子文件夹不能同步 ,可以再把这个文件夹checkout一下,这样便可以重新恢复同步信息,自动建立.svn文件夹.
7. Update是与服务器最新版本保持同步,如果本地版本比服务器版本旧,则更新本地文件为服务器版本,如果本地版本比服务器版本更新,则不进行操作。
8. Commit是提交本地的修改文件,本地文件修改后,或者通过Add添加了新文件,或者通过Delete删除了文件,或者移动、复制了文件,都需要通过Commit提交来提交到服务器上。
9. Revert如果要恢复到服务器上的最新版本(某个版本),使用Revert
10. Update to version 是与服务器上的某个文件比较,如果服务器上的文件更新,则同步,否则不做操作。
11. Get lock...和Release lock,是用来锁定某些文件以阻止其它人改变的
12. Resolve是用来解决冲突的。
13. 如果已经有人lock了一个文件,但另外一个人需要编辑此文件,有两个选择,一个是由管理员来解除锁定,另外一个是在get lock选项中有个steal the locks,选择后,即可以编辑该文件
14. SVN的版本概念是针对目录而非文件,即使只更新了一个文件,那么,整体的版本也需要加1
15. SVN的上传和更新是异步的,可以分开操作,而不用担心在update的同时把自己不成熟的代码commit从而影响别人的工作。
16. SVN并没有真正意义上的重命名,move命令只是copy、delete两个命令的组合。
17. 找回删除的项目:即使删除了文件或目录,SVN的信息从不丢失,只是从当前的HEAD版本消失了,但仍然存在于历史的早期版本。只要通过SVN的log来查看所有改变的每个项目的版本,找出你删除文件或目录的那个版本。
18. 如果需要解决版本的冲突,会在本地目录下产生同名的三个文件,初始的版本(在比较的左边)、最终的版本(在比较的右边)、接收区别的工作拷贝(合并的目标)。通过比较来手动合并版本,如果通过比较不需要将本地的修改合并到服务器上去,则使用revert回滚。
19. 手工跟踪合并:SVN并不能完全自动合并冲突,比较合适的方法是在版本提交的日志信息中说明合并的特定版本号(或是版本号的范围),这样等到合并时可以运行svn log来查看分支包含了哪些修改。这样可以帮助依序进行合并而不会进行多余的合并。
20. 预览合并:当工作拷贝已经改变,合并会针对存在的那一个文件,这时运行revert不会恢复在本地的修改,两部分的修改无法识别出来。解决这个问题的简单的方法就是使用diff来预览变化部分,通过显示合并时的状态信息,得到合并之后的“整体”预览。