标签归档:svn

SVN分支与合并

分支的基本概念就正如它的名字,开发的一条线独立于另一条线,如果回顾历史,可以发现两条线分享共同的历史,一个分支总是从一个备份开始的,从那里开始,发展自己独有的历史(如下图所示)

⑴创建分支
假设目前我们版本库中的项目的布局如下图:

如图所示,我们的项目放在了trunk(主线)目录,另外还有branch(分支)和tags(标签)目录,这样的布局是为了更清晰的区别主线、分支和标签三者的位置。
subversion对分支和标签是通过复制一份最新的版本库的快照来实现的。

开始创建分支:
在我们CheckOut的主线目录(trunk)上,右键点击然后选择“Branch/tag…”

在弹出的窗口中,将To Url 指向branch目录并输入分支的具体目录名,这里是mybranch1.0,我们即将创建的分支便存放于此处,点击OK。

Update一下本地的branch目录,你就可以看到你刚刚创建的分支“mybranch1.0”,这样一来我们的分支就创建完成了。

创建分支的最大的目的就是跟主线进行并行开发的时候不影响主线的开发。
因为你在分支上所做的提交都只存于分支上,主线上的Update是看不到分支的修改的。如下图所示,trunk只能看到r344的版本,并看不到r343的版本。

(什么时候应该使用分支呢?例如你接到了一个任务,完成这个任务需要三四个人的合作,你们之间需要共享资源,那们就可以创建一个专为这次任务的分支,参与此次任务的人员则在分支上做开发,等完成之后再合并到主线上,才不会出现将实现了一半的不完成功能也提交到主线上,影响主线的正常工作。又或者自己需要一个较长的开发周期来完成任务,这么长的时间内如果一直没有将资源进行提交,万一丢失了就前功尽弃了。当然分支不是只用于此类情况,还有其它很多种情况也能使用分支来达到目的。)
使用分支需要注意,由于长期的独立开发,可能会在合并回主线时出现较多的冲突。所以在支线上开发间期如果发现主干有更新,而且这个更新有可能将来跟你产生冲突,那你可以先将主线的内容合并到分支上。已免等到做了大量修改再来更新。(其实此过程跟分支合并到主线上是一样的操作,只是目的地不同。)

例如我们在主线上的版本为3,我们如何将此版本的信息合并到分支上呢?

在分支的根目录上右键点击,选择“TortoiseSVNMerge…”。

在这里我们必需先弄明白一个合并背后的关健概念
合并的过程中发生的所有事:首先两个版本库树的比较,然后将区别应用到本地拷贝.
这个命令是包括三个参数的:
1. 初始的版本树 2.最终的版本树 3一个接收区别的工作拷贝。
弄明白这些概念之后我们继续往下操作。
在弹出的窗口中,选择主线目录和其版本号(初始的版本树),再选择主线目录和最新的版本号(最终的版本树),这里也可以是某一个版本号但应该比初始的版本树的版本号要高,接收区默认为你右键所指的目录,这里是mybranch1.0。

在合并之前我们可以通过点击“Unified diff”,查看两版本树之间所有文件的内容的变化,“diff”显示出有发生变化的文件列表,“dry run”能显示真正合并时的状态信息,但并没有做任何的合并操作。
我们点击“Merge”。

在点击“Merge”,合并后的文件(即对分支上的文件补上了主线上修改的内容),如无冲突则可以在分支上像其它文件一样使用了,如果合并后的内容不满意,可以通过撤销来取消这次的合并操作,前提是未对合并后的文件做提交操作。

分支合并到主线跟从主线上合并内容到分支上类似
不同的是
1、开始的版本库是分支创建的版本
2、结束的版本库是完成所以开发工作之后的版本
3、应用的目的是主线目录

关于转换工作拷贝、标签(标签在Subversion中跟分支是相同原理的,一个不去做任何的修改的分支就是版本库某一时刻的一个快照,相当于为某一个版本做了一个标签)

GoogleCode+TortoiseSVN简明使用

先介绍下什么是 SubVersion,Subversion是新一代的版本控制工具,不仅可以管理程序源代码,也可以应用于其他协作管理数据的工作。

安装

你可以从 TortoiseSVN 官方站点下载最新版的 TortoiseSVN,中文汉化包可以从 SubVersion 中文站下载。下载之后,点击安装包,一路 next 下去即可。

tortoisesvn-installation

下载项目

在你硬盘的适当的位置,点击邮件,选择 SVN Checkout…

tortoisesvn-checkout

然后就会弹出一个 Checkout 选项对话框,输入远程项目目录和本地工作目录,WordPress 中文团队的 Google Code SVN 服务器,远程项目地址为:https://wpcn.googlecode.com/svn/trunk/

tortoisesvn-checkout-option

点击 OK,就会弹出一个远程服务器要求验证的对话框:

tortoisesvn-checkout-input-password

这里用户名为你 Gmail 用户名,不用带(@gmail.com),密码不是你 Gmail 邮箱的密码,你需要到 http://code.google.com/p/wpcn/source
页面动态产生一个密码:

google-code-generate-password

当然你首先要成为我们成员,才能使用该项目的 SVN 服务。如果你想为 WordPress 中文团队出份力,你可以给我们留言申请加入。

输入用户名和密码之后,点击 OK 就开始下载:

tortoisesvn-checkouting

提交修改

在你做了修改之后,你可以在项目文件夹下点击右键或者你修改的文件下点击右键,选择 SVN Commit…,这两者的区别在于,第一个可以一次提交你所做所有文件的修改,而第二个只是提交你所选的文件。

tortoisesvn-update-commit

点击 Commit 之后,就会弹出一个让你输入更改 log 的对话框:

tortoisesvn-commit

输入你所作的修改,然后点击 OK,就会开始向远程服务器提交修改:

tortoisesvn-commiting

导入项目

如果翻译插件或者写了插件,想提交到远程服务器,选择该文件夹,点击右键,选择 TortoiseSVN => Import…

tortoisesvn-import

然后就会弹出一个导入选项对话框,属于远程服务器地址和注释,如果你前面没有保存密码,这里可能再次输入你在 Google Code 的密码。点击 OK,本地文件就会被导入远程服务器。

tortoisesvn-importing

其它功能

网页浏览:你可以使用该地址 https://wpcn.googlecode.com/svn/trunk/ 在网页上浏览项目,同样需要和前面一样的密码。

SVN Update:与服务器版本对比,进行更新

Revert:取消上一次的操作(只针对客户端,服务端不做改动)

Add:增加新目录或新文件至项目

Revision Graph:版本示意图

Show log:查看版本日志及不同版本间相互比较

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

 

TortoiseSVN中文使用手册:http://svndoc.iusesvn.com/tsvn/

本地SVN(Subversion)版本管理服务器搭建指南

为什么需要在本地安装SVN?本地SVN可以作为一个开发人员的备份工具,既备份了文件,又备份了修改。尽管有很多优秀的代码托管服务器如Google Code, github和SourceForge,但这些托管比较适合免费的开源项目。

So, 如果你开发的东东都是免费开源的,那我建议你还是使用上面提到的这些代码托管商作为Subversion服务器,他们的电脑比你自己的电脑更值得信任。如果出于和我相同的目的或其它不为人知的原因需要在本地安装SVN版本管理服务器,那就开始吧。

注意: 本文基于Windows XP。

一. 安装使用VisualSVN Server

继续阅读

SVN配置及VS2010中使用ankhSVN

原文地址:http://blog.csdn.net/yjjm1990/article/details/7423763

给大家介绍一些SVN的入门知识!希望对大家的学习起到作用!

     关于SVN与CVS的相关知识,大家可以自己去google一下。

     一、准备

        SVN是一个开源的版本控制系统,它可以记录所有的文件修改版本。CVS也是一个版本控制系统,可是现在大家更多的是用SVN,因为SVN不但继承了CVS的优点,而且还有许多的功能是CVS所不具备的。可以肯定,SVN会成为CVS的替代系统。

         我们还需要安装一个客户端软件——TortoiseSVN,tortoiseSVN 只是svn 的一个图形化的操作界面, 有了这两个,就可以建立起强大的svn 服务器了。但是如果想通过http 的方式访问,则需要使用apache2.2.x,并将svn 的一些模块集成进去。ankhSVN 则可以实现SVN+Visual Studio 的远 程代码管理。 

          TortoiseSVN官网下载地址:http://tortoisesvn.net/downloads.html

           Subversion官网下载地址(现在的最新版本是到了1.7.4了)http://subversion.apache.org/

         继续阅读