文档库 最新最全的文档下载
当前位置:文档库 › TortoiseSVN客户端常用命令详解

TortoiseSVN客户端常用命令详解

TortoiseSVN客户端常用命令详解
TortoiseSVN客户端常用命令详解

TortoiseSVN客户端常用命令详解

1、Checkout

首先要Checkout服务器端的Repository,

所谓的Checkout就是指获得服务器端指定的Repository存储的所有文件。Checkout的具体方式是:

在客户端新建一个空目录,比如:F:\Project1 (确保是空的)

在该目录上单击右键,在弹出式菜单中选中SVN Checkout...,

之后按要求录入内容:

然后点OK,会弹出一个认证对话框,

输入用户名和密码。

点OK后就完成了对Repository的Checkout。

检出后,所有检出文件上都打着绿色对勾:

命令方式检出

1:在DOS命令中输入需要检出的目录:

http://192.168.1.210:8081/svn/svnproject/Knowledge

2:其中,意思是,检出文档是放在D盘的根目录下,是检出文档的存放位置,如下图:

2、update

获取版本库中最新版本,具体的方法是:在WC目录上单击右键,SVN Update。

这时WC中的文件就是最新的版本了。

3、commit

commit功能就是将你本地的文件修改记录上传到服务器上面,可以理解为上传。

只会上传原先checkout然后又被修改了的文件,假如你新加入了某些文件,需要右键点击文件选择Add,然后文件上面会出现一个加号,在下次commit的时候才能选到该文件。commit页面:

注意:commit的时候,最好填写Log信息,

Log内容包括:修改了哪些东西及为什么做这些修改(what+why)

强制必须录入log: property 中设置录入log最小长度,此时commit必须录入log,否则不允许提交.

设置录入log最小长度页面:

4、add

将要添加的文件或者目录拷贝到WC下,

然后在该文件或目录上单击右键,TortoiseSVN->Add,点OK。如果添加了不止一个文件或目录,

则鼠标不要在WC中点中任何文件,

然后单击右键,TortoiseSVN->Add,

就可以添加多个文件或目录。

这时文件的状态图标会发生如下变化:

Add命令只是告诉本地的WC将该文件纳入版本管理,并没有将这个改变提交到服务器端,

在F:\Project1下单击右键,SVN Commit...,

将你所做的修改提交到Repository。

5、modify

用文本编辑器或IDE对文件修改后,

文件的状态图标会变化,

然后单击右键,SVN Commit... 即可提交修改。

6、revert

(1)、放弃未提交的修改,

单击右键,TortoiseSVN->Revert,

本地的WC中的文件和目录会恢复到修改前的状态。

(2)、回复到之前某个revision状态:

a、在本地WC中单击右键,TortoiseSVN->Update to Revision...,

然后输入你想要回复到的Revision号

点OK按钮。此时仅仅是WC中回复到特定版本,对Repository没有任何影响。

b、把Repository回复到某个revision状态方法:

方法一:

先执行Update命令将Working Copy更新到最新的Revision,

然后在Working Copy中单击右键,

TortoiseSVN->Show Log,

弹出的Log Messages窗口中会显示该Repository的所有Revision,

选中最新的Revision,之后按住Shift键,

再单击你想回复到的Revision+1的那个Revision

(比如Repository的最新Revision是79,

你想将Repository的状态回复到Revision60,

那么就选中Revision70,再按住Shift键,

选中Revision61,

就是说选中Revision61到Revision79之间的所有Revision)。

然后在选中的Revision上单击右键,

选中“Revert changes from these revision”。

再点Yes按钮,就可以将WC的状态回复到目标Revision60。

注意:此时只是WC回复到目标Revision,之后应该用Commit提交修改,

这样Repository最新状态就与WC的状态一致,都为 Revision60。

方法二:

采取大版本号向小版本号merge的方式,进行回滚

保证我们拿到的是最新代码,TortoiseSVN右键 merge,如果我们最新版本为79,要回滚到60,如下图,“From”的URL和“to”的URL均了录入要回复的文件在版本库的存放地址

点“merge”,然后commit即可。

7、delete

删除文件时,选中要删除的文件或目录,

单击右键,TortoiseSVN->Delete

孙管理第10

然后提交修改。

注意千万不要用windows自己的“删除”或者“Delete”键来删除文件,否则将无法提交你的修改。

这一点对目录的删除来说尤为重要。因为每个目录里有个 .svn隐藏目录,存放目录下文件的信息,使用操作系统命令delete/move时, .svn还指向原来的位置,所作操作不受SVN控制。

8、move

移动方法:

孙管理第11

(1)、选择你要移动的文件或目录

(2)、拖拽(right-drag)他们到新的工作副本下,

(3)、松开鼠标右键

(4)、在弹出菜单选择上下文菜单→ SVN 移动文件。

原理同上。

9、Branche/Tag

操作方法:

创建分支非常简单,只需在需要创建分支的工作目录上,使用TortoiseSVN → Branch/Tag 命令,在 "To URL" 项指定待创建的分支 url 即可

孙管理第12

实现本质:

subversion对分支和标签是通过复制一份最新的版本库的快照来实现的。

一般情况下,tag,是用来做一个milestone的,不管是不是release,都是一个可用的版本。这里应该是只读的,更多的是一个显示用的,给人一个可读(readable)的标记;branch,是用来做并行开发的,这里的并行是指和trunk进行比较。

分支与标签的区别:

在实现上,branch和tag,对于svn都是使用copy实现的,所以他们在默认的权限上和一般的目录没有区别。至于何时用tag,何时用branch,完全由人主观的根据规范和需要来选择,而不是强制的(比如cvs),一个不去做任何的修改的分支就是版本库某一时刻的一个快照,相当于为某一个版本做了一个标签

Branch和Tag都是拷贝指向原始文件的链接,当你对拷贝做修改时,记录为相对原始文件的修改,称为延迟拷贝,效率高且几乎不占用空间。

Tag:版本号是个好东西,但是我们更倾向于记住像第二预览发布版这样的名字,而不是V01这样的数字,标签是用来做这件事情的。版本控制系统可以让你给某一个时刻的一组文件或

孙管理第13

者一些目录或者整个项目分配一个名字。如果你个某几个文件分配标签“第二发布预览版”,以后就能使用这个标签签出它们。

标签是一种很好地跟中项目代码开发过程中发生的重要事件的方式。

分支合并:

使用TortoiseSVN → Merge命令,在“ From:(start URL and revision of the range to merge) ”中选择希望合并的目录 ( 如: trunk) ,并指定希望合并的开始 revision 编号,在“ To:(end URL and revision of the range to merge) ”中选择结束 revision 编号。

然后点击“ merge ”完成合并操作,剩下的工作就是编辑冲突了。当然运气好的话是不需要这个过程滴。值得注意的是,“ From: ”和“ To: ”中的 URL 通常是相同的,切记不要与创建分支时的含义混淆

10、get lock/release lock

选择工作副本中你想要获取锁定的文件,然后选择命令TortoiseSVN ---> Get lock…

孙管理第14

出现一个对话框,允许你输入注释,这样别人知道你为什么锁定这个文件。注释是可选的,并且只用于基于Subversion 的库。选择需要锁定的文件在复选框打勾,点击“确定”按钮锁定选择的文件:

孙管理第15

出现一个对话框,输入正确的用户名和密码即可向版本库提交你想锁定文件的信息。

锁定文件成功!返回信息!”Locked by admin”表示文件已被admin 用户锁

定;”alpay_payto.php”表示锁定文件的名称。点击”OK”按钮确定锁定文件成功。

孙管理第16

释放锁定(取消锁定)

选择工作副本中你想要取消锁定的文件,然后选择命令TortoiseSVN ---> Release lock…

之后操作同get lock。

当被锁定文件commit后,会自动解锁,无需再去解锁;如果commit后还需上锁,则在commit 时可选择:“keep lock”

孙管理第17

强制锁定:设置对象文件svn:needs-lock这个属性,update后强制文件的属性为只读,只有lock之后,才能对文件进行修改操作,commit-release lock之后,又自动变成只读。

具体做法:

先将a.jpg文件拷贝到WC中,然后在该文件上单击右键,

TortoiseSVN->Add,告诉Subversion要将该文件纳入版本控制,

接着在该文件上单击右键并选中属性,

在弹出的属性对话框中选中Subversion页。

在下拉框中选中“svn:needs-lock”,

孙管理第18

并在下面的文本框中填入“*”

(其实这里填什么都无所谓,只要文件有“svn:needs-lock”附加属性就行),

之后点Set按钮,“svn:needs-lock”附加属性就设置好了。

然后执行Commit命令提交修改。

这时当其他人执行Update时,

a.jpg就会添加到他们的WC中,

并且文件的附加属性也会随文件一起被得到。

可以看到a.jpg此时的图标就是灰色的,

文件的Windows属性也是只读的

11、clean up

SVN 本地更新时,由于一些操作中断更新,如磁盘空间不够,用户取消,

可能会造成本地文件被锁定的情况。一般出现这种情况的解决方法:

(1)、可以使用SVN clean up来清除锁定。

(2)、如果不是本目录锁定,系统提示上一层目录锁定,需要到上一层或者根目录中清除。孙管理第19

(3).如果在根目录下都无法clean的话,一般采取的方法是另外找一个目录重新check out。但有时SVN目录下可能有一些自己本地修改的文件,还未提交到SVN服务器,这时重新check out需要注意本地文件的备份,并且不要强制覆盖服务器上其它人修改的内容。

(4)、如果觉得第3种很麻烦,可以考虑这样的方法。其实SVN加锁会在.SVN(隐藏文件)中生成一个名字叫lock的文件(无后缀),查找所有的手工删除。然后再尝试更新,系统可能会提示某个.base文件无法访问。找到它,把相关的文件或其所在的目录删除,重新update。工作量就小多了。

12、export

集成测试或项目上线需要版本时,使用export而不用checkout,export 得到干净的目录与文件,不带版本控制因素。

13、Check for modifications

同服务器上的项目版本进行比较,并可做相应的修改。

孙管理第20

相关文档