跳转到内容

WebObjects/Web 应用程序/开发/WebObjects 和 Subversion

来自 Wikibooks,开放世界中的开放书籍

关于在 WebObjects、Interface Builder 和 Mac OS X 中使用 subversion 的说明。

9/2/2005

使用的版本

  • Mac OS X 10.4.2
  • subversion 1.2.3
  • Interface Builder 2.5.1 (439)
  • XCode 2.1
  • WebObjects 5.3

Apple XCode 用户指南的附录 C 和 D(使用 Subversion 和配置 SSH 环境)在设置方面提供了相当大的帮助,尽管我建议您通过 subversion 主页上的下载链接安装 subversion,而不是使用 DarwinPorts。通过这些链接提供的二进制版本更容易安装,因为它使用传统的可双击包安装程序。请注意,您的安装路径将为 /usr/local/bin,而不是 /opt/local/bin。

我还发现 Ben Collins-Sussman、Brian W. Fitzpatrick 和 C. Michael Pilato 编写的“使用 Subversion 进行版本控制”一书非常有用。

  • 创建存储库时,最好使用文件系统而不是 Berkeley DB。为此,请将 --fs-type fsfs 标志传递给 create 命令。

例如:svnadmin create --fs-type fsfs /path/to/repos

  • 至少有三种不同的方法可以对存储库进行身份验证。我使用了 svn+ssh 方法,尽管我相信其他方法也能正常工作。
  • 如果您使用 ssh+svn 方法,则提供一个虚拟存储库路径很有帮助,这样最终用户不必输入完整的路径。例如,在我的 authorized_keys 文件中,我的密钥以以下内容开头
 command="/usr/local/bin/svnserve -t -r /Users/svn/svnrep/" ssh-dss

这允许用户使用类似于 "svn+ssh://server-name/project-name" 的路径,而不是 "svn+ssh://server-name/Users/svn/svnrep/project-name"。

  • 在使用 ssh 与多个用户时,为了防止文件权限问题,服务器上的每个 subversion 命令都应该用一个 shell 脚本包装,该脚本首先调用 umask,例如
 $ cat /usr/local/bin/svn
 #!/bin/sh 
 umask 002 
 /usr/local/bin/svn-real "$@"

这意味着您应该重命名每个命令并创建一个 shell 脚本包装器,该包装器调用实际的命令。

  • 如果您创建 trunk、branches 和 tags 目录,如本书中所述,您应该只检出 trunk。
  • XCode 中的 subversion 支持存在一些问题,我使用免费的 "svnx" 效果更好,可以在网上找到。
 http://www.lachoseinteractive.net/en/community/subversion/svnx/features/
  • Subversion 在它管理的每个目录中都留下了 ".svn" 目录,这会导致早期版本的 Interface Builder 和 EOModeler 出现问题,这些工具会在保存时删除所有这些目录。请确保您使用的是这些工具的最新版本。
  • 如果您正在使用 Interface Builder 开发 Java 客户端程序,您的 nib 文件将包含一个 java 文件,该文件位于几个目录下。这些目录中的每一个都包含一个 ".svn" 目录,即使是新版本的 Interface Builder 也会删除这些目录。为了解决这个问题,您需要下载并安装 "SubversionPalette.palette";来自http://www.rtlabs.com/downloads/。即使这显然已经很老了,但它似乎仍然有效(2005 年 9 月)。

就这样!祝您好运,享受 subversion 的乐趣。

Peter Vandoros

[编辑 | 编辑源代码]

我已经将 EOModeler 修补程序从http://www.rtlabs.com/downloads/移植到 Windows。从http://wocode.com/cgi-bin/WebObjects/WOCode.woa/wa/ShareCodeItem?itemId=451获取。

华夏公益教科书