SVN — subclipse操作指引

gongshijun00 2009-10-15

  • 安装插件:请参照http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA
  • 导出项目:可以把本机已存在的工程导入到SVN库中进行共享管理,具体是选中某个工程再右击选择小组|共享项目...。在操作的过程中,默认以工程名为上传目录结构的根上传到代码库中,不过可以改名后再传。在操作的最后一步还是进行一次提交操作才能真真的把文件上传到服务器上去。
  • 图标说明:

    灰色向右箭头:本地修改过

    蓝色向左箭头:SVN上修改过

    灰色向右且中间有个加号的箭头:本地比SVN上多出的文件

    蓝色向左且中间有个加号的箭头:SVN上比本地多出的文件

    灰色向右且中间有个减号的箭头:本地删除了,而SVN上未删除的文件

    蓝色向左且中间有个减号的箭头:SVN上删除了,而本地未删除的文件

    红色双向箭头:SVN上修改过,本地也修改过的文件

  • 与代码库断开连接:可以与代码库断开,具体操作右击|小组|断开连接...,在操作过程中可以删除svn相关管理文件,也可保留。
  • 导入项目:可以从代码库上把工程导到本地,个体操作文件|导入...|SVN|从SVN检出项目。注:在此操作过程中有一个“选择检出的方式”选项,有两种,第一种是“做为新项目检出,并使用新建项目向导进行配置(仅当资源库中不存在.project工程文件时才可用,意思是如果代码库中有了这个工程文件,那么它就认为这是一个信息完整的工程,在导入的过程中就不需要再创建工程——选这选那的,因为.project工程文件中已包含了这一些列的信息,所以只有在代码库中不存在.project工程文件时才可选择)”;第二种是“做为工作空间中的项目检出”,这一选项不管代码库中是否有.project文件都是可以选择的,如果代码库中没有.project文件时,选择此种方式,会创建一个简单的工程,那不是Java工程,或其他代码工程,这种工程无不进行相应手工设置是不能进行相应开发的,所以在代码库上无.project工程文件导入时,最好选择前一选项,根据新建项目向导来进行相应设置并自动生成.project工程文件。
  • 更新操作:更新操作是把代码库最新的取到本地,不是是上传,上传操作是提交。
  • 添加文件或目录:如果将文件添加到项目中,它不会自动成为版本控制的一部分——您需要明确将其添加到特定的存储库中。右击新文件,然后选择Team>AddtoVersionControl。就是这样!下一次将此项目中的变更提交给存储库时,新文件也会检入。
  • 删除文件或目录:如果添加到了与项目不在相关文件,您可以轻松地删除它。右击文件,然后选择Delete(subclipse没有对应的删除菜单),插件会自动从本地svn配置文件上删除该文件。不需要使用Team菜单,Subclipse自动将标记要删除的文件,并将它从项目中移除。下一次将变更提交给存储库时,该文件被删除了。
  • 重命名文件或目录:要重命名Subclipse控制的文件或目录,请右击它,然后选择Rename。在输入字段中键入项的新名称,按Enter键。你会发现它调用move命令修改文件名,但此时未还未正正修改配置库,需等特下次提交。注意,Subclipse为修改名后的“新”文件添加的蓝色小加号而不是惊叹号。
  • 查看整个项目的修改的历史记录:选中工程,右击|小组|显示资源历史记录。
  • 退回修改文件或找回删除的文件:在历史记录中找到那条删除的日志,在日志上右击|从修订版本XX回复更改。
  • 覆盖/更新:在SynchronizewithRepository后,可对修改过的文件进行覆盖/更新操作,即用库上的代码覆盖本地代码。
  • 在提交你的变化之前,你可能想看一下自从你的上次更新以来是否服务器上有任何文件被修改,想要对比本地和服务器上的源代码,请使用Team——SynchronizewithRepository。这个命令让你看到有哪些内容已经被局部地修改,有哪些内容在服务器上修改,以及这两种修改之间的任何冲突。你还可以以可视化方式看到冲突的版本,并且在提交你的变化之前纠正任何比较突出的冲突。
  • 忽略文件:如果项目生成文件,或者包括您不想检入的Subversion存储库文件,则可以通知Subclipse忽略它们。右击您要在版本控制中排除的文件或目录,然后选择Team>Addtosvn:ignore即可显示Addtosvn:ignore对话框。
  • 提交更改:如果您对项目的变更感到满意,确定了您的代码可以编译,并且已经对变更进行测试,则应将它们提交给Subversion存储库。
  • 对于一个myeclipse建立的工程,我们只希望控制必要的源码,而下面几个文件和文件夹要加入到svn的忽略列表。当一个文件已经受版本控制之后,就不能在加入忽略列表了,只有新建的文件才可以加入忽略列表。要忽略的文件和文件夹:.myeclipse .settings .classpath .mymetadata .project classes
  • 不要把class目录上传到服务器上,起初我没有删掉它,更改提交没有问题,但在更新时总是报错:……Working copy not locked; this is probably a bug, please report svn:……,提示就是class目录下的.svn有毛病。原因可能是在Eclipse编译时,将src目录下的svn配置一起编译到了class文件中,并且在编译时先会删除class中的内容,再编译,这就导致了本地配置与配置库上不一致。需要注意的是,请不要将动态生成的目录添加到SVN,否则其他人Check out的之后,再Update容易出错,例如class目录,不需要提交上去。

  • svn:need-lock属性,可以用来在文件(例如,对二进制文件非常有用)上强加排斥锁。一个定义了svn:need-lock属性的文件一次只能被一个人修改。当该文件被检出时,它是只读的。如果你想修改该文件,你需要首先使用"Team>Lock"菜单选项。之后,使用"Team> Unlock"释放该文件,或仅提交你的变化,也会释放锁,但别人的文件还是只读的,只有别人在获取了锁之后,再能修改该文件。其实该属性以一种强迫的属形势让用户在修改前一定要选获取锁,再能修改该文件,这样就不需要等到提交时再发现早已被别人锁住了。

  • Tag和Branch:在Subversion中,很容易创建新的tag和branch。你可以使用tag来标识一个特定的版本(使用一种可读的名字,例如"Release 1.0");而一个branch用于新的开发工作而不影响主源码基(称作trunk)。在一个branch上的开发仍会继续进行,直到开发者已经为把变化集成回主trunk作好准备。

    在Subversion中,branch和tag都是通过制作给定修订的一个虚拟副本(以另一个名字和/或另一个目录)创建的。在常规情况下,branch存储在branches目录下,tag位于tags目录下,尽管在实践中为了满足你的工程你可以使用自己的任何定制。

    从Eclipse中,"Team>Branch/Tag"菜单能够使你创建branch和tag。其中,Browse按钮提供了一种方便的方法来查看有哪些branch和tag存在于仓库中。

    当你使用"Team>Switch"创建成功一个新的branch或tag时,你可以非常容易地在branches之间进行切换。无论何时你切换到一个不同的branch(或返回到trunk),Subversion将仅更新文件(它需要保持你的当前工作的副本与目的branch之间的同步)。
  • 修订历史:你跟踪你的源码的变化。"Team>Show in Resource History"菜单选项能够使你查询这些变化的列表(包括对一个文件,目录或甚至整个工程的改。

相关推荐