This text is a work in progress—highly subject to change—and may not accurately describe any released version of the Apache™ Subversion® software. Bookmarking or otherwise referring others to this page is probably not such a smart idea. Please visit http://www.svnbook.com/ for stable versions of this book.

使用外部编辑器

为了向 Subversion 添加数据, 最明显的方式就是添加新文件, 或者向已有 的文件提交修改, 但是除文件内容之外的其他信息则只存在于仓库中, 其中一些 信息—例如日志消息, 与锁有关的注释, 以及某些属性值—是纯文本 的, 而且由用户显式提供. 这些信息中的大部分都可以用选项 --message (-m) 和 --file (-F) 传递给 Subversion 客户端.

这两个选项各有利弊. 例如, 当你执行提交操作时, 如果你已经事先把日志 消息写到了一个文本文件里, 那么选项 --file (-F) 就可以工作得很好. 如果你还没有把日志消息写到一个 文件里, 那你可以通过选项 --message (-m) 把日志消息写到命令行上, 不幸的是, 如果你想在命令行上输入多于一行的日志 消息就会比较困难. 用户希望更灵活的输入形式—多行文本和不受约束的 日志消息编辑.

Subversion 允许用户指定一个外部文本编辑器, 必要时, Subversion 会 启动该编辑器, 从而允许用户更加灵活地输入文本信息 (例如日志消息和属性 值). 有多种方式用于指定外部编辑器, 当 Subversion 想要启动外部编辑器时, 将按照如下顺序查看应该启动哪个编辑器:

  1. 命令行选项 --editor-cmd

  2. 环境变量 SVN_EDITOR

  3. 运行时配置选项 editor-cmd

  4. 环境变量 VISUAL

  5. 环境变量 EDITOR

  6. 可能是被编译到 Subversion 库中的备用编辑器 (在官方构建的版本中 不存在)

上面任意一个选项或变量的值都是一个将被 shell 执行的命令行的开头, Subversion 会在命令行的后面加上一个空格, 然后再加上一个临时文件的路径. 所以说, 为了能被 Subversion 使用, 所指定的编辑器必须支持它的最后一个命令 行参数是待编辑的文件, 而且在保存文件时不能更改路径, 编辑器成功退出时 必须返回 0.

外部编辑器可以为提交类的子命令 (例如 svn commit, svn import, svn mkdirsvn delete) 提供日志消息, 如果没有指定选项 --message (-m) 和 --file (-F), 那么 Subversion 就会尝试 启动外部编辑器, 命令 svn propedit 几乎就是在围绕着 外部编辑器. 从 Subversion 1.5 开始, Subversion 还可以在交互式地解决冲突 时, 按照用户的要求来启动外部编辑器. 奇怪的是, 在编写锁注释时无法使用 外部编辑器.