TotoiseSVN的基本用法

一、签入源码到SVNserver

假如我们使用Visual Studio在目录StartKit中创建了一个项目。我们要把这个项目的源码签入到SVN Server上的代码库中里。首先右键点击StartKit目录,这时候的右键菜单例如以下图所看到的:

图2-2-1

点击Import。弹出以下的窗口。当中http://zt.net.henu.edu.cn 是server名。svn是代码仓库的根文件夹。StartKit是我们在上个教程中加入的一个代码库:

说明:左下角的CheckBox。在第一次签入源码时没实用,可是,在以后你提交代码的时候是很实用的。

图2-2-2

点击OKbutton。会弹出以下的窗口,要求输入凭据:

图2-2-3

在上面的窗口中输入username和password,点击OKbutton:

图2-2-4

如上图所看到的。好了,源码已经成功签入SVNserver了。这时候团队成员就能够迁出SVNserver上的源码到自己的机器了。

二、签出源码到本机

在本机创建目录StartKit,右键点击Checkout,弹出例如以下图的窗口:

图2-2-5

在上图中URL of Repository:下的文本框中输入svn server中的代码库的地址,其它默认。点击OKbutton,就開始签出源码了。

说明:上图中的Checkout Depth,有4个选项。各自是迁出所有、仅仅签出下一级子文件夹和文件、仅仅签出文件、仅仅签出空项目。默认的是第一项。上面的样例中。我们也能够使用web的方式訪问代码库,在浏览器中输入http://zt.net.henu.edu.cn/svn/StartKit/

这时候也会弹出对话框。要求输入username和password,通过验证后就可以浏览代码库中的内容。

搞定。源码已经成功签出到刚才新建的StartKit文件夹中。

打开StartKit文件夹,能够看到例如以下图的文件夹结构:

图2-2-5

一旦你对文件或目录做了不论什么改动。那么文件或目录的显示图片机会发生变化。下图中我改动了当中的二个文件:

图2-2-7

大家看一下不同状态所相应的图片:

图2-2-8

我们已经知道怎么将源码签入到SVNserver,怎么从server签出代码到本机。也简单了解了不同状态所相应的图案啦。

三、提交改动过的文件到SVNserver

上面的图2-2-7中。我改动了位于Model文件里的二个文件ImageInfo.cs和NewsInfo.cs,以下演示怎样提交到SVNserver。

注意:提交源码到server时,一定确保本机的代码是最新版本号。否则可能提交失败,或者造成版本号冲突。

在Model目录上点击右键或在Model文件下的空白处点击右键,点击SVN Commit…弹出以下的窗口:

图2-2-9

点击OKbutton后,弹出例如以下图的窗口:

图2-2-10

四、加入新文件到SVNserver

我们在Model文件下加入一个新的类文件UserInfo.cs,在Model文件下的空白处点击右键,点击SVN Commit…。和上面讲的提交改动过的文件到SVNserver一样。就能够了。

另外也能够在文件UserInfo.cs上点击右键。点击TortoiseSVN=>>Add。弹出例如以下图的窗口:

图2-2-11

选中UserInfo.cs文件,点击OKbutton。这样并没有将这个文件提交到SVNserver。仅仅是将这个文件标记为源码库库中的文件,并将其状态置为改动状态。之后。我们要再SVN Commit这个文件一次,才干够将其真正提交到SVNserver上的代码库中。

上面讲是加入文件。实际上。加入目录的步骤也是一样的,这里就不说了。

五、更新本机代码与SVNserver上最新的版本号一致

这个也非常easy。仅仅要在须要更新的目录上点击右键或在该文件下的空白处点击右键。点击SVN Update,就能够了。

注意:更新操作可能会由于版本号冲突而失败。这是能够使用合并【Merge】或其它方法解决。也可能由于锁定【Get Lock】而失败。这是须要先解锁【Release Lock】。

六、重命名文件或目录,并将改动提交到SVNserver

仅仅要在须要重命名的文件或目录上点击右键。点击TortiseSVN=>>Rename…,在弹出的窗口中输入新名称。点击OKbutton,就能够了。

此方法也不是直接重命名,而是将该文件或目录的名称标记为重命名后名称,也须要我们使用SVN Commit提交到SVNserver后才真正重命名。

七、删除文件或目录。并将改动提交到SVNserver

最简单就是,你直接删除文件或目录,然后使用SVN Commit提交更新到SVNserver。

第二种方法是在你要删除的文件或目录上点击右键=>>TortoiseSVN=>>Delete删除,此方法也不是直接删除,而是将该文件或目录的状态置为删除。也须要我们使用SVN Commit提交到SVNserver后才真正删除。

说明:实际上,从你把源码迁签入SVNserver開始,每个版本号的数据和文件。就算是你已经删除了的,也都能够随时迁出。

以上仅仅是TortoiseSVN最简单的几个功能。事实上他的功能远不止这些,其它的功能大家能够在使用的过程中慢慢体会,有些功能我会在以下的教程中使用到。到时候会和大家讲清楚使用方法。

注意:向SVNserver提交源码的时候,一定不要提交bin、obj等文件夹,否则会非常麻烦。

可是web项目的bin文件夹除外。可是web项目的bin文件夹中的引用其它项目而生成的dll不须要提交。

一个好习惯:假设项目中引用了其它的第三方的程序集,比方EnterpriseLibrary、FCKEditor等,这时候不要简单从他们的安装位置引用,而是在你的解决方式下,加入一个Library的文件夹。把须要的程序集拷贝到这里,然后从Library文件夹引用,这样有什么优点,自己想一想吧!

Tortoise SVN client 基本使用方法

1. export 和check out

export 下载源码

使用方法:

1、新建一个空的目录,右键点击它,能够看到TortoiseSVN菜单以及上面的SVN Checkout。

2、不用管这个Checkout。我们选择TortoiseSVN菜单下的Export...,接着它会让你输入url。

3、比方输入【迷宫探宝】的SVN地址是:http://game-rts-framework.googlecode.com/svn/trunk/

4、其它选项不须要更改,Omit externals不要勾选,HEAD Revision选中表示最新的代码版本号,接着点击OK就可以将代码导出到这个文件夹中:)

check out 意思签出,尽管和Export的效果一样是把代码从server下载到本地,可是Checkout有验证的功能。Checkout到某处的代码,将会被TortoiseSVN监视,里面的文件能够享受各种SVN的服务。

2 .每次提交代码须要注意哪些问题

假设你更新了文件夹中的文件,提交代码须要用到commit功能,commit的功能不不过上传,他会和server上面的文件进行对照,假如你更新了某个文件而server上面也有人更新了这个文件,而且是在你checkout之后做的更新,那么它会尝试将你的更新和他人的更新进行融合(merge),假如自己主动merge不成功,那么报告conflict,你必须自己来手动merge,也就是把你的更新和别人的更新无冲突的写在一起。

commit的时候。最好填写Log信息,这样保证别人能够看到你的更新到底做了写什么。这就相当于上传文件而且说明自己做了那些改动,多人合作的时候log很重要。

TortoiseSVN的commit仅仅会上传原先checkout然后又被改动了的文件。假如你新增加了某些文件。须要右键点击文件选择Add,然后文件上面会出现一个加号。在下次commit的时候它就会被upload而且被标记为绿色对勾。没有绿色对勾的文件不会被commit。

假如你须要给带有绿色对勾文件改名或者移动它的位置,请不要使用windows的功能,右键点击它们。TortoiseSVN都有对应的操作。

想象这些文件已经不在是你本地的东西,你的一举一动都必须让Tortoise知道。

假如改动了某个文件可是你懊悔了,能够右键点击它选择Revert,它将变回上次checkout时候的情况。或者Revert整个project到随意一个从前的版本号.

以下描写叙述在使用Commit时的几个注意点:

-------------如有多个文件须要同一时候提交,同一时候文件在不同的文件夹下,必须找到这些文件的最短文件夹上点击Commit,TortoiseSVN会搜索被点击文件夹以及该文件夹下全部的文件,并将改动变动的文件罗列在列表中。

-------------细致查看列表中的文件,确定哪些文件时须要更新的,假设不须要更新某个已经变化了的文件。仅仅须要在该文件上点击右键,选择还原操作;选择须要新增的文件,不要将暂时文件加入到版本号库中。

-------------如遇到文件冲突(冲突:要提交的文件已被其它人修改并提交到版本号库中)要启用解决冲突功能。

3. 怎样保持本地版本号和server版本号同步

使用update来同步本地和server上的代码。相同是右键选择SVN update,全部的更改就会从server端传到你的硬盘。

注意。假如别人删除了某个文件,那么更新之后你在本地的也会被删除。

假设本地的代码已经被改动。和commit一样会先进行merge,不成功的话就会报告conflict

4 怎样在同一个在一个project的各个分支或者主干之间切换

使用tortoise SVN-->switch

在URL中输入branch或trunk的url地址

5.怎样比較两个版本号之间的区别

本地更改

假设你想看到你的本地副本有哪些更加,仅仅用在资源管理器中右键菜单下选TortoiseSVN→ 比較差异。

与另外一个分支/标签之间的差异

假设你想查看主干程序(假如你在分支上开发)有哪些改动或者是某一分支(假如你在主干上开发)有哪些改动,你能够使用右键菜单。在你点击文件的同一时候按住Shift键,然后选择TortoiseSVN→ URL比較。在弹出的对话框中,将特别显示将与你本地版本号做比較的版本号的URL地址。

你还能够使用版本号库浏览器,选择两个文件夹树比較,或许是两个标记,或者是分支/标记和最新版本号。邮件菜单同意你使用比較版本号来比較它们。

阅读第 5.9.2 节 “比較文件夹”以便获得很多其它信息。

与历史版本号的比較差异

假设你想查看某一特定版本号与本地拷贝之间的差异,使用显示日志对话框。选择要比較的版本号,然后选择在右键菜单中选与本地拷贝比較差异

两个历史版本号的比較

假设你要查看随意已提交的两个历史版本号之间的差异,在版本号日志对话框中选择你要比較的两个版本号(一般使用 Ctrl-更改)。然后在右键菜单中选比較版本号差异

假设你在目录的版本号日志中这样做,就会出现一个比較版本号对话框,显示此目录的文件改动列表。

阅读第 5.9.2 节 “比較目录”以便获得很多其它信息。

提交全部改动

假设你要在一个视窗中查看某一版本号的全部更改,你能够使用统一显示全部比較 (GNU 片段整理)。它将显示全部改动中的部分内容。它非常难显示一个全面清晰的比較,可是会将全部更改都集中显示出来。在版本号日志对话框中选择某一版本号。然后在右键菜单中选择统一显示全部比較。

文件差异

假设你要查看两个不同文件之间的差异,你能够直接在资源管理器中选择这两个文件(一般使用 Ctrl-modifier),然后右键菜单中选TortoiseSVN→ 比較差异。

WC文件/目录与URL之间的比較差异

假设你要查看你本地拷贝中的任一文件与版本号库中任一文件之间差异。

谴责信息之间的比較差异

假设你要查看的不仅是比較差异并且包含改动该版本号的作者。版本号号和日期,你能够在版本号日志对话框中综合比較差异和谴责信息。这里有很多其它具体介绍第 5.20.2 节 “追溯不同点”。

比較目录差异

TortoiseSVN 自带的内置工具不支持查看多级文件夹之间的差异,但你能够使用支持该功能的外置工具来替代。在这里 第 5.9.4 节 “其它的比較/合并工具”我们能够介绍一些我们使用过的工具。

6.提交代码时如何知道自己改了哪些文件,别人改了哪些文件

7. 怎样知道某个文件的某一行是谁在哪个版本号改动的

8. 怎样为一个SVN主project建立分支或tag

创建分支使用步骤:

1、选择你要产生分支的文件,点击鼠标右键。选择[分支/标记...]

2、在[至URL(T)]输入框中将文件重命名为你的分支文件名称,输入便于区分的日志信息。点击确认。

3、在SVN仓库中会复制一个你所指定的文件,文件名称称就是你所命名的。可是在你的本地文件夹上看不到新建的分支文件名称。要使你的文件更新作用到你的分支上。你必须选择文件,点击鼠标右键。选择[切换...],选择你重命名的文件,点击确定就可以。这样你的本地文件就和分支文件关联上了,不要奇怪。这时本地文件夹上看到的文件名称仍然为旧的文件名称。

经验小结:

1、假设操作的文件之前还未提交,而你又想把文件提交到新的分支上,记得一定要选择切换

2、SVN分支的管理实际上就是把不同的分支用不同的文件保存,因此你在取得新版本号的时候会发现,不同分支的最新文件也会被获取下来。

创建tag操作,相当于把当前的代码版本号复制一份到其它地方。然后以这个地方为出发点进行新的开发,与原来位置的版本号互不干扰。

对于branches、tags、trunk这三个文件夹,并非subversion必需的。而是被总结的一种良好的团队开发习惯,其用法为:

1、开发人员提交全部的新特性到主干。 每日的改动提交到/trunk:新特性。bug修正和其它。

2、这个主干被复制到“公布”分支。 当小组觉得软件已经做好公布的准备(如,版本号1.0)然后/trunk会被复制到/branches/1.0。

3、项目组继续并行工作,一个小组開始对分支进行严酷的測试。同一时候还有一个小组在/trunk继续新的工作(如,准备2.0),假设一个bug在不论什么一个位置被发现。错误修正须要来回运送。然而这个过程有时候也会结束,比如分支已经为公布前的终于測试“停滞”了。

4、分支已经作了标签而且公布,当測试结束,/branches/1.0作为引用快照已经复制到/tags/1.0.0,这个标签被打包公布给客户。

5、分支多次维护。当继续在/trunk上为版本号2.0工作,bug修正继续从/trunk运送到/branches/1.0。假设积累了足够的bug修正。管理部门决定公布1.0.1版本号:拷贝/branches/1.0到/tags/1.0.1。标签被打包公布。

一般建立最初的repository时,就建好这三个文件夹,把全部代码放入/trunk中,如:要将project1文件夹下的代码导入repository,project1的结构就是:project1/branches,project1/tags。project1/trunk,project1/trunk/food.c,project1/trunk/egg.pc……,然后将project1文件夹导入repository,建立最初的资料库。

然后export返回project1。作为一个本地工作文件夹。

版权声明:本文博主原创文章,博客,未经同意不得转载。

TotoiseSVN基本用法的更多相关文章

  1. TotoiseSVN的基本使用方法

    TotoiseSVN的基本使用方法 在 项目管理实践教程一.工欲善其事,必先利其器[Basic Tools]中,我已经讲解了怎样安装TortoiseSVN.在上面的讲解中已经讲了怎么使用VisualS ...

  2. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  3. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  4. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  5. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  6. python enumerate 用法

    A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...

  7. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

  8. 【JavaScript】innerHTML、innerText和outerHTML的用法区别

    用法: <div id="test">   <span style="color:red">test1</span> tes ...

  9. chattr用法

    [root@localhost tmp]# umask 0022 一.chattr用法 1.创建空文件attrtest,然后删除,提示无法删除,因为有隐藏文件 [root@localhost tmp] ...

随机推荐

  1. 在Windows系统上实现轻量级的线程间及进程间消息队列

    Windows没有message queue累世的IPC内核对象,使得在在处理IPC时少了一种传递消息的手段. 利用Windows的Naming Object可以实现一套简单的Inter-Thread ...

  2. HDOJ 4862 Jump

    K路径覆盖问题,最小费用最大流.... ,费用0,Y部有N*M个节点,每一个节点向汇点连一条边,流量1,费用0,假设X部的节点x能够在一步之内到达Y部的节点y,那么就连边x->y,费用为从x格子 ...

  3. POJ3071-Football(概率DP+滚动数组)

    Football Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2769   Accepted: 1413 Descript ...

  4. 使用HtmlAgilityPack批量抓取网页数据

    原文:使用HtmlAgilityPack批量抓取网页数据 相关软件点击下载登录的处理.因为有些网页数据需要登陆后才能提取.这里要使用ieHTTPHeaders来提取登录时的提交信息.抓取网页  Htm ...

  5. The tempfile module

    The tempfile module The tempfile module This module allows you to quickly come up with unique names ...

  6. HDU 5107 线段树扫描线

    给出N个点(x,y).每一个点有一个高度h 给出M次询问.问在(x,y)范围内第k小的高度是多少,没有输出-1 (k<=10) 线段树扫描线 首先离散化Y坐标,以Y坐标建立线段树 对全部的点和询 ...

  7. 敏捷开发用户故事系列之十一:CSDN博客用户故事分析

    这是敏捷开发用户故事系列的第十一篇.(栏目目录) 经常有人问起有没有完整的用户故事案例.本人在网上找了一下,大约能找到两三篇,但多数只是为了描述用户故事的语法而已,都不涉及用户故事的颗粒度.大量故事的 ...

  8. Android的内存优化

    腾讯公司在五月三十一日开展[腾讯Bugly移动开发人员沙龙]大会.大会上面叶方正老师解说了 关于Android的内存优化的问题,只是我感觉叶老师许多其它的站在了測试的角度上去解释了这一方面,叶老师给我 ...

  9. 【mysql】关于子查询的一个例子

    假设表my_tbl包含三个字段a,b,c:现在需要查询表中列a的每个不同值下的列b为最小值的记录量. 比如表记录为: a  b  c 1  3  'cd' 2  3  'nhd' 1  5  'bg' ...

  10. 【转向Javascript系列】深入理解Generators

    随着Javascript语言的发展,ES6规范为我们带来了许多新的内容,其中生成器Generators是一项重要的特性.利用这一特性,我们可以简化迭代器的创建,更加令人兴奋的,是Generators允 ...