版本控制软件——tortoiseSVN的基础使用
零 基本功能介绍... 2
一 安装及下载client端... 2
二 登陆和文件下载... 2
三 新增档案及目录到服务器中... 4
四 文件对比... 13
4.1 文件回溯... 13
4.2 历史版本对比... 15
五 取消绑定
六 现在文件如何和服务器关联
常见的版本控制软件有VSS、CVS和SVN
VSS(Visual Source Safe)为微软的产品,较为易学易用,使用微软的产品进行开发通常都用这个,但是VSS只能在windows平台上运行,并且不是免费软件,安全性也不高,因此应用并不太广泛。
CVS(Concurrent Version System)是免费开源的配置管理工具,其源代码和安装文件都可以免费下载。由于其简单易用、功能强大,跨平台,支持并发版本控制,而且免费,它在全球中小型软件企业中得到了广泛使用。不过CVS的部署比VSS要复杂一些。
SVN(Subversion)作为CVS的重写版和改进版,其目标就是作为一个更好的版本控制软件,取代CVS.总的来说,CVS在发展的过程中逐渐失去优势,已经不再适合现代开发,目前,绝大多数CVS服务已经改用SVN.
目前流行的Google Code开源项目托管平台就是使用SVN进行版本控制。
零 基本功能介绍和服务器架设
同步不状态,为文件夹左下角有一个对勾
未同步状态,为文件夹右下角有一个叹号。
我们称用来存放上传档案的地方就做Repository。第一次我们需要有一个新增(add)档案的动作,将想要备份的档案放到Repository上面。日后,当您有任何修改时,都可以上传到 Repository上面,上传已经存在且修改过的档案就叫做commit,也就是提交修改给SVN server的意思。针对每次的commit,SVN server都会赋予他一个新的版本。同时,也会把每次上传的时间记录下来。日后,因为某些因素,如果您需要从Repository下载曾经提交的档案。您可以直接选择取得最新的版本,也可以取得任何一个之前的版本。如果忘记了版本,还是可以靠记忆尝试取得某个日期的版本。
SVN的存放档案方式是采用差异备份的方式。也就是说,他只会备份有不同的地方。所以很省硬盘空间。此外,他也可以针对所谓的非文字文件进行差异备份
怎么样在Windows下面建立SVN Repository?
假设您已经安装前面所提及的TortoiseSVN这套软件,现在我们先告诉您如何用自己的硬盘或是随身碟当作SVN Repository的存放地点。如果您只想知道如何存取一个已经建立好的SVN Server上面的Repository,请直接跳过本节。
假设您的要放置Repository的地方是E槽。您需要先建立一个空的目录。以下面的例子而言,我们在E槽下面建立了一个名为svn_repo的目录。 SVN并没有限定Repository目录名称。您可以建立任何您自己喜欢的名称。但是,强烈建议勿使用非英文的档名(如中文或日文)。
透过您的档案管理员,在E:\svn_repo的Icon上面,按下鼠标右键后,选择TortoiseSVN->Create repository here。
接着,您会看到如下的一个窗口,这个窗口主要是问您,您希望使用的Repository数据库格式是FSFS还是BDB。基本上,请选择FSFS就可以了。按下OK按钮后,您将可以看到下一个画面。
这就表示您的SVN repository已经成功的建立了。接下来就是要把您的档案备份进来。日后,只要需要使用这个repository,我们就可以使用 file:///E:/SVN_REPO表示它。SVN就是透过这种URL的方式到如何与Repository取得联系。各种URL的格式如下:
file:///磁盘驱动器|/repository所在目录/子目录
http://账号@服务器名称/ repository所在目录/子目录
https://账号@服务器名称/ repository所在目录/子目录
svn+ssh://账号@服务器名称/ repository所在目录/子目录
其中,http表示使用一般的超文字传输通讯协议。https表示使用加密的超文字传输通讯协议。svn+ssh表示透过SSH加密通讯的管道,进行存取。
一 安装及下载client端
TortoiseSVN的官方下载地址是 http://tortoisesvn.net/downloads ,普通Windows用户下载32位软件即可,下载地址后面还有中文语言包(Language packs)提供,安装完后可以将TortoiseSVN的界面编程简体中文。
更为详细的TortoiseSVN使用帮助,请参考TortoiseSVN中文手册。
下载TortoiseSVN-1.8.8.25755-win32-svn-1.8.10,点击安装,几乎点击next就可以。安装完成后右击会出现,如下图。大部分的TortoiseSVN的操作都是透过档案管理员及鼠标右键就可以完成了。
二 登陆和文件下载
文件下载之前,管理员必须分配给使用者权限,权限是按文件夹分配的,没新建一个文件夹,管理员必须重新分配一次使用权限。
1新建文件夹,比如working,进入文件夹,点击右键——>SVN ckeckout——>输入用户名和密码(只用输入一次)
2 URL of repository 输入服务器地址https://192.168.5.3/svn/TFT.点击右边选择要下载的文件,点击OK,如图2
checkout directory 选择本地保存地址
checkout depth 有以下几个选项full recursive文件夹递归,immediate children,only file children,only this item
SVN关联的的核心是目录一致,关联是一定要对应位置一致。
3 点击OK,成功效果如图,38为下载日志的编号,在本地文件夹中就会有下载的文件了。
现在会看到working目录下面多了一个名为.svn的目录(这个目录是隐藏的,如果您的档案管理员没有设定可以看到隐藏目录,您将无法看到它) 。
SVN会在您的工作目录下,以及其子目录下建立这个.svn的子目录。由于,原来的repository是空的,所以我们现在的working目录也是空的。如果您现在checkout的是一个已经有内容的repository,您将会看到working目录下面现在多了许多目录及档案。
如果您要在一个已经存在的SVN Server上面checkout出上面的档案,您只需要给定正确的URL以及working目录的名称。就可以取得指定的档案及目录了。
三 新增档案及目录到服务器中
假设您开发的程序将放在前面建立的working目录下面的my_ prj子目录。如下所示:
3.1假设您已经编辑好档案,准备把他们放到SVN的repository中。您需要在my_prj目录的icon上面,按鼠标右键,并且选择TortoiseSVN->Add:
3.2在点击SVN commit,TortoiseSVN会把准备要加入的档案及目录,显示给您看。打勾的就是等下要被加入到Repository中的。如果您有某些档案或是目录不想在这次加入,您可以让该项目不要被勾选。如此,它就不会被加入到Repository去。
在recentmessages 中添加修改描述内容,按下OK后,传送完毕。
有一点要注意的是,这个Add的动作并未真正的将档案放到Repository中。仅仅是告知SVN准备要在Repository中放入这些档案。此时,如果您透过档案管理员查看这些档案,应该会看到一个白色红底的惊叹号在档案icon的下方。
这是表示您的working目录中的档案与Repository中的档案还没有同步。现在我们要多一个commit的动作。让这些档案真正的放入到 Repository中。您可以在my_prj目录的icon上或者是my_prj目录内的空白处按下鼠标右键,叫出如下的选单,并且选择SVN commit。
紧接着,您将会看到如下的窗口出现:
在这个窗口中,下半部会列出一个清单,让您清楚的了解到哪些档案要被commit到repository中。同样的,如果您有档案不想在这个时候commit到Repository,您可以取消选取的档案,这样他们就不会被commit到Repository中。
在档案列表的上方是Message栏,您可以在栏中输入本次commit的目的。这是十分重要的字段,当您commit的次数很多时,可以靠这个讯息知道版本与版本之间的差异。当您输入好Message,按下OK之后,就可以看到如下的窗口出现,通知您已经将指定的档案送到Repository中。
您可以到先前的folder中,确定是否所有的档案icon都有如下的绿色勾勾在上面,这样代表您的档案都正确无误的到repository中。
有时候,因为Windows本身的问题,您可能会看到有些icon没有变成绿色的勾勾。此时,多按F5几次,应该就可以解决这个问题。如果,仍然不行,表示您之前的commit动作真的有问题。请仔细检查之前的commit动作是否正确。
四 文件对比
4.1 文件回溯
有时我们需要回溯至特定的日期或是版本,这时就可以利用SVN的Update to revision的功能。在想要更新的档案或目录icon上面按下鼠标右键。并且选择TortoiseSVN->Update to revision。
在这个Update窗口中,您可以选择更新到最新版本(HEAD)。也可以选择更新到某个指定的版本(Revision)。当然,您可能早就记不起来正确的版本号码。可能只隐约的记得大概在什么时间。没关系,按下Show log按钮,您就可以回顾历史了。
所有您曾经做过的动作,及其日期与对应的版本都会列在这个窗口上面,只要在你想要的版上面点一下,让他变成反白,然后按下OK。这个版本就会自动填入Update窗口中的Revision字段中。您只要再按下一次OK,这个版本就会被取出来到您的硬盘中。
4.2 历史版本对比
选中比对的文件右击TortoiseSVN-> show log-> 选中比对两个文件-> compare revisions
4.3更新档案及目录
为何需要更新?由于版本控制系统多半都是由许多人共同使用。所以,同样的档案可能还有人会去进行编辑。为了确保您工作目录中的档案与Repository中的档案是同步的。建议您在编辑前都先进行更新的动作。在此,我们都先假设您已经将档案check out过一次。现在要说明的是如何在一个check out过的目录进行update。在想要更新的档案或目录icon上面按下鼠标右键。并且选择SVN Update。
正常的状况下,您可以看到如上的窗口。在这个窗口中会显示有哪些文件更新了。如果没有看到档案更新的相关信息,这表示您的目录中的档案已经是最新的,所以无须进行更新。
5 扩展功能
Copy/Tag/Branch/Release档案或目录
- 确认您要处理的档案或是目录已经是Repository中最新的版本。
- 在要处理的目录或是档案上面按下鼠标右键,选择TortoiseSVN->Branch/Tag。
- 在To URL处输入您要的目的地。
- branch:要产生一个分支。以区别与trunk不同的开发。
- tag:要形成一个标记,表示重要的milestone。
- release:表示一个已经正式的release的纪录。
- 其它:进行一个复制(copy)。
6 补充
5.1 SVN Update Error: Please execute the 'Cleanup'
原因有可能是
1. 有文件正在更新或上传,该文件夹被锁定。
2. 更新或上传的时候动作没有完成,导致本地存在锁定状态没有释放。
解决方法是
1. 对于上面的第1种情况,等待你所做的操作完成。
2. 对于第2种情况,把对应的文件来里的.svn里面的lock文件删除。
五 取消绑定
取消文件夹的SVN绑定:
点击文件夹--右键---选择TortoiseSVN-->Exprot.选择自己就可以。
六 解除后如何再次关联
和管联相同,注意目录的改变,要和以前一样。再次修改的在目录上cleanup。
七 删除
-
SVN服务器中可以删除文件夹但无法删除文件:解决办法
找到任一台连接SVN的电脑客户端,然后打开TortoiseSVN Browser,打开以后输入正确的URL,如图所示:
输入正确的身份验证信息后,在文件目录中找到对应的文件
找到该文件,右键会出现X删除,直接删除即可。
出现该问题的原因:SVN不允许在服务器端删除客户端上传的单一文件,除非将整个工程删除。如果想要删除某个文件,只能通过URL访问到后,进行删除。
-
六 现有文件和服务器关联
-
只要服务器目录和现有目录相对应就可以实现
来源于http://www.williamlong.info/archives/1878.html 版本介绍
http://www.ssc.stn.sh.cn/html/zsk/ITyw/2012-04/5744.html 锁介绍
http://www.cnblogs.com/blsong/archive/2010/09/02/1816124.html 使用介绍