1.svn 隐藏文件夹保存着SVN当前同步文件夹的一些元信息,不要修改,也不要删除 。 不过有时候被锁定的时候,可以删除这个文件夹中的lock文件以解锁,但是这样做有可能会造成同步错误。
2.添加文件的时候,需要在要添加的文件上点右键然后Add…,然后要想与服务器同步,还需要Commit提交。
3.提交失败的时候,可以试着先更新一下,或者清理一下,然后再提交。
4.平时开发过各中,可以一个人(小组)创建一个开发分支,这样每个人的文件同步不会跟其它人产生冲突。必要的时候可以进行分支合并。
5.如果删除了.svn文件夹,造成一个子文件夹不能同步 ,可以再把这个文件夹checkout一下,这样便可以重新恢复同步信息,自动建立.svn文件夹.
6.Update是与服务器最新版本保持同步,如果本地版本比服务器版本旧,则更新本地文件为服务器版本,如果本地版本比服务器版本更新,则不进行操作。
7.Commit是提交本地的修改文件,本地文件修改后,或者通过Add添加了新文件,或者通过Delete删除了文件,或者移动、复制了文件,都需要通过Commit提交来提交到服务器上。
8.Revert如果要恢复到服务器上的最新版本(某个版本),使用Revert
9.Update to version 是与服务器上的某个文件比较,如果服务器上的文件更新,则同步,否则不做操作。
10.Get lock…和Release lock,是用来锁定某些文件以阻止其它人改变的
11.Patch,批处理,查文档,它的大概意思是多人开发一个项目,可能有的人并没有commit权限,于是它便可以生成Patch然后由有commit权限的用户通过审核后,再Apply patch,应用修改。
12.Relocate 与Switch,前者是在改变URL/IP的时候使用,后者意思是改变目录,比如切换到某个branch
13.Resolve是用来解决冲突的。
14.如果已经有人lock了一个文件,但另外一个人需要编辑此文件,有两个选择,一个是由管理员来解除锁定,另外一个是在get lock选项中有个steal the locks,选择后,即可以编辑该文件
15.SVN的版本概念是针对目录而非文件,即使只更新了一个文件,那么,整体的版本也需要加1
16.推荐使用目录树为
/repos/trunk 用来保存主线,所有的code都存放在这个目录中
/repos/branches 用来保存目录分支,OEM、新功能、设计方案调整,都有可能需要创建分支目录
/repos/tags 用来保存标签拷贝,文档宝的阶段性成果可以打个标签存放到此目录下
17.SVN的上传和更新是异步的,可以分开操作,而不用担心在update的同时把自己不成熟的代码commit从而影响别人的工作。
SVN常用操作
a、保持客户端和服务器端的一致,从服务器上更新文件,update
b、对客户端文件的增、删、改、剪切,add,delete,copy,move
c、状态比较 status,diff
d、取消对服务器上文件的修改,revert
e、合并别人的修改(后更新的人需要做这个操作)update,resolved
f、客户端修改的文件更新到服务器上,commit
18.查询版本,不单单可以通过版本号查询,也可以通过关键字和版本的日期来查询 注意:如果给定时间的话,查询时需要在希望的日期上加一,如要查询2008-09-02的版本,应该使用2008-09-03,因为你只给了日期而没有给指定的时间点。
19.锁定-修改-解锁方案,拷贝-修改-合并方案使用的一般原则
如果是图像文件,一般使用锁定-修改-解锁方案,因为两个不同的版本没法合并
如果是文本文件,一般使用拷贝-修改-合并方案
20.锁定文件可以所单个,也可以锁多个,可以选择一个文件夹,然后在列表中勾选。并且,这个锁定是随时都可以解除的,选择unlock即可。
注意: 如果一旦提交了更新,那么所有的文件都将解锁,即使有部分文件可能还没有更新。 但是如果你在commit的时候,选择keep locks,则文件还是被锁定。
21.对客户端的目录或文件可以设置属性,可以从下拉列表中选择
如svn:needs-lock,就是对指定的对象设置只读权限,只有当该对象拥有锁定的权限后,才能对文件进行编辑,这样可以确定只有一个用户在操作该文件,避免像图像这样的文件只能线形操作而导致另外一个人工作的浪费。
22.即使客户端的文件test.doc被重命名了hello.rtf(使用svn重命名),但它的历史纪录仍然含有重命名以前的信息,并且可以将之前的版本给提取出来。即使再新建一个test.doc也不会有混淆。(查看历史纪录的时候需要把Stop on copy/rename这个选项的复选框的勾去掉)
23.SVN的复制比较特殊,如果复制一个目录,它其实并没有完全复制目录中的所有的文件,它只是建立一个目录树的入口,你可以把它理解为一个快捷方式,即使当你的新目录中的文件有了更改,它也只是更新你修改的文件,其他文件还是原文件夹的映射,没有更改。
24.对主干和分支上文件的修改互不影响。当完成了分支上所有工作,所有的分支修改可以被拷贝回到主干。
25.对同名文件的合并可以先用svn diff查看文件的区别,然后通过svn merge功能来合并文件。
26.如果需要解决版本的冲突,会在本地目录下产生同名的三个文件,初始的版本(在比较的左边)、最终的版本(在比较的右边)、接收区别的工作拷贝(合并的目标)。通过比较来手动合并版本,如果通过比较不需要将本地的修改合并到服务器上去,则使用revert回滚。
27.手工跟踪合并:SVN并不能完全自动合并冲突,比较合适的方法是在版本提交的日志信息中说明合并的特定版本号(或是版本号的范围),这样等到合并时可以运行svn log来查看分支包含了哪些修改。这样可以帮助依序进行合并而不会进行多余的合并。
28.预览合并:当工作拷贝已经改变,合并会针对存在的那一个文件,这时运行revert不会恢复在本地的修改,两部分的修改无法识别出来。解决这个问题的简单的方法就是使用diff来预览变化部分,通过显示合并时的状态信息,得到合并之后的“整体”预览。
29.svn diff和svn merge的区别:
30.将test.doc版本100重命名为ceshi.doc,同时新建一个文件test.doc为版本102。
这样区别就出来了:
svn diff命令忽略祖先,diff命令只是单纯地比较两条路经下的两个文件。
svn merge是比较两个对象,会注意到版本100和版本102的test.doc两个文件是不关联的。
31.SVN并没有真正意义上的重命名,move命令只是copy、delete两个命令的组合。
32.找回删除的项目:即使删除了文件或目录,SVN的信息从不丢失,只是从当前的HEAD版本消失了,但仍然存在于历史的早期版本。只要通过SVN的log来查看所有改变的每个项目的版本,找出你删除文件或目录的那个版本。
33.将所有的开发代码存放在trunk上。
常用分支模式:
a、发布分支:在代码发展到一定阶段,建立发布分支,将当前的一个版本取出来,拷贝到branches目录下,进行全面严酷的测试,如发现BUG则在当前版本进行修复,并同步更新trunk中的BUG,经测试完成后,将文件拷贝到tags目录中发布,并提交给客户。
b、特性分支:如果需要作复杂的修改,会影响到trunk代码的稳定性,则建议建立一个特性分支,等特性稳定之后,再和truck主干合并
34.标签TAG:它是某个项目,某个时间的一个快照,这个术语很常见,每次提交一个修订版本其实都是一个精确的快照。
35.SVN的数据存储格式有Berkeley DB和FSFS。我们现在所使用的版本默认为FSFS格式的数据存储。
36.SVN自带工具
(要使用这些工具可以在命令行模式下输入svnadmin help、svnlook help等指令即可)
Svnadmin:提供创建SVN版本库的功能,还可以用来维护这些版本库。
Svnlook:用来查看版本库中不同的修订版本和事物(它不会改变版本的内容)。
Svndumpfilter:可以简单快速的作为SVN版本库历史的以路经为基础的过滤器。
Svnsync:将一个版本库的历史转移到另外一个上。特点是可以远程操作(“源”、“目标”版本库以及svnsysnc程序可以在不同的计算机上使用。)
37.SVN节约磁盘空间的主要方法:
1、采用增量化技术,对两组数据,只记录其中的一组,另外一组只是存放与第一组有差别的部分。
2、由于客户端和服务器网络异常,或客户端svn进程异常中止,都可能导致文件提交的事务失败,可以删除意外中止的事务。可以使用$svnadmin lstxns myrepos来清除。
38.删除不使用的Berkeley DB日志文件
Svnadmin list –unused –dblogs /path/to/repos
Rm ‘svnadmin list –unused-dblogs /path/to/repos’
分享到:
相关推荐
1、cmd进入py文件目录下执行py文件加入--help查看帮助,命令C:\change-svn-wc-format>change-svn-wc-format.py --help 2、cmd执行下面命令,把项目对应SVN从1.5降为1..4 change-svn-wc-format.py d:\Mydropbox\...
为了在Eclipse中使用SVN,我们需要安装对应的插件。"SVN-site-1.8.22" 提供了这样的功能,它包含了所有必要的组件,允许用户在Eclipse内无缝地集成SVN工具链。 安装过程相对简单,只需将压缩包解压后得到的文件放入...
在本文中,我们将深入探讨Eclipse SVN插件(svn-site-1.6.17)及其相关组件,以帮助您更好地理解和使用这个强大的版本控制系统。 首先,Eclipse SVN插件提供了图形化的用户界面,使得用户可以方便地进行版本控制...
标题中的"mod_svn-1.7.10-ap24-x64.zip"表明这是一个与Subversion(SVN)相关的模块,版本为1.7.10,适配Apache服务器的版本为2.4(AP24),并且是针对64位操作系统的。Subversion是一个开源的版本控制系统,用于...
SVN-EclipsePlug-1.2.2的使用能够极大地方便开发者对代码版本的管理,提高工作效率,降低因代码冲突带来的问题。对于初学者,理解并熟练掌握SVN和Eclipse的集成是提升开发技能的重要一环。同时,随着版本控制技术的...
SVN使用--快速入手指南
svn-python-1.6.6.win32-py2.5.exe
标题"svn-1.4.6-setup"表明这是针对SVN 1.4.6版本的安装程序。该版本发布于2007年,虽然较早,但对于理解SVN的基本功能和工作原理仍然具有参考价值。"svn-1.4.6-setup.zip"是压缩包文件名,表明文件已打包为ZIP格式...
标题“svn-site-1.6.17”指的是Subversion(简称SVN)的一个特定版本,这里是1.6.17。Subversion是一款开源的版本控制系统,用于管理软件项目的源代码和其他文件,允许团队成员协作并跟踪每个更改。在软件开发中,...
7. **注意事项**:在实际使用中,确保你的MyEclipse版本与SVN插件兼容,否则可能会出现运行问题。此外,保持插件的更新,以获得最新的功能和修复的bug。 通过以上步骤,你就可以在MyEclipse中顺利地使用"SVN-site-...
压缩包中的"svn-1.4.6-setup.exe"是用于在Windows系统上安装SVN服务器的执行文件。通过运行这个安装程序,用户可以轻松地在本地计算机上设置一个SVN服务器,从而实现对项目代码库的托管。安装过程中,用户需要配置...
Eclipse SVN插件是开发人员在使用Eclipse IDE进行版本控制时的重要工具,它使得开发者能够在Eclipse环境中方便地与Subversion(SVN)服务器进行交互。本压缩包"eclipse_svn_site-1.10.5.zip"提供的是Eclipse SVN插件...
如果发现某个提交有问题,可以通过`svn revert`命令撤销本地更改,或者使用`svn merge --revert`命令回滚远程仓库的特定提交。这有助于快速恢复到之前稳定的状态。 ### 10. 分支与标签 SVN支持分支和标签机制,...
svn-site-1.8.16svn-site-1.8.16svn-site-1.8.16svn-site-1.8.16svn-site-1.8.16svn-site-1.8.16svn-site-1.8.16svn-site-1.8.16svn-site-1.8.16svn-site-1.8.16svn-site-1.8.16svn-site-1.8.16
svn-1.2.0-setup.exe svn subversion 版本
"TortoiseSVN-1.8.5.25224-x64-svn-1.8.8.msi"是TortoiseSVN的安装程序,这是一个Windows下的图形化SVN客户端。尽管不是直接与MyEclipse插件相关,但可能作为配套工具提供,以便用户在没有IDE支持的情况下也能进行...
在本例中,由于没有提供具体的插件下载链接,我们假设已有一个名为 "svn-site-1.8.21" 的压缩包,它可能包含了 SVN 插件的归档文件。 2. 解压 "svn-site-1.8.21" 压缩包,通常会得到一个包含 `.jar` 文件的文件夹。...
SVN,全称为Subversion,是一款广泛使用的版本控制系统,它能够跟踪文件和目录的变更,以便在多人协作的环境中管理代码和其他项目资源。SVN-site-1.8.22是SVN的一个特定版本,专注于提供网站或项目站点的部署功能。 ...
`svn-1.4.0-setup.exe`在客户端模式下安装同样简单,完成安装后,你可以通过命令行工具(如TortoiseSVN的右键菜单)或者集成开发环境(IDE)中的插件进行操作。客户端需要知道服务器地址(URL)才能连接到SVN仓库。 ...
标题 "svn-eclipse-site-1.6.10.zip" 提供的信息暗示这是一款与Subversion(SVN)集成的Eclipse插件的更新站点压缩包。Subversion是一种广泛使用的版本控制系统,而Eclipse是一种流行的开源集成开发环境(IDE)。这...