完成了远程及本地服务器部署后,就是代码托管的部署了。
对于svn来说,代码是集中管理在仓库里的,为了方便发布,仓库暂设在投产环境的服务器上,使用的是叫做 VisualSVN server manager 的工具。
svn 的基本目录结构如下:
branches/
trunk/
tags/
trunk 是代码的主干,类似 git 上的 master,branches 是分支,而 tags 则是投产的版本号。以上是约定俗成的目录结构,但其实对 svn 来说跟普通的文件夹并无二样。代码从主干里划出分支或提交新的版本号,实质都是把代码从一个文件夹拷贝到另一个文件夹的操作。可想而知,使用svn 管理代码会有很大的冗余。
基本命令
svn checkout http://url/to/your/repo 从仓库拷贝代码到本地。这里可以选择仓库的根目录或某个分支如 http://url/to/your/repo/branches/dev
svn update / svn commit 本地代码从仓库更新/提交到仓库。
SVN Properties
svn 的配置以 properties 的形式存在。一个 svn 的 properties 具体作用于其所在目录的。
svn proplist . 当前目录下的所有 property 名称
svn propedit [propname] . 修改当前目录下的具体 property 名称的配置
svn propdel [propname] . 删除当前目录下对应的 property 名称的配置
以下以 svn:ignore 为例
svn propedit svn:ignore branches/local/data/session
进入编辑器并加入一行: *
这样就可以把 branches/local/data/session 目录下的所有文件忽略掉不进行追踪。
*值得注意的是,svn:ignore 只有设置本目录下的文件才会生效,因此如多个文件夹的文件需要忽略,要各自设置该文件夹的 svn:ignore 值
SVN Merge
最简单的 merge 操作是 svn merge SOURCE TARGET
其中 SOURCE 必须是远程仓库的链接,而 TARGET 可以是本地路径
目前我的开发和发布流程如下:
- 在本地环境把整个仓库都 checkout 下来,并在 branches 下进行开发
- 开发完成后把最新修改 commit 到远程仓库
- 运行 svn merge http://path/to/your/repo/branches/dev trunk 把远程仓库中的分支代码与本地的主干进行合并
- 主干代码合并没有问题后 commit 到远程仓库。
- 到投产环境,svn checkout 或 update 最新的主干的代码到运行环境中。