Subversion不只是为开发者准备的(2)

Filed Under (Client Tools, Non-Developers) by rocksun on 31-05-2009

本文地址:http://www.subversion.org.cn/submerged/?p=138

在前一篇Subversion不只是为开发者准备的(1)中,我分享了人们发送给CollabNet的关于他们如何使用这个平台为自己的非软件开发项目服务的故事,在本文中,我希望澄清一些关于讨论论坛和其他工具的问题,并介绍一下TeamForge

Subversion是一个可以帮助你跟踪文档或整个项目的许多版本的工具,可以帮助我们团队协作。这不仅对软件开发来说很重要,也会影响其他行业的人们。例如你可以在某个文档、或某个复杂项目的一小部分上进行许多交互,例如组织一个管弦乐队或为某个戏剧编写脚本。

在本文的第一部分,我也提及某些人使用讨论论坛和wiki,Subversion本身并不支持这些工具,但是TeamForge提供,当你把TeamForge加入到Subversion,你便得到了一个允许协作、便签和文档交流的套件工具,以及一个可以使这些操作都更加方便的界面。

下面是描述Subversion、TeamForge和工具结合在一起的图表:

Collabnetplatform

在上面的图表中,你可以可以看到使用TeamForge时的收获。当从你的工作区开始后,你可以得到右侧列表上的所有工具,其实现方式还是Subversion(中间的图),一个版本库允许代码或制品保存在另一个库中,无论是哪些组建。此外,这些工具也提供了任务跟踪器、实时报告、项目状态wiki以及可以保存300种文件类型的文档区。

TeamForge平台对于非开发者来说非常简单,可以用来管理任何类型的项目,可以与任何对项目贡献的人进行交流,以及跟踪项目组件的方式。

更多信息

Dana Nourie previously worked for Sun Microsystems for 10 years, and is now eager to focus entirely on virutal communities for CollabNet, working with all types of developers. She also enjoys photography, hiking, and spending time role playing in the Star Wars SIM of Second Life.

原文英文地址:http://blogs.open.collab.net/svn/2009/05/subversion-is-not-just-for-developers-part-2.html

Subversion不只是为开发者准备的(1)

Filed Under (Non-Developers) by rocksun on 31-05-2009

本文地址:http://www.subversion.org.cn/submerged/?p=132

最近我得到了许多来自Subversion用户 ,写给CollabNet的案例,其中不出意外的大多数是开发者,但是让我感兴趣的是许多使用此软件的创意行为。

Subversion可以跟踪和回退文档版本,允许他们进行团队协作,讨论和分享相关的文档,在一个应用里跟踪所有的变更,这些能力并不是只对开发者有用,也可以帮助普通人的生活。

这些故事都很有趣,但是我想分享下面这些故事:

  • 一个作曲家和管弦乐队使用Subversion来跟踪作品中的所有音乐元素,从作曲家的框架和配乐开始,在同一时见,管弦乐队会增加弦乐曲或者抄写员准备管弦乐队的部分。
  • 一个车库乐队使用Subversion跟踪他们家庭工作室的作品。
  • 一个家庭的成员分布在整个美国,使用Subversion分享照片、文档、wiki和blogs,都是基于一个家庭成员设置的svn服务器上。
  • 一个著名的大学使用Subversion来保存学院研究项目、他们的质量问题论坛以及维护培训程序的材料。此外,他们用Subversion管理下一代大学策略方案的开发,使用论坛来讨论。
  • 一个老师允许她的学生创建项目,包含研究笔记和文档,以及对每个学生的项目进行讨论。结合他的课堂课程成为了一个虚拟课堂。

这些故事让我意识到Subversion有成为管理重要文档、法庭案例、爱好者项目以及家庭旅行的潜在能力,不仅仅是我个人的社区经理工作。

我查看了CollabNet站点,发现了我们没有有效的定位Subversion的非开发者用户,我希望我们可以鼓励开发者能够在增加和集成功能时能够牢记非开发者。

我欢迎你的关于让非开发者使用Subversion的主意,我希望能够听到非程序员关于网站如何满足其需要的声音。

Dana Nourie previously worked for Sun Microsystems for 10 years, and is now eager to focus entirely on virutal communities for CollabNet, working with all types of developers. She also enjoys photography, hiking, and spending time role playing in the Star Wars SIM of Second Life.

英文原文地址:http://blogs.open.collab.net/svn/2009/05/subversion-is-not-just-for-developers.html

Subversion 1.6.0和目录树冲突

Filed Under (General, Subversion Client) by rocksun on 31-03-2009

Tagged Under : ,

本文地址:http://www.subversion.org.cn/submerged/?p=113

大多数Subversion用户熟悉文本的冲突,一个经典场景是你在工作拷贝修改了一个文件,而svn update从版本库带来的变更也包含了这个文件的修改,而这两部分变更无法干净的结合为一个本地变更,结果就是文本冲突。Subversion 1.6.0将此概念扩展倒了目录级别,例如,你在本地删除了一个文件,而更新会带来这个文件的文本变更时的情况,这种新的冲突被叫做目录树冲突。

让我们看一个预期中目录树冲突的简单例子,不过首先看一下在Subversion 1.5.6的老“方式”。

和文本冲突一样,目录树冲突会在更新、转移或合并(从技术上讲,检出时也会)时发生,在这个例子中,我们从trunk合并到trunk的一个分支上。

1.5.6

 在我们的工作拷贝,我们有一个有文本修改的文件:

1.5.6> svn st
M notes\obliterate\obliterate-functional-spec.txt

检查一下从trunk需要合并那些内容,我们得到了r36680:

1.5.6> svn mergeinfo --show-revs eligible %URL%/trunk .
r36680

查看r36680的日志,我们看到Barry恰好将我们本地修改的文件改名:

1.5.6> svn log -v -r36680 %URL%
------------------------------------------------------------------------
r36680 | Barry | 2009-03-19 11:21:25 -0400 (Thu, 19 Mar 2009) | 1 line
Changed paths:
A /trunk/notes/obliterate/obliterate-func-spec.txt (from
/trunk/notes/obliterate/obliterate-functional-spec.txt:36679)
D /trunk/notes/obliterate/obliterate-functional-spec.txt
Just making a file name a bit shorter
------------------------------------------------------------------------

想到Subversion将重命名作为复制和删除的组合执行,当我们合并r36680时,重命名的添加部分会成功,但是删除部分则由于删除本地的修改而不能成功,Subversion通常会通知不能删除未版本化的修改:

 

1.5.6> svn merge %URL%/trunk . -c36680
--- Merging r36680 into '.':
A notes\obliterate\obliterate-func-spec.txt
Skipped 'notes\obliterate\obliterate-functional-spec.txt'

当合并之后,留下了两个版本化的spec文件,Barry重命名的一部分以及我们的本地修改。我们可以以此提交,但是这不是我们希望的。在这个情况下获得正确的结果,也就是在改名的文件中包含我们的修改,因为Subversion使用复制和删除对待改名的情况,实现这个目标需要多出许多环节。

首先,我们需要使用OS的复制命令复制修改的文件到新位置:

1.5.6> copy notes\obliterate\obliterate-functional-spec.txt notes\obliterate\obliterate-func-spec.txt
Overwrite notes\obliterate\obliterate-func-spec.txt? (Yes/No/All): y
 1 file(s) copied.

然后使用Subversion来恢复到 我们最初本地修改的文件:

1.5.6> svn revert notes\obliterate\obliterate-functional-spec.txt
Reverted 'notes\obliterate\obliterate-functional-spec.txt'

现在允许我们删除它:

作为选择,你可以只使用–force选项删除和组合最初的两步。诚然,这是一个坏习惯,这样会清除掉所有的本地修改。回想我们说Subversion会努力保留未版本化的本地修改,svn delete –force就是与revert子命令不同的一个例子,所以要小心。

1.5.6> svn del notes\obliterate\obliterate-functional-spec.txt
D notes\obliterate\obliterate-functional-spec.txt

留下我们希望得到的东西,注意’notes\obliterate\obliterate-func-spec.txt’包含了我们最初的本地修改。

1.5.6> svn st
 M .
D notes\obliterate\obliterate-functional-spec.txt
A + notes\obliterate\obliterate-func-spec.txt

现在,在上面的例子中,很明显发生了什么。但是如果我们合并了几百个修订和几百个改变的路径?很容易错过这种“Skipped”的信息,提交合并。这些错误会在很久以后才能被发现。

1.6.0

现在,让我们看一下1.6.0中的目录树冲突,给定同样的分支工作拷贝:

1.6.0> svn st
M notes\obliterate\obliterate-functional-spec.txt

我们执行相同的合并,注意最显著的改变,我们看到目录树冲突,而不是跳过:

1.6.0> svn merge %URL%/trunk . -c36680
--- Merging r36680 into '.':
A notes\obliterate\obliterate-func-spec.txt
C notes\obliterate\obliterate-functional-spec.txt
Summary of conflicts:
 Tree conflicts: 1

检查工作拷贝的状态,我们看到与1.5.6的第二项区别。重命名的额外部分会和以前一样,但是会在’notes\obliterate\obliterate-functional-spec.txt’ (第7列的‘C’)报告目录树冲突。此外,有一些目录树冲突的本性,特别是合并时包含本地的修改和来自的删除。

 

1.6.0> svn st
 M .
M C notes\obliterate\obliterate-functional-spec.txt
A + notes\obliterate\obliterate-func-spec.txt

让我们假定无视目录树冲突,直接提交。这是第三个变化,Subversion不会允许包含目录树冲突的工作拷贝提交:

1.6.0> svn ci -m "I don't care what happened! Commit away" .
svn: Commit failed (details follow):
svn: Aborting commit: 'C:\SVN\1.6.0.WC\my_branch_WC\notes\obliterate\obliterate-functional-spec.txt' remains in conflict

为了提交这个合并,我们需要说出我们的决定。如果因为一些原因我们希望保留两个文件,我们可以直接解决冲突并提交变更。也有可能我们希望将变更应用到新文件,在这时我们可以解决这个冲突:

1.6.0> svn resolve --accept working -R .
Resolved conflicted state of 'notes\obliterate\obliterate-functional-spec.txt'
1.6.0> svn st
 M .
M notes\obliterate\obliterate-functional-spec.txt
A + notes\obliterate\obliterate-func-spec.txt

下面的步骤和1.5.6时一样。

注意:在1.6.0,–accept选项的svn resolve子命令对于目录树冲突没有特殊处理。只要有目录树冲突,结果相同,就像你使用废弃的svn resolved命令。只有以前的文本冲突在对–accept选项有效。

应该注意到目录树冲突的概念并不新鲜。你可以在Subversion 1.6之前的任何版本遇到目录树冲突,1.5.6的例子是一个“目录树冲突”,只是它并没有有用的方式处理。 1.6.0的目录树冲突特性主要关于识别出目录树冲突,并在没有解决时将其保持在工作拷贝。

对于每个新特性,以后的发布都会有许多要做的事情。在这里,让命令行程序更简单的解决目录树冲突就非常重要。如果你是Collabnet Desktop的用户,你很幸运。在桌面版的1.8版本,预计在2009年3月,会包含目录树冲突解决特性。这个特性会完成冲突解决的许多脏活。前面的例子中,可以轻松的将修改从 ’obliterate-functional-spec.txt’ 合并到’obliterate-func-spec.txt’,只需要一个对话框。如果你对1.6的目录树冲突感兴趣,而没有使用Collabnet Desktop,可能是一个尝试的好机会。

  

Paul Burba is a developer in CollabNet’s Version Control team. In that role he works on OSS Subversion where he is a full-committer. When not in front of his computer he’s probably on a bike somewhere.

稀疏目录支持排他选择了

Filed Under (Subversion Client) by rocksun on 05-03-2009

Tagged Under : , ,

本文地址:http://www.subversion.org.cn/submerged/?p=111

在Subversion 1.5中,引入的稀疏目录的支持(还有合并跟踪远程版本库合并)已经融入我的日常工作中。因为我的日常工作包括许多不同软件的不同部分,在同一时刻,我会跟踪多个软件的不同开发分支,如果我不用稀疏目录,我的项目目录会这个样子:

$ ls ~/projects
subversion/		      svnbook/		 viewvc-1.0.7/
subversion-1.5.x/	      thotkeeper/	 viewvc-1.0.x/
subversion-1.6.x/	      thotkeeper-0.3.0/  viewvc-1.1.0-beta1/
subversion-http-protocol-v2/  viewvc/		 viewvc-1.1.x/
$

从正面讲,我可以通过运行svn update ~/projects/*快速更新所有的工作拷贝。

但是对于我这样十分依赖命令行自动完成的人来说,这样许多的类似目录前缀让我的自动完成环境毫无意义,不使用类似的前缀呢?那样更原始。

幸运的是,稀疏目录给我一个完整的工作拷贝组织的新角度,现在,许多项目目录只包含了项目,就像这些:

$ ls ~/projects
subversion/  svnbook/  thotkeeper/  viewvc/
$

那些目录的根目录都是稀疏检出的,下面是(至少)“trunk”目录,也可能是“branches”的一些子目录,甚至可能是“tags”下的特定目录,~/projects/*仍然可以工作,我的工作拷贝托普结构匹配这种模式。

我这里就不具体说稀疏检出的细节—我已经在《使用Subversion进行版本控制》中(http://www.subversion.org.cn/svnbook/nightly/svn.advanced.sparsedirs.html)介绍,后面我们将说一下Subversion 1.6对这个特性的改进。

在Subversion 1.6(将会发布),svn update的–set-depth参数有了一个新的值— exclude。这个值告诉Subversion从工作拷贝立刻排除目标,之后也保持效果。在Subversion 1.5,如果分支对我没有意义,我可以简单的删除掉它。如果只是删除,在下次更新时就会回来。如果我svn delete它,分支会永远保持本地的修改。(当然,除非我提交,带来了更大的麻烦,愤怒的同伴,叉子和火炬。那样很混乱 — 你一定不希望这样。)Subversion 1.6中新的排除机制正是为此而来。

假设我不关心我项目工作拷贝中的某些目录,例如我不会在乎Subversion中的网站目录,通过排除特性,我可以告诉Subversion移除目录:

$ cd ~/projects/subversion/trunk
$ svn update --set-depth=exclude www
D         www
$ ls www
ls: cannot access www: No such file or directory
$

完成。当我以后更新我的工作拷贝时,我不会收到www目录的变更,如果我后来需要这个目录,我可以重新“订阅”它:

$ svn update --set-depth=infinity www
A    www
A    www/links.html
A    www/testing-goals.html
…
A    www/tigris-permissions.html
A    www/webdav-usage.html
Updated to revision 36292.
$

注意,如果你排除了一个版本化的目录,而其中包含未版本化文件,或者有本地修改的文件,Subversion会优雅的处理这种情况,删除这些文件是不安全的,Subversion只会保留和对应文件相关的文件和目录。

我希望这些改进也能帮助你们,你怎么想?怎样用稀疏目录更好的组织你的生活?

英文原文地址:http://blogs.open.collab.net/svn/2009/03/sparse-directories-now-with-exclusion.html

Subversion结合Apache与LDAP

Filed Under (Subversion Server) by rocksun on 03-03-2009

Tagged Under : , ,

本文地址:http://www.subversion.org.cn/submerged/?p=109

因为Apache 2.2改进了认证和授权模块的管理模式,所以有必要写一篇新的文章来介绍这种不同。

配置

对于只想达到目标的朋友,只需要复制粘贴下面的代码:

Read the rest of this entry »

1.6的版本库更省空间

Filed Under (Subversion Server) by rocksun on 19-02-2009

Tagged Under : ,

本文地址:http://www.subversion.org.cn/submerged/?p=106

在Subversion1.5中的FSFS版本库中,会将修订版本文件分配到不同的目录里,默认是1000个文件一个目录。在Subversion 1.6中,更进一步,现在支持将多个修订文件打包成一个文件,从而提高访问效率并更节省空间。

最新的Subversion 1.6的程序,提供了svnadmin pack命令,可以完成这个打包的工作。经过B Smith-Mannschott的实验,一个有31100个修订的1.5版本库开始占据1.4G的空间。

经过Subversion1.6的svnadmin upgrade; svnadmin pack操作之后,经过打包,变成了1.3G。

进一步,使用1.6的svnadmin dump; svnadmin load; svnadmin pack操作之后,变成了1.1G,显著的减少了空间的占用。

关于这部分的内容可以看:http://svn.collab.net/repos/svn/branches/1.6.x/www/svn_1.6_releasenotes.html#filesystem-improvements

GNOME社区的DVCS调查

Filed Under (General) by rocksun on 04-01-2009

Tagged Under : , , ,

本文地址:http://www.subversion.org.cn/submerged/?p=101

今天看到了GNOME DVCS Survey,报告了GNOME社区579名提交者的一个民意调查。这是一个社区迁移到分布式版本控制工具的调查,调查工具包括git,bzr和Mercurial,以及Subversion。这里简要说明一些比较重要的结果,首先看一下各类分布式工具的普及程度:

这个结果显示高达60%的受调查者熟悉git,这个数字超过我的预想,而接近50%的人在日常生活中会使用git,而认为应该将GNOME项目转为分布式工具的人接近40%。然后是对几种工具的评价,

git的评价最高,另一个结论是高级用户对svn比普通用户有更高的评价。可见分布式工具在开源世界的影响力越来越大,Subversion在这方面也许会有所改变,这对subversion来说并不困难。

谈谈开源版本控制的Google趋势

Filed Under (General) by rocksun on 04-01-2009

Tagged Under : , , ,

本文地址:http://www.subversion.org.cn/submerged/?p=96

首先祝大家2009万事如意,希望我们的Subversion中文站能够越活越好,我们的Blog也越来越精彩。新年伊始,我们可以回顾一下过去,看看在Google中开源版本控制的形势。

我们考察的关键词是subversion,svn,git,mercurial,因为Subversion和缩略用法svn都是用户经常使用的关键字,所以需要同时考察,首先看一下总体趋势:

image

  • Subversion:2004年2月 1.0版本
  • GIT:2005年12月 1.0版本
  • Mercurial:2008年3月 1.0版本

对照上面的发布日期,可以看到Subversion关键词在2004年2月之后迅速飙升,不过,但在2006年之后却逐步下降,而缩写svn却是稳步上升。这似乎和这个工具的流行方式有关,例如,我现在还是习惯使用Subversion这个词,不是很习惯使用svn这个缩写,包括许多subversion开发者也很少用svn这个词来代表Subversion。而许多新手,会经常直接写svn,而不会写Subversion。另外,更重要的一点,越来越多的人把subversion当作司空见惯的命令了,有更多人会发表包含svn命令的文章,也就是subversion从普及阶段进入了应用阶段。

GIT在2005年12月发布1.0,但一直并没有多大的发展,不过根据趋势,最近有较大的发展,并没有和其他关键字一样在年末有较大的滑坡。这与我的感觉也比较匹配,GIT经过一段时间的沉淀,应该可以吸引更多专业的程序员的采用,希望不是曲高和寡。不过git的数据可能不够准确,因为git也是一个普通的英语单词。

Mercurial今年发布了1.0,Google趋势对应着有较大的发展,但是Mercurial感觉在发展上缺乏有力的支持,与Subversion和GIT的强力后台相比,Mercurail略显单薄。

下面我们看一下在中国这几个词的趋势。

image

中国的发展相当诡异。中间2005年这一段竟然有一段空白,难道是因为Subversion这个词敏感的中文含义?此后Subversion和svn这两个词的发展和英文有些类似,Subversion逐渐平庸,而svn越来越多,而GIT则是从2007年才逐渐发展起来,不过git本身也是命令,所以它的曲线可能会和svn类似。

在中国,svn的发展没有趋缓的迹象,还处于高速发展时期。

StExBar 1.6

Filed Under (TortoiseSVNBlog) by racoonwise on 23-12-2008

本文地址:http://www.subversion.org.cn/submerged/?p=88

StExBar出新版本了。

这个版本包括许多小的改动和一个大的修改。这个大的修改就是当不在命令行模式时编辑框的表现。在以前的版本中,在编辑框中输入文本会在文件夹中选择与之匹配的文件。现在,取代以前的选择他们,而是过滤他们,比如,如果所有的文件/文件夹与输入的字符串都不匹配的话就,那么就会从当前的视图移除。举例说,如果你在编辑框中输入“meeting”,所有不匹配的文件都会过滤掉,你看到的只会是像“meeting-oct.doc”,"old_meeting.doc”这样的文件。

这个改变是你更容易在包含许多文件的文件夹中寻找特定的文件。

这个版本解决了如下问题:

15, 24, 29, 33, 30, 28, 26, 32, 37, 31.

你可以在这里下载StExBar: http://tools.tortoisesvn.net/StExBar

原文地址:http://tortoisesvn.net/node/354

使用statsvn

Filed Under (General) by rocksun on 19-12-2008

Tagged Under : , ,

本文地址:http://www.subversion.org.cn/submerged/?p=81

我们的翻译项目已经有了很多成员,大家都做出了一定的贡献,我觉得可以验证一下我们大家的工作状况,所以我决定用各种工具进行统计,今天以statsvn开始。

首先从http://www.statsvn.org/downloads.html下载statsvn,解压缩statsvn-0.4.1.zip,其中有statsvn.jar和readme.txt。

检出我们的翻译项目,使用如下命令:

svn checkout http://svncndoc.googlecode.com/svn F:\translation\svncndocdemo

然后在F:\translation\svncndoc下,执行:

F:\translation\svncndocdemo>svn log –xml -v > svn.log

然后,到statsvn的解压缩目录下,运行

java -jar statsvn.jar F:\translation\svncndocdemo\svn.log F:\translation\svncndocdemo

运行这个命令的时候,可能会出现一些错误,某些修订可能会漏掉,没有关系,重新执行上面的命令就可以把漏掉的版本重新计算出来。我们的svncndoc执行完后,根目录下的数据如下:

Author Lines of Code
daijun 128289 (93.7%)
racoonwise 3858 (2.8%)
zhaozhi.1983 2935 (2.1%)
akeybupt2004 566 (0.4%)
wkw2006 397 (0.3%)
sdl 242 (0.2%)
luovel1983 193 (0.1%)
jiaqifeng 133 (0.1%)
Neil.Creater 132 (0.1%)
lanren365 117 (0.1%)

这个数据还真是蛮惊人的,主要原因是statsvn使用svn diff计算修改,而整个项目中的许多文件都是我添加进来的,所以计算的结果比较多,然后我们再看看我们翻译的主要项目trunk/svn目录下的情况:

Author Changes Lines of Code Lines per Change
Totals 79 (100.0%) 16820 (100.0%) 212.9
daijun 32 (40.5%) 13391 (79.6%) 418.4
zhaozhi.1983 21 (26.6%) 2441 (14.5%) 116.2
akeybupt2004 12 (15.2%) 566 (3.4%) 47.1
sdl 9 (11.4%) 241 (1.4%) 26.7
jiaqifeng 3 (3.8%) 133 (0.8%) 44.3
luovel1983 2 (2.5%) 48 (0.3%) 24.0

在这个统计中,daijun和zhaozhi.1983还是最多的,因为我们两个都做过这种直接添加文件类似的操作,所以对于我们这个项目来说这个结果还是不够好,所以我想清除一些添加文件的统计。所以我把修订21以前的修订删除掉了,然后重新统计,不过除了修改前面所说的svn.log(也可以再用svn log命令重新生成svn.log,使用-r指定范围),还应该清理缓存,缓存文件在C:\Documents and Settings\Administrator\.statsvn,把里面的cache文件清理掉。调整后/trunk/svn下的结果如下:

Author Changes Lines of Code Lines per Change
Totals 79 (100.0%) 14620 (100.0%) 185.0
daijun 32 (40.5%) 13391 (91.6%) 418.4
akeybupt2004 12 (15.2%) 566 (3.9%) 47.1
zhaozhi.1983 21 (26.6%) 241 (1.6%) 11.4
sdl 9 (11.4%) 241 (1.6%) 26.7
jiaqifeng 3 (3.8%) 133 (0.9%) 44.3
luovel1983 2 (2.5%) 48 (0.3%) 24.0

呵呵,没想到我的数据更高了,我想原因有二。首先,zhaozhi.1983以前的很多工作都在修订21以前,而修订21以后,我又添加过几次文件。其次,我做过很多评审,一次修改一个标点符号也会增加我的数据,所以大家要积极评审阿,以后我还是不要做些小修小补。最后看看/trunk/tsvn的状况:

Author Changes Lines of Code Lines per Change
Totals 14 (100.0%) 571 (100.0%) 40.7
wkw2006 7 (50.0%) 369 (64.6%) 52.7
daijun 1 (7.1%) 117 (20.5%) 117.0
Neil.Creater 6 (42.9%) 85 (14.9%) 14.1

嗯,这个结果比较理想,wkw2006做出了主要的工作,而我只进行过一次评审,而且很多修改就是批量替换。

总结:

感觉statsvn功能还是很不错的,对于copy-to的情况不会记录工作量,可以分目录察看工作量,而且还可以忽略某人的工作,就可以排除管理员管理操作的统计。另外statsvn还可以集成在maven中,成为项目报告和网站的一部分。

这次统计的完全报告可以看这个:http://www.subversion.org.cn/svncndoc/report/

有用的资源: