初学者使用Subversion(SVN)进行版本跟踪

您是否曾经想要处理一个具有跟踪更改以及恢复更改的功能的项目?How-to Geek讲解如何使用流行的版本跟踪系统Subversion(又名SVN)。

图像由明显的模棱两可

前日志

本指南旨在使您能够在一般情况下使用Subversion客户端,如果您有Subversion客户端,还可以在*DD-WRT路由器上使用Subversion客户端。本指南并不是Subversion的权威指南,在Subversion红皮书上可以找到很多信息。本指南仅旨在为您提供最基本问题的简明答案。

概述 / 综述

您希望能够“签出”使用版本控制系统的软件项目的最新代码,原因可能有很多。这样做可以让您从最新的仍未发布的更改中获益,帮助您进行测试甚至开发。在本指南中,我们将复习一些基本的SVN术语,展示如何在Linux、Windows上安装SVN客户端,如果您有启用OPKG的DD-WRT路由器。我们还提供了一个项目示例,您可以为所述路由器签出并使用该项目。

什么是颠覆?

Subversion绝不是现存的唯一版本控制系统,可供选择的系统包括Git(由Linux内核创始人Linus Torvalds创建)、Mercurial和Perforce等等。尽管如此,它是免费的,它是成熟的,并在世界范围内被广泛使用。

走出颠覆“红皮书”:

注意:本书是关于Subversion的终极知识集,建议您参考所有与Subversion相关的主题。

什么是版本化?

版本控制是保存项目在某个时间点的状态的过程。这类过程通常用于管理软件开发,以便工作可以继续改进项目或添加功能,同时能够跟踪自上次总体“保存”点以来所做的更改。更详细地说,这种过程对一个人很有用,但对一群都在同一项目中工作的人来说更是如此。这是因为,通常情况下,当将一个项目作为一个团队进行工作时,会有职责分配,并且不同的人会改变项目的不同方面。如果没有版本控制机制,就很难使每个人都与其他人保持最新的工作更改同步。

术语 / 用辞

存储库。 存储库是保存所有不同位置的所有数据的位置。在Subversion世界中,从客户端的角度来看,保存项目数据库的是服务器。此数据库包含属于项目的所有文件及其所有以前版本。

修改 / 修订 / 修订本 / 订正版

创建存储库时,它的修订号为零(0)。此数字在每次执行提交时加一(1)。修订版号对于存储库是全局的。也就是说,存储库中的各个文件没有单独的修订号,即使该文件中没有针对该特定提交进行任何更改。

工作副本

工作副本是特定版本的本地副本(或“签出”)。通常,签出此版本时是“最新的”版本(也称为“Head”),但也可以请求以前的版本。用户可以对本地副本做他/她想做的任何事情,知道在最坏的情况下,他们可能只会再次签出代码。而且,这份拷贝是“私人的”。这是因为在您更新或提交副本之前,您不会看到其他人的更改,他们也不会看到您的更改。

更新和冲突解决

可以更新本地工作副本。也就是说,如果您“签出”了某个版本,并且在工作时,存储库上的版本已更新,则可以将工作副本更新到最新版本。事实上,在您更新到与存储库匹配的最新版本之前,服务器将阻止您提交更改。这样做是为了迫使您在本地解决冲突,甚至在您考虑将更改提交到存储库之前。

合并

合并是指将更改的代码混合到一个版本中的过程。它还可能需要解决冲突。

提交是指您对本地副本所做的更改将合并回存储库中的过程。这是该过程中最危险的部分,因为在这里,您所做的更改可能会影响使用同一存储库的其他人。这就是为什么这通常是在经过一些考虑之后,根据团队的共识,在您解决了任何合并冲突之后进行的。

工作流程

从用户的角度来看,使用Subversion时最基本的工作流程如下:

1.签出已有代码(通常为Head)。 2.修改、添加文件,一般开发代码。 3.更新到最新版本,以确保您的本地副本与存储库上的更新同步。 4.如有必要,可在本地合并和解决冲突。 5.将合并的更改提交到存储库中。 6.转到步骤2。

让我们开始行动吧

安装客户端

为了能够使用Subversion,您需要在您的计算机上安装客户端。

在Linux上

您只需安装该软件包。在Ubuntu/Mint上,这可以通过以下方式完成:

关于DD-WRT

如果您已按照“如何在家庭路由器上安装附加软件(DD-WRT)”进行操作,则只需执行以下命令即可安装SVN客户端:

论Windows

虽然我们这些极客用户可能会开始忘记GUI有时会存在,但并不是每个人都会忘记。如果您想使用Windows客户端连接到SVN存储库,到目前为止最流行的是“Tortoise”。要使用它,只需下载程序并以常规的“下一步、下一步、完成”方式安装即可。

创建“存储库”

虽然在本指南中我们不会详细介绍如何设置Subversion服务器,但是Google替代方案对于初学者来说是一个不错的开始。要创建Google存储库,请执行以下操作:

前往Google Code托管网站,“创建”一个新项目。 在下一页中,填写必填字段,选择Subversion类型的“版本控制系统”。 注意:在为项目选择许可证之前,您可能希望浏览一下Google提供的许可证之间的区别。 点击[创建项目]。

Google代码的好处在于,它将为您的项目启用匿名只读版本。如果您不想处理创建自己项目的麻烦,您可以匿名签出本文作者的存储库。

关于hotfortech项目有一点值得注意:这个项目的目的是成为DD-WRT中添加的关于How-to Geek(我个人可以使用)的功能的一个高级包装器,外加一些个人软件调整。虽然这个项目是为了配合在Howtogeek上发表的文章一起工作,但它仍然是我的私人项目。也就是说,它非常适合我的Buffalo路由器(AR71xx架构),这是我个人的奇思妙想,而且容易偶尔出现边界。

在Linux/DD-WRT上

创建要在其中工作的目录(例如,在DD-WRT上),该目录可以是:

Linux上的完整命令由svn命令本身、“checkout”指令、存储库地址和要签出的目录组成。创建一个空目录并执行以下命令:

请注意,在上面的示例中,正在签出只读版本。如果您选择创建自己的存储库,则需要使用https链接。

论Windows

创建一个空目录。 在其中单击鼠标右键以调出上下文菜单。 选择[SVN Checkout]: 将项目链接(如果有)复制并粘贴到“URL”文本框中:

根据您项目的大小,这可能需要一段时间,但当“签出”完成后,您应该会看到类似以下内容: 你可以开始发育了。

“更新”和“合并”您的工作副本。 如果您与同事一起处理代码,或者您自己正在从多个位置(即笔记本电脑、台式机甚至路由器)更新代码,则在提交最新更改之前,您必须更新您的工作副本。

在Linux/DD-WRT上

在这些POSIX系统上执行此操作的命令很简单:

论Windows

在工作目录中右击,选择[SVN更新]: 如果您遇到冲突,请尝试按照屏幕上的说明进行操作,并使用您的判断来解决这些冲突。

“提交”您的更改。 就是这样,您应该是无冲突的,并且准备好用您的更改更新存储库。 这里需要注意的一点是,通常的做法是将“日志”消息添加到提交,以便能够轻松地回忆做出更改的原因。事实上,Google的存储库将此作为提交的强制性前提条件。

在Linux/DD-WRT上

这是我对hotfortech项目所做承诺的一个示例,该项目将其升级到版本19:

论Windows

在工作目录中右击,选择[SVN Commit]: 您应该会看到一个窗口,该窗口允许您记录日志消息: 点击OK,当提示输入密码时,给出Google生成的密码。 如果提交成功,您应该看到类似以下内容: 就是这样,你应该能够像老板一样尽职尽责。

结束语。 这应该足以让你开始了。建议您阅读SVN参考书,以便更深入、更好地掌握SVN的所有用法、选项和注意事项。此外,我们(再次)提醒您,Subversion不是唯一的版本控制系统,而且git(由Linux内核创始人Linus Torvalds创建)近年来似乎越来越受欢迎。

如果您将选择在您的路由器上运行hotfortech项目中的“running-config.sh”,您会发现它目前将为您安装:Anti-ads-pack、opkg geek-init脚本,以及完整的GNU“ls”、“less”、“bash”等。

更多功能正在等待中,并将在未来添加。

系统管理员将通过编码退出编码。

相关文章