SCPlugin: Subversion for the rest of OS X

Filed Under (Subversion Client) by rocksun on 23-08-2007

现在openCollabNet 的Mac社区提供了命令行Subversion的完全最新安装程序,那GUI的访问呢?这是Macintosh,当然有许多独立运行的GUI客户端,一个标准集成到Apple的Xcode,以及EclipseJDeveloper,,NetBeans的插件,以及其他程序,但有没有基本的Finder访问?Windows用户已经用了很多年TortoiseSVN,另一个Tigris项目naughtysvn可以工作在linux的Nautilus桌面环境,为什么Mac不行呢?

“为什么不”真的吗!介绍一下SCPlugin:对于其他OS X的Subversion!

Scplugin_2

tigris.org的 SCPlugin项目已经持续稳定开始工作,带来Finder插件方式的Subversion能力 - 你的整个桌面是可以使用Subversion的,我们刚刚发布了0.7,一个beta版本,但是我们相信已经能够提供支撑日常工作的所有功能。

那SCPlugin是什么?

我们为每个Subversion控制下的文件和目录的Finder图标添加了徽章,这个徽章提示文件的状态:干净检出,修改了,冲突中等等。

我们也扩展了Finder的”上下文菜单”(你知道…control-click或click且不放,或如果你的鼠标有多个键的右键),有了Subversion命令,在弹出菜单中存在的命令应用到你选择的文件和目录。

通过这个插件,OS X Finder加入了Subversion的世界。

一些技术提示:可以与Subversion 1.4.x工作在OS X 10.3.9和10.4.x(不要与其他Subversion 1.3的客户端混合使用),这是一个beta版本:一些事情可能不正常,加入[email protected]邮件列表,提供问题或使用记录。

原始链接

Jack Repenning, CollabNet CTO and SCPlugin community lead


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

不可阻挡的Subversion

Filed Under (General) by rocksun on 17-08-2007

这里openCollabNet发布了一个图像,显示了公共Apache服务器(实际上,只是报告他们包含mod_dav_svn 模块的服务器)对于Subversion采用状况。来自加拿大安全和在线服务咨询公司E-Soft每月发布的原始数据。

上个月150,000服务器报告包含了Subversion模块,进步令人瞩目。在2006年8月,E-Soft报告了46,000服务器,一年增长了3倍,从2005到2006:同样的故事,从15,000到46,000。
Svn
数字只是反映了Subversion服务器的一部分,有很多Apache服务器不会报告他们的模块(我理解这是因为安全的原因),而且也有一些公共Subversion服务器使用svnserve运行,还有更多的服务器在防火墙后面,所以这个报告只是反映了趋势,实际的数字会更高。

另一份有趣的报告来自CIA.vc(不是政府),这个报告覆盖了超过1,000开源项目的提交日志信息,Subversion击败了所有其他系统,并且清楚的超过了CVS,至少根据这个报告。

有多少使用Subversion的开发者参与了变革?当然很难提供绝对的数字,但是如果按照E-Soft 报告说得每个服务器5个用户计算,对于其他公共服务器做出调整,添加一些我们确实知道的大项目(像Apache项目),添加CollabNet平台中使用Subversion的开发者(我们当然有确实的数字),添加主机服务和公司使用,可以公平的说有超过2百万开发者现在使用Subversion。

Subversion是不可阻挡的,肯定是最成功的开源项目之一

原始链接

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


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

使用svnsync镜像版本库

Filed Under (Administration) by rocksun on 06-08-2007

术语

为了更好的讨论svnsync,而不会陷入混淆,在继续之前我们应当建立一些术语:

  • 主(Master): 将要通过svnsync被同步的活动读/写版本库。
  • 镜像(Mirror): 将要与master通过svnsync同步的只读版本库。

总揽

Subversion 1.4发布之后,svnsync工具就成了标准Subversion的一部分,可以用”一个可以维护只读Subversion镜像所有功能的工具”描述,从它的文档中理解它的目的非常简单,为什么在企业中维护一个镜像版本库非常重要?每个Subversion实现都不一样,可能有很多原因,但是有一些是共同的原因:

  • 提供了版本库的备份,这样可以使灾后恢复和软件升级方面得到好处。
  • 提供了一个简单的只读版本库,一些人希望提供简单的只读访问版本库,通过svnsync你可以简单的达到这个目标而无需维护授权文件或其他。(例如:维护一个版本库的社区访问点,同时另一个不同的版本库给开发者使用)

有很多例子,但是必须提供一个svnsync可以提供什么的思想。(更详细的解释,请参考”使用Subversion进行版本控制“的”Repository维护“) 现在我可以投入到脚本建议和例子上了,这有点可耻吧。为了确实理解我们为什么这样做,我们必须理解svnsync的工作。我会简短解释,然后会进入例子脚本和建议,你可以将其应用到你的Subversion实现。

理解svnsync

svnsync工作方式非常简单:将一个版本库的修订版本”重放”到另一个,这意味着镜像版本库和主版本库使用相同的规则,对镜像版本库执行操作的用户必须对其有完全的写权限,而秘诀就是Subversion在镜像版本库的修订版本0上维护了必要的元数据,从而可以知道应该同步什么。svnsync工作原理非常容易理解,但是让svnsync依设计工作,还是有一些规则,你需要知道这一点。下面是一些规则和使用svnsync的最佳实践:

  • 同步用户需要对整个版本库有读/写权限
  • 同步用户需要能够修改特定修订版本属性
  • 镜像版本库需要对除同步用户以外的用户只读
  • 在你同步一个镜像版本库之前,镜像版本库需要在修订版本0

现在,我们知道什么是svnsync了,也知道了它的工作原理以及为什么有用,让我们通过对主版本库使用svnsync开始同步一个镜像版本库。

实现svnsync

实现svnsync的唯一的前提条件是创建一个希望镜像的版本库,一旦创建,你就可以按照下面步骤继续:

Step 1: 创建镜像Repository

svnadmin create MIRROR_REPO_PATH

Step 2: 设置镜像版本库只对同步用户可写

为了让镜像版本库只被同步用户写,我们的例子里用户名是”svnsync”,我们有一些选项,一个就是使用Subversion的授权功能设置缺省的访问规则:

[/]
* = r
svnsync = rw

另一个选项就是使用start-commit 检查svnsync用户,下面是一个例子,是shell脚本:

#!/bin/sh

USER="$2"

if [ "$USER" = "syncuser" ]; then exit 0; fi

echo "Only the syncuser user may commit new revisions as this is a read-only, mirror repository." >&2
exit 1

Step 3: 让镜像版本库使用同步用户修改修订版本属性

为此,我们需要创建一个pre-revprop-change钩子,类似于下面的例子,也是shell脚本:

#!/bin/sh

USER="$3"

if [ "$USER" = "syncuser" ]; then exit 0; fi

echo "Only the syncuser user may change revision properties as this is a read-only, mirror repository." >&2

exit 1

Step 4: 注册同步的镜像版本库

在任何平台使用下面的svnsync命令:

svnsync initialize URL_TO_MIRROR_REPO URL_TO_MASTER_REPO --username=svnsync --password=svnsyncpassword

如果所有的配置正确,你一定会看到下面的输出:

Copied properties for revision 0.

现在你已经注册了镜像版本库与主版本库的同步,我们必须继续执行初始的同步,这样镜像版本库才和主版本库是一样的了。

Step 5: 执行初始同步

为了确定所有事情已经准备好了,并且执行初始同步,在任何系统只需要执行:

svnsync synchronize URL_TO_MIRROR_REPO --username=svnsync --password=svnsyncpassword

如果所有的同步正确,你会看到类似的输出:

Committed revision 1.
Copied properties for revision 1.
Committed revision 2.
Copied properties for revision 2.
Committed revision 3.
Copied properties for revision 3.

Step 6: 使用post-commit钩子自动同步

根据初始同步的输出,我们现在要做的就是写一个定时执行或post-commit钩子来同步镜像版本库,我建议post-commit,因为它让你的镜像版本库尽可能的最新,下面是可以用在主版本库上同步镜像版本库的post-commit钩子,一个shell脚本:

# Example for synchronizing one repository from the post-commit hook
#!/bin/sh
SVNSYNC=/usr/local/bin/svnsync
$SVNSYNC synchronize URL_TO_MIRROR_REPO --username=svnsync --password=svnsyncpassword &

exit 0

就这样了,一旦你执行了上面列出的步骤,你一定可以得到一个随着主版本库提交自动更新的镜像版本库,我们对于svnsync的介绍和如何去实现它。

原始链接


Jeremy is an open source advocate and is currently one of the lead Subversion consultants at CollabNet. In his spare time, he contributes to many open source projects, plays many video games and still continues to be amazed at the personal growth of his two year old son.