10.8.7. Subversion 工作流
这里给出使用 Subversion 及其原生客户端的典型工作流示例。
提示 | |
---|---|
|
查看如下所示的 URL “file:///srv/svn/project
“ 指向的 Subversion 项目上所有可用的模块。
$ svn list file:///srv/svn/project
module1
module2
...
按如下所示的检出 “module1/trunk
“ 到 “module1
“ 目录。
$ cd ~/path/to
$ svn co file:///srv/svn/project/module1/trunk module1
$ cd module1
按需修改里面的内容。
通过如下所示的命令来检查改变,其作用相当于使用 “diff -u [repository] [local]
“。
$ svn diff
你发现自己改坏了 “file_to_undo
“ 文件,而其他的文件都是好的。
按如下所示的用 Subversion 中的干净副本来覆盖 “file_to_undo
“ 文件。
$ svn revert file_to_undo
按如下所示的把已经更新了的本地源目录树保存到 Subversion。
$ svn ci -m "Describe change"
按如下所示的创建 “file_to_add
“ 文件并把它添加到 Subversion。
$ vi file_to_add
$ svn add file_to_add
$ svn ci -m "Added file_to_add"
按如下所示更新工作拷贝到 Subversion 中的最新版本。
$ svn up
当心以 “C filename
“ 开头的行,这意味着冲突的改变。
查看文件中未经修改的代码,例如 “filename.r6
“, “filename.r9
“ 和 “filename.mine
“ 文件。
查找文件中的 “<<<<<<<
“ 和 “>>>>>>>
“ 来获得冲突的改变的信息。
按需更改文件来解决冲突。
按如下所示添加一个发布标签 “Release-1
“。
$ svn ci -m "last commit for Release-1"
$ svn cp file:///srv/svn/project/module1/trunk file:///srv/svn/project/module1/tags/Release-1
继续编辑文件。
按如下所示移除发布分支 “Release-1
“。
$ svn rm file:///srv/svn/project/module1/tags/Release-1
按如下所示把改变签入到 Subversion。
$ svn ci -m "real last commit for Release-1"
按如下所示在最新的 Subversion 主干的基础上重新添加发布分支 “Release-1
“。
$ svn cp file:///srv/svn/project/module1/trunk file:///srv/svn/project/module1/tags/Release-1
按如下所示在 “module1/tags/Release-initial
“ 路径指定的最初版本的基础上再创建一个路径为 “module1/branches/Release-initial-bugfixes
“ 的分支,并把它签出到 “~/path/to/old
“ 目录。
$ svn cp file:///srv/svn/project/module1/tags/Release-initial file:///srv/svn/project/module1/branches/Release-initial-bugfixes
$ cd ~/path/to
$ svn co file:///srv/svn/project/module1/branches/Release-initial-bugfixes old
$ cd old
提示 | |
---|---|
使用 “ |
在基于原始版本的 “Release-initial-bugfixes
“ 分支的本地源目录树上工作。
独自在 “Release-initial-bugfixes
“ 分支上工作…直到有其他人加入到此分支。
按如下所示同步其他人在此分支上改动的文件。
$ svn up
按需更改文件来解决冲突。
按如下所示把改变签入到 Subversion。
$ svn ci -m "checked into this branch"
按如下所示更新本地目录树为主干的最新版本。
$ svn switch file:///srv/svn/project/module1/trunk
按如下所示通过合并 “Release-initial-bugfixes
“ 分支的方式来更新本地目录树 (内容为主干的最新版本)。
$ svn merge file:///srv/svn/project/module1/branches/Release-initial-bugfixes
用编辑器来解决冲突。
按如下所示把改变签入到 Subversion。
$ svn ci -m "merged Release-initial-bugfixes"
按如下所示创建归档。
$ cd ..
$ mv old old-module1-bugfixes
$ tar -cvzf old-module1-bugfixes.tar.gz old-module1-bugfixes
$ rm -rf old-module1-bugfixes
提示 | |
---|---|
你能够用像 “ |
提示 | |
---|---|
通过 “ |
表 10.15. 值得注意的 Subversion 命令选项 (使用时作为 svn(1) 的第一个参数)
选项 | 说明 |
---|---|
—dry-run | 测试,没有影响 |
-v | 显示 svn 活动的详细信息 |