Subversion 1.5最终发布候选可用

Filed Under (General) by rocksun on 29-05-2008

Subversion 1.5.0-rc7今天发布,就想以前的里程碑,CollabNet为你提供了多个操作系统的二进制程序

我们期望这个发布候选,并且正式1.5.0发布能够在10天内完成。对于此发布的bug将会报告为1.5.1或更高的版本,除非发现严重的衰退或API兼容性。

上次rc后的修正很微小。有些代码中记录的修正,也有些小的bug修正。可能最显著的变更是提交指定任意的修订版本的API,经过API的复审,我们决定以更干净的方式实现,所以在最后的发布之前作出修正。因为它是一个公共API,一旦它引入到正式发布,则将会2.0之前都要支持它,所以我们在发布之前修正了它。这个API变更会对应一些JavaHL API和其他语言绑定。

就像我们前一个发布候选,我们期望你的测试和反馈,在1.5分支创建之后,随着测试这些版本的用户我们完成了许多bug修正。

About the Author

Mark Phippard is Director Subversion Engineering at CollabNet. He leads the CollabNet Subversion team and is a project owner of the Subclipse project as well as a full committer for Subversion.

Permalink

Technorati Tags: CollabNet, open source, software configuration management, Subversion 1.5, SVN, Version control

镜像管理:保持怎样的同步(sync)频度

Filed Under (Administration) by rocksun on 20-05-2008

CollabNet的一个客户最近发布了这样一个问题:

我们为CollabNet主持的多个Subversion版本库设置了镜像,我有一个关于同步频率的问题,保持怎样的同步频率?在一些小的修改就同步还是在一些大的修改完成时再同步?

结果是我确实曾经考虑这个问题,Subversion的动态镜像管理非常有趣,所以这给了我机会来润色我的一些思考,因为这个客户的Subversion开发场景并不独特,所以您也能够从我的回复里得到益处。

我的回复时:

这是一个有趣的问题,我最近曾经认真思考过。如果你希望“每X分钟同步一次”之类的回答,那你不会满意的,答案需要你平衡镜像的作用和维护他们所经受的复杂度之间的关系。

让我们从最原始的同步方法开始,你每过几分钟同步一次。依赖于你如何使用镜像,精确的分钟可能会变化。如果是简单的夜间备份,60 x 24 = 1440分钟足够好,但是如果镜像会作为开发者使用的快速变化的代码基时,这就不够了。你也许需要每20,5或1分钟同步一次。当然你不希望因为太频繁的同步影响服务器的性能(发起拒绝服务攻击(DoS)并不明智),但是尝试已经同步过的镜像的代价并不是那么大。

现在,如果版本变更数据是同步任务唯一维护的数据,选择svnsync sync会和上面一样简单。不幸的是,也有一些未版本化的属性也需要关注,因为当你同步Subversion版本库的时候,Subversion不会记录你所做的事情,完整的Subversion版本库同步变得复杂起来。假如你在master版本库有100个修订版本,你保持了镜像的同步。之后,一个开发者修改了修订版本50的日志信息,svnsync不会识别出发生的百年更,以后的svnsync sync只会同步修订版本的增加(r101或后面的),但是r50的日志在镜像中已经不同了。svnsync copy-revprops子命令可以弥补这个问题,但是你需要告诉这个子命令一些关于对于那个版本操作的信息。

所以修订版本同步增加了复杂性。大多数时候,开发者可以快速的识别日志信息的错误,并在提交后迅速修正这个问题,只要他们能在同步工作同步这个修订版本之前执行修正,对镜像来说毫无问题。所以这让我们不要频繁的执行同步(只要修正发生在之前),但是多长是足够的呢?但是如果修改的日志信息是几个月以前的修订时怎么办?这个问题需要根据镜像的目的来回答,在你的情况下,修订版本属性是否不同步是否很重要?也许不是,也许很久以前的修订版本属性不同步没有关系。可能在你的情况下,是每10分钟的一个修订版本同步和一个每夜的全修订版本同步。

(我承诺过的,我会提供更多的答案。)

依我看来,最好的方法是多方面的,实时的事件驱动的触发器和预定的以防万一的同步工作。

第一部分的情况是,除非在master版本库和镜像之间发生通讯错误,都会尽可能保持同步。理想情况下,你的主版本库可以推出修改到镜像,或至少能够推出变更的通知。例如,你的主版本库可能有post-commit和post-revprop-change钩子来运行svnsync 来直接同步镜像,如果由于防火墙或安全的原因这样做不到,,那么或许可以让post-commit 和post-revprop-change钩子至少发送变更的通知邮件,镜像主机有一些自动化的方法可以发现这些邮件并触发相关的sync任务,一个提交邮件触发svnsync sync;,一个属性变更邮件触发修订版本的svnsync copy-revprops。

另一方面覆盖了万一的情况。如果镜像主机为能够获得提示邮件?或如果sync工作遭遇网络问题?为此,你或许需要一些有规律的计划任务,会尝试svnsync sync(可能没有同步的东西,因为事件驱动的属性同步工作正常),然后svnsync copy-revprops跨越多个修订版本(通常会重写相同的属性,因为同样的原因),当然需要避免的是防止svnsync任务对同一个版本库的资源争用。

也许不是完全的有指导意义,我希望你能够有足够的信息来决定如何实现最适合你的工作。

 

 

About the Author

C. Michael (Mike) Pilato has been on the Subversion project as a committer since 2000. Mike is one of the co-authors of “Version Control with Subversion” and he is on the board of the non-profit Subversion Corporation.

Permalink

Categories: Administration

Technorati Tags: CollabNet, SCM, Software Configuration Management, SourceForge, Subversion, SVN, Version Control

Subversion 1.5 RC5

Filed Under (General) by rocksun on 13-05-2008

本周早先时候,Subversion社区发布了包含最新bug修正的RC5版本,和我们以前做的一样,CollabNet会提供二进制程序,包括Windows、Linux、OSX和Solaris,CollabNet合并客户端和Subclipse也包含了此更新。

下面是一些我认为比较显著的修订(按照合入的顺序):

  • r30741
    Fix bug whereby ’svn status –depth=files’ still showed some dirs.
  • r30743, r30751
    Fix memory leak in recursive remote propget.
  • r30776, r30777, r30779
    svndumpfilter drops mergeinfo when it is *not* run with –renumber-revs.
  • r30666, r30684, r30726
    Fix for issue 3181. Compare repository UUID with working copy when opening RA session
  • r30761, r30762
    Fix for issue 3172. ‘log -g’ fails the moment it encounters a bogus mergeinfo which claims a merge from a non-existentpath@REV1-REV2.
  • r30820
    Fix pool issue which definitely can lead to assertion failures in reintegrate, and quite possibly to other mergeinfo corruption.
  • r30868, r30871
    In svnserve, tolerate unreadable passwd files. Don’t error over svn+ssh:// when the user can’t read passwd.
  • r30843
    Fix abort in ra_serf when server sends invalid xml during replay.
  • r30907
    Fix for issue 3185. Fix the ‘log –limit’ compatability code in ra_svn, ra_serf, and ra_neon to ignore nested logs when in ‘-g’ mode.
  • r30883, r30888
    Fix issue 3187. Fix reverse merges where merge target or subtree has non-inheritable revision ranges intersecting with the merged range.
  • r30931
    Remove ‘blind deletion of argument to mkdir –parents’, delete only if this invocation has created it.
  • r30896, r30905
    Make Cyrus SASL client support DIGEST-MD5.
  • r30986
    Fix potential segfault in svn_io_remove_dir2(path=’.').
  • r29191, r29398, r29833, r30663, r30963, r30964
    Improve the responsiveness and accuracy of ’svn log -g’.
About the Author

Mark Phippard is Director Subversion Engineering at CollabNet. He leads the CollabNet Subversion team and is a project owner of the Subclipse project as well as a full committer for Subversion.

原始链接:http://blogs.open.collab.net/svn/2008/05/subversion-15-r.html