分享

SVN协作流程 | archlinux 中文

 kinghill 2013-01-17

SVN协作流程

本文将以Gooth的Archlinux SVN仓库中的PKGBUILD翻译项目为实例,简单讲述如何通过SVN来协作完成代码的修改(翻译)。

关于SVN

SVN(subversion)是一种版本管理系统,形象的说,他就是记录你对代码的每一次修改,并且能让你自由的回到任何一次修改前的状态(所谓的时间轴、后悔药吧!)。
比如你准备写一段代码,保存在main.c中,从建立一个空白的main.c开始,你就将main.c加入到svn的版本控制系统中。然后,你每次修改main.c之后,都会“提交”到SVN版本控制系统中。
修改很多次之后,你猛然发现,从某次修改之后的代码全部有问题,很希望能够回到那次修改之前的状态。可是通常情况下,只要你保存了main.c的修改到磁盘文件上,你要想后悔,只能利用编辑器提供的有限次的Ctrl+z撤销你的操作了,加入你修改了千万次,那你就得撤销千万次。并且还得编辑器支持(一般是不可能的)。很明显与其这样,估计你宁愿从头再来。
但是有版本控制系统就不一样了,你可以直接用一个“检出”指令,检出那次修改后提交的版本就可以了。不管你此后修改了多少次,只要那次修改后,你“提交”了。

利用SVN工作的流程

单人使用

如果你只是为了买副后悔药,或者自己一个人独立开发代码。那么你的开发流程就是

建立版本库==》建立源文件==》修改==》提交==》再修改==》再提交

多人协作

对于管理员:

建立版本库==》建立源文件==》添加用户并设置权限

对于参与者首次使用:
从版本库检出最新版本==》锁定要修改的文件==》修改==》提交修改(提交就自动解锁了)

对于参与者非首次使用:
更新版本==》锁定要修改的文件==》修改==》提交修改(提交就自动解锁了)

对于查看者:只需要也只能够检出。

操作指南

检出:

在工作目录下执行:

svn checkout SVN仓库地址 [目的地]

其中“SVN仓库地址”就是你要检出的代码库目录(文件),比如:
Gooth服务器上的Archlinux仓库
svn://svn.gooth.cn/archlinux/

Gooth服务器上的Archlinux仓库中的core目录
svn://svn.gooth.cn/archlinux/core/

Gooth服务器上的Archlinux仓库中的core/bash/PKGBUILD文件
svn://svn.gooth.cn/archlinux/core/bash/PKGBUILD

其中的”目的地“是可选的,如果你要将检出的目标指定为某文件(目录)名是可以使用这个参数:
比如,将Gooth服务器上的Archlinux仓库检出为当前目录下的abc目录,就可以使用
svn checkout svn://svn.gooth.cn/archlinux/ abc

这样检出后,abc目录的内容和archlinux里的一样。

更新:

直接在从SVN检出的目录内执行下面的命令即可将当前的工作目录更新到最新版本:

svn update

锁定:

在SVN检出目录中执行

svn lock 文件名(文件的相对路径)

比如当前在检出的archlinux根目录中,要锁定archlinux/core/bash/PKGBUILD这个文件,可以执行
svn lock core/bash/PKGBUILD

提交修改:

svn commit -m "修改说明"

关于用户名和密码的问题

为了防止匿名用户修改,我们将版本库设置为匿名可读,认证可写。
在上面这些操作中,除了“检出”、“更新”外,都需要用户名和密码。
方法是在相应的指令后加上如下参数:

--username 用户名 --password 密码

在执行过需要认证的的命令后,SVN后记住用户信息,以后就可以不用输入了。

实际例子

说再多都不如来个实例的强阿!(下面我假设我的用户名是abc,密码是efg)
首次使用

# 检出代码库
cd ~
svn checkout svn://svn.gooth.cn/archlinux/
# 然后锁定需要修改的文件
cd core
svn lock bash/PKGBUILD -m "锁定该文件,我将在2009年2月7日前完成修改" --username abc --password efg
# 用自己喜欢的编辑器修改文件
vi bash/PKGBULD
# 提交前更新(建议,尤其是你编辑时间很长,这段时间别的人提交了修改的时候)
svn update
# 提交修改
svn commit -m "core/bash/PKGBUILD:翻译完成"

以后再次修改:
# 进入工作目录
cd ~/archlinux/
# 更新一下
svn update
# 锁定要修改的文件
svn lock core/bash/PKGBUILD -m "锁定该文件,我将在2009年2月7日前完成修改"
# 编辑之
vi core/bash/PKGBUILD
# 提交前更新(建议,尤其是你编辑时间很长,这段时间别的人提交了修改的时候)
svn update
# 提交修改
svn commit -m "core/bash/PKGBUILD:翻译完成"

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多