Subversion基于变更集的合并

Filed Under (Client Tools, General, Subversion Client, Subversion in the Enterprise) by rocksun on 28-09-2007

也许你已经度过了我上周的blog,Subversion merge made easy。在那篇文章里,我作了一些CollabNet Merge client的链接,得到了许多下载并试用客户端的反馈。

本周,我们引入了一个合并客户端扩展的预览,允许你执行基于变更集的合并,随着客户端合并的扩展,CollabNet企业版Project Tracker的用户可以指定项目跟踪作品作为合并过程的输入,而不是只能指定一组修订版本。这确实是执行特定类型合并的简单方法,将会导致一些有趣的新工作流程和商业流程。

如果你已经安装了合并客户端,你可以访问相同的安装站点,得到变更集扩展,我已经写了这个客户端的一个总揽,也有一些细节和截图,点这里得到变更集扩展的总揽。

当你需要Subversion 1.5才能得到合并跟踪的好处时,你可以现在就在CollabNet企业版使用变更集扩展,所以试一下吧,然后告诉我们你的想法

原始链接

Mark Phippard is Director, Subversion Engineering at CollabNet. He works on the CollabNet Subversion team and is a project owner for the Subclipse project as well as a partial committer for Subversion.


Technorati : , , , , , , , , , , , , ,

Subversion合并将更简单

Filed Under (Client Tools, Subversion Client, Subversion in the Enterprise) by rocksun on 17-09-2007

这是Subversion的CollabNet 的工程团队以及Subversion社区忙碌的几个月,就像我们夏天发表的文章,我们整个团队正在为Subversion 1.5工作,特别是为合并跟踪特性。

回到春天,我们在openCollabNet开始了Merge Tracking Early Adopter Program ,我们希望让用户能够尽早尝试合并跟踪代码,并给CollabNet和Subversion社区提供反馈,这个计划非常成功,提供了一些有价值的反馈,并已经集成到Subversion 1.5的合并跟踪发布中。上一周,我们在合并跟踪站点更新了Subversion的beta程序到一个最近的版本,并启动了新一回合的测试,如果你还没有下载,请下载它们并试用,帮助社区发布1.5还不晚。

本文的标题是”Subversion merge made easy”,这让我。随着Subversion 1.5的各项工作的进行,另一个CollabNet的项目正在新的GUI合并客户端程序上工作,今天我们发布了beta版本,作为Merge Tracking Early Adopter Program的一部分。这个客户端包含了很多特性,这里不一一列出,请访问合并跟踪站点的文档。这个文档解释了如何安装客户端,并且提供了对它的特性的一个深度总揽,我鼓励你下载这个客户端并且试用。使用这个论坛来为合并跟踪项目提供反馈,询问问题,报告问题等。如果你已经尝试了客户端,你也就自动测试了Subversion 1.5合并跟踪特性,将会加速版本的发布。

最后,因为我们在讨论更简单的合并与跟踪,我只是希望提一下即将到来由我的两个CollabNet同事参与的webinar– Bob Jenkins和Auke Jilderda,他们都在合并跟踪特性上贡献了许多主意和反馈,也辅助了openCollabNet的merge tracking early adopter program,他们的webinar一定将包含对于Subversion分支与合并的有价值观点。

原始链接

Mark Phippard is Director, Subversion Engineering at CollabNet. He works on the CollabNet Subversion team and is a project owner for the Subclipse project as well as a partial committer for Subversion.


Technorati : , , , , , , , , , , , ,

svn events

Filed Under (General) by rocksun on 14-09-2007

有很多Subversion相关的cool事件,线上和线下。

Subversion 1.5分支与合并Webinar

随着合并跟踪的到来,许多公司希望能尽早看一下他们的分支策略,我们经常听说人们为了等待合并跟踪而不去分支,现在不必再等待任何事情了,你需要准备好在升级到Subversion 1.5时,实现优化在多个分支并行开发的开发。

在9月26日, CollabNet组织了一个分支策略的webinar,与CrossRoads协同介绍,我们介绍了如何开发和实现最适合你组织的分支政策,Auke Jilderda和Bob Jenkins则展示了如何使用Subversion 1.5的合并跟踪功能来支持不同分支的并行开发,你可以在这里注册(免费的)。

其他webinars

我们实际上会做一些Subversion的例行demo,并且更新他们去包含Subversion 1.5的特性。下一次再10月9日。

另一个很棒的可以注册的webinar是9月18日星期二Nick Gulrajani的”Round Trip Engineering“,Subversion只是拼图游戏的一小块,如何集成所有的部分对于生产力(和压力级别)有很大的影响。Nick将会向你展示7种不同的工具集成,以及他们如何与你的IDE通过插件方式协同工作。

Subversion会议和workshops

第一次Subversion会议Subconf 2007将会在德国10月16日到18日(它自己的会议,Subversion的一个里程碑)举行,英语信息可以看http://www.subconf.com,有一些议程使用德语(例如来自本地公司的成功故事),当然也有足够的英语,许多Subversion提交者将会参加这个会议(不仅仅是CollabNet的),所以来见见他们。

我特别指出CollabNet的workshop在10月15日:”Definitive Subversion 1.5 Workshop“,这个全部关于Subversion 1.5,包含合并跟踪,Subversion提交者将会出席,将会非常棒。

希望在上面的某个svn事件上看到你

原始链接

Guido Haarmans is Director Developer Relations at CollabNet, he works on openCollabNet and CollabNet Subversion product marketing.


Technorati : , , , , , , , , , ,

Subversion合并跟踪 – 基础

Filed Under (General) by rocksun on 06-09-2007

Subversion 1.5支持合并跟踪,本文将对什么是合并跟踪,及其对你们组织具备的意义提供了高级的总体看法,我将会从许多基本的解释开始,如果你熟悉分支与合并,请掠过第1段。

1. 什么是分支与合并?

开发团队经常会在多个并行线上开发,叫做”分支”,一个分支从拷贝开发项目(或一个目录)所有的文件开始,然后开始单独的维护这个拷贝,文件开始都是相同的,但经过一段时间,它们将会不同,因为不同的开发者在不同分支做出了修改。

为什么分支?你或许在Subversion创建一个分支用来维护产品发布,同时为下一个版本工作。为什么?下一个版本会有新的特性,但是在维护分支你只接受bug修改。另一个用例是开发复杂的新特性,而它会将使得开发构建不稳定,通过在不同分支开发,你将其他开发者从可能的构建失败中分离出去。Subversion自己的合并跟踪特性在一个分支上开发了差不多一年。

Mt1
Graph 1. 两个分支的主线开发 (trunk)

Subversion一直支持分支,但与其他系统不同,它不会真正的拷贝文件,那样会快速加大版本库的体积。相反,Subversion会创建一个到原来已有目录的快速引用,只是记录分支和trunk的文件修改,这样的结果是创建分支非常迅速,版本库几乎不会增加大小。

有些时候,代码需要合并。例如,一个开发者在维护分支上修订了一个bug,你会希望将修改合并到主开发线上,否则,你的下个发布还会有这个bug。另一个例子是在分支上开发一个新特性。就像我们说的,Subversion自己的合并跟踪特性就是在分支上开发的,在2007年2月,这个特性足够稳定,然后合并到了trunk。

Mt2
Graph 2. 合并代码

让我们看一个简单的合并实例,这是我们的代码:

trunk的代码 (主码基)

main()
{
printf("hello, word\n");
}

现在我们做一个分支,从用户的角度会有两份代码:

trunk的代码 (主码基)

分支代码

main()
{
printf("hello, word\n");
}
main()
{
printf("hello, word\n");
}

“Word”实际上应该为”World”,我们有一个bug,开发者在分支上修改了它,文件现在已经不同了。

main()
{
printf("hello, word\n");
}
main()
{
printf("hello, world\n");
}

在某一时刻,bug修正合并到了trunk
>>svn merge: Subversion将修改从分支合并到trunk。

main()
{
printf("hello, world\n");
}
main()
{
printf("hello, world\n");
}

2. Subversion与合并

就像分支,Subversion一直支持合并,如果你要求它可以自动完成许多工作。但是Subversion不会”记住”什么代码从什么分支在什么时候合并,尽管分支与合并在Subversion中工作很好,但是合并跟踪特性的添加解决了许多限制:

  • 重复合并,假设你有一个特性分支与主干同步,没有合并跟踪时,你必须小心的(且手工的)记录哪些修订版本已经合并,这会非常乏味,而且如果你忘了合并特定修改或是创建叫做”伪造的冲突”的东西,这意味着文件没有正确的合并,结果修订版本有错误。
  • 审计。当你合并一个特性分支回trunk,trunk的历史只记录了合并的发生,但是不知道合并了什么,这样就很难准确找出合并了什么到trunk。

3. 这对你意味着什么?

开发团队多年里成功使用Subversion分支和合并,但是合并跟踪提供了许多好处:

  • 合并跟踪添加了审计/跟踪能力(那些代码合并了,何时,何地?)。许多组织因为管理目的需要这个特性。
  • 合并跟踪减少了错误和管理费用。团队会因为Subversion的合并跟踪功能提高生产力。
  • 经常合并很重要。两个开始相同的文件会随着时间变得很不一样,不同的越多,越难以合并。如果经常合并,增量的区别会比较小,会易于合并。合并跟踪可以使得易于经常合并。
  • 许多选择Subversion的公司采用限制分支的策略,他们不能从好的分支策略和并行开发中得到好处,例如:他们选择在主开发线开发一个风险很大的新特性,结果就是项目成员要处理经常的构建错误。
  • 最终的好处:一些公司还没有使用Subversion,而使用传统的昂贵的工具,他们在等待合并跟踪。

4. Subversion 1.5的合并跟踪

Subversion 1.5记录合并时发生的事情:它会跟踪合并,所以下一次Subversion会记住上一次合并的事情,这个特性支持了下面的用例:

  • 重复合并:本周将分支合并到另一个分支,下一周再做一遍。Subversion会记住已经合并的东西,而且只合并新的修改。
  • 冲突解决的自动合并。Subversion可以自动完成合并的大多数工作,但是合并不可避免的带来冲突,Subversion的内部合并算法不能解决。如果这样,Subversion会告诉用户手工解决冲突。Mark Phippard的讲了这个问题
  • Cherry picking:合并只针对一个或部分修改,而不是所有的修改。
  • 记录手工合并:有时候用户会手工合并一些东西(使用编辑器从一个文件拷贝代码到另一个文件),Subversion 1.5具备明确添加手工合并的能力,所以合并跟踪信息依然完整。
  • 合并回退:取消一个合并。合并经常不是很完美,你会发现一些事情出了问题,Subversion允许你取消合并。
  • 合并审计:合并数据会自动添加到提交日志(Mark Phippard也讲了这个问题)。


5. GUI客户端和合并跟踪

如果Subversion的GUI客户端支持它,合并跟踪会真的非常强大。GUI客户端会利用合并跟踪特性让合并易于使用,而且对所有用户都更加接近。CollabNet在一个Eclipse的合并跟踪客户端上工作,未来的几天可能会有一个预览,openCollabNet这里。

Subversion 1.5对客户端有一个反馈,例如:有时候Subversion不能自动合并两个文件,需要开发者解决”合并冲突”,Subversion会告诉客户,由客户来决定怎样做,例如Subclipse会将冲突文件发送到Eclipse的图形化diff工具,所以用户可以解决这个冲突(它实际上进行了3方diff,但是那超出了本文的范围)。

6. 合并跟踪早期采用计划

为了加快Subversion 1.5的合并跟踪特性的开发,CollabNet在openCollabNet开始了一个Merge Tracking Early Adopter Program,在这个程序里你可以看到:

  • Subversion合并跟踪设计文档。
  • 包含合并跟踪特性的Subversion 1.5预发布程序
  • 一个包含合并跟踪历史的实例Subversion版本库
  • 一个与CollabNet的Subversion提交者和其他人讨论这个特性的论坛
  • 缺陷报告和改进请求
  • 很快也会发布GUI客户端

你可以在这里找到程序:http://merge-tracking.open.collab.net

7. 下面是什么?

合并跟踪的主张很直接:”Subversion以前没有这个功能,现在有了”,你准备好了吗?


  • 如果你正在因为不想处理麻烦的手工合并跟踪而为分支踌躇,你或许可以重新思考一下分支策略,来充分利用在不同分支并行开发的好处。在9月26日,CollabNet会组织一个关于分支策略的webinar,CollabNet的Subversion顾问Bob Jenkins和Auke Jilderda会解释不同的分支策略,并展示Subversion 1.5如何支持他们。这里注册
  • 合并跟踪改进了合并的质量,添加了跟踪能力。加入Merge Tracking Early Adopter program,现在就开始学习这个新特性。下载我们的客户端并使用,它将会帮助我们为Subversion 1.5做好准备。
  • 如果你因为等待合并跟踪而还没有部署Subversion,现在是你离开你的遗留工具而使用Subversion的时候了。

8. 背景:CollabNet与合并跟踪

CollabNet强烈的投入到合并跟踪特性的开发:

  • CollabNet组织了需求收集的客户峰会(2006年1月)。
  • CollabNet雇员编写了大多数规格。
  • CollabNet领导了合并跟踪特性的开发力量。
  • 我们开始了Merge Tracking Early Adopter Program。
  • CollabNet开发了合并跟踪的GUI客户端

核对前几日的blog可以得到GUI客户端的信息,并且注册Subversion 1.5的分支与合并webinar

原始链接

Guido Haarmans is Director Developer Relations at CollabNet, he works on openCollabNet and CollabNet Subversion product marketing.


Technorati :
, , , , , , , , , , , ,