技术开发 频道

建立Subversion服务器

【IT168 技术文章】

    序言

    像我以前说过的,subversion 是一个非常好的版本控制系统。如果你对版本控制这个概念不太了解的话,我来简单解释一下。比如我有一个项目,有几百个文件,包括项目的相关文档,图表,和一些视频音频文件,它们都被放在电脑的一个文件夹内。随着项目的发展,文件夹内的会增加新的文档图表等文件,而老的文件也会被修改,同时也许会有一些文件会被删除。在版本控制系统下,每一次对该项目文件夹下的改动,都会被记录,如果哪个文件被删错了,或是想把文档恢复到以前的版本,可以轻而易举的达到。更了不起的是,如果该项目被一个团队来执行,该团队的每一个成员都可以对项目内的文件进行管理和同步,这样就可以保持大家永远 on the same page.

    如果我说的不清楚,可以参考一下 Google Docs 的 revision 功能,对于一篇文档,你可以回到以前的版本。这个就是一个简单的版本控制。本质上说,subversion 干的活和 Google Docs 干的一样,但不同的是,subversion 使用上更加灵活,功能上更加强大。

    对于普通的个人应用,建立 subversion 服务器完全可以在自己的电脑上进行,而且非常简单,因为完全不用去考虑安全的因素,所以也不必设置相关的验证身份的程序。如果想把“项目文件夹”(我不知道应该怎么翻译,以下改称 repository 或 repo)放在局域网上,甚至互联网上,就相对复杂一些了。

    除了这篇序言,我准备分三篇说说如何建立 subversion 服务器,Windows 和 Linux 都适用,因为这几天我一直都在 Linux 下,例子就举 Linux 下的,Windows 下也是一样的,只需把路径格式换成 Windows 的就可以了。

    建立自己的 Repository

    基础知识  

    在 Subversion (以下简称 svn) 下有两个概念要清楚,一个是 repository (以下简称 repo), 一个是 working copy (以下简称 wc)。前者是项目所在的地方,后者是你做修改的地方,两者的内容可以完全一样,也可以不完全一样,两者在电脑上一般都表现为文件夹或目录。你在 wc 里所做的改动可以 commit 到 repo 中,如果你成功把 wc 中的内容 commit 到 repo 中,那么 repo 就会自动更新一个版本 (revision)。如果不进行 commit 操作,你在 wc 上做的任何修改对不会对项目产生任何影响。如果你愿意,可以随时把 wc 替换为任何一个 revision (包括以前的老版本)。

    要使用 svn 就要先安装,ubuntu 的用户很简单,直接在终端处输入:

    sudo apt-get install subversion

    就完成了,Windows 需要到下载页面下载 Windows 版本,我建议下载 .zip 包,直接解压就可以使用了。

    在 windows 下使用最好把 svn 的执行文件路径加入到 PATH 这个环境变量中去,以便能够在任何路径下都可以正常使用,你很快就能发现,这点很重要。

    建立自己的 repo

    假设我要正在制作一个 wordpress 主题,我需要对制作过程中的文件建立一个 repo, 以便在需要时可以随时“回到过去”。制作中的主题所在的目录为 /foo/bar,我准备在 /home/michael 下建立一个 repo,那么我需要这么做:

    #建立一个名为 theme 的 repository
svnadmin create /home/michael/theme

    #把 /foo/bar 下的内容导入到 theme 中并建立 repo,这个 repo 的版本号是 1。
svn import -m "第一次导入" /foo/bar file:///home/michael/theme

    从此以后,如果在本地电脑上想 checkout 刚才建立的 repo 只需在任何路径下输入

    #建立一个名为 baz 的 working copy
svn checkout file:///home/michael/theme baz

    就完成了一个 working copy 的建立。Windows 用户需要把路径格式换成 file:///X:/path/to/repo。其中 X: 为 repo 的盘符。

    在 wc 中你可以任意修改,如果不满意可以直接用 svn revert 命令恢复。在适当的时候你觉得需要把你的修改提交到 repo 中去了,可以用:

svn commit -m "blah blah"

    这样就产生了新的版本。”blah blah” 是给这个新版本的注解。

    svn 命令

    要注意的一点是,在 wc 下做文件操作时,比如删除或移动文件,不能直接用 rm, mv 来进行,这样 svn 不能追踪到文件的变化,你必须使用 svn del 或是 svn move 来完成删除或移动的操作。下面举几个命令的例子:

svn add filename #新增一个文件
svn move filename foo/bar/baz #移动 filename 到 foo/bar/baz 下
svn rename filename1 filename2 #给文件改名

    跟普通的 DOS/Linux 命令没什么不同,更多具体的命令可以参考 svn book。Windows 用户如果觉得命令行太麻烦,可以用一个名叫 TortoiseSVN 的图形化前端来代替命令行。

    总结

    通过以上的内容我们已经可以:

    建立 repository
    导入项目到 repo 中
    建立 working copy
    一些简单的 svn 命令

    以上对个人的小项目来说基本够用了,但如果要用的得心应手还是不行,大家可以用 svn help 命令来查看其它命令的用法。如果你对命令行操作感到不适应,这里尤其建议 Windows 下的用户使上面提到的 TortoiseSVN 软件,完全图形化界面,使用非常简单。如果需要帮助,可以看看 Lifehacker 上的使用指南。

0
相关文章