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

时间:2020-01-09 10:44:05  来源:igfitidea点击:

什么是Subversion?

Subversion绝不是唯一存在的版本控制系统,替代品包括Git(由Linux内核创始人Linus Torvalds创建),Mercurial和PerForce等。话虽如此,它是免费的之一,它已经成熟并且在世界范围内被广泛使用。

什么是版本控制?

版本控制是保存项目在某个时间点的状态的过程。这种过程通常用于管理软件开发,因此工作可以继续改进项目或者添加功能,同时能够跟踪自上次总体保存点以来发生了什么变化。详细地说,这种过程对单个人可能有用,而对于一组都在同一项目上工作的人则更为有用。这是因为,通常,当一个团队作为一个团队工作时,职责是分布的,并且不同的人会改变项目的不同方面。没有版本控制机制,要使每个人都与其他人保持最新的工作变化保持同步非常困难。

术语

仓库
存储库是保存来自各个位置的所有数据的位置。从客户的角度来看,在Subversion的世界中,服务器是保存项目数据库的服务器。该数据库包含项目中所有的文件及其所有以前的版本。

修订版

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

工作副本

工作副本是特定版本的本地副本(或者签出)。通常,此版本在签出时是最新版本(也称为头像),但可以要求使用以前的版本。用户可以使用本地副本进行他/她想要的任何操作,但前提是他们知道在最坏的情况下他们可以再次签出代码。此外,此副本是私人的。这是因为除非我们更新或者提交副本,否则我们将看不到其他人的更改,也不会看到他们的更改。

更新和解决冲突

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

合并中

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

提交

提交是将对本地副本所做的更改重新合并到存储库中的过程。这是过程中最危险的部分,因为我们所做的更改可能会影响使用同一存储库的其他人。这就是为什么通常在经过考虑后,在团队达成共识之后,并且在解决任何合并冲突之后才进行此操作的原因。

工作流程

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

1.签出现有代码(通常是头部)。
2.进行更改,添加文件并通常开发代码。
3.更新到最新版本,以确保本地副本与存储库中的更新同步。
4.如有必要,在本地合并并解决冲突。
5.将合并的更改提交到存储库中。
6.转到。

让我们开始

安装客户端

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

在Linux上

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

sudo aptitude install subversion

在DD-WRT上

如果遵循了如何在家庭路由器(DD-WRT)上安装其他软件的方法,则只需发出以下命令即可安装svn客户端:

opkg update; opkg install subversion-client

在Windows上

虽然我们非常讨厌,但用户可能会开始忘记GUI有时甚至存在,但并不是每个人都有。如果要使用Windows客户端连接到SVN存储库,到目前为止,最受欢迎的是Tortoise。要使用它,只需下载程序并按常规的下一步安装方式安装。

创建存储库

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

  • 前往Google Code托管网站并创建一个新项目。

  • 在下一页中,填写必填字段,然后选择要颠覆的版本控制系统的类型。注意:在为项目选择一个之前,我们可能希望浏览一下Google提供的许可之间的区别。

  • 单击创建项目。

签出工作副本

创建项目后,我们应该能够在"源"选项卡中找到有关如何访问它的说明。

关于Google代码的好处是,它将为项目启用匿名只读版本。如果我们不想处理创建自己的项目的麻烦,则可以匿名签出此作者的资料库。

关于hotfortech项目的一个注释:该项目将包装在iGiftIdea(我个人使用)上的DD-WRT中的功能,以及一些个人调整。尽管该项目旨在与theitroad上发表的文章配合使用,但这仍然是我的私人项目。就是说,它非常适合我的Buffalo路由器(AR71xx架构),我个人的想法很容易发生。

在Linux / DD-WRT上

创建要在DD-WRT上使用的目录,该目录可以是:

mkdir -p /jffs/svn; cd /jffs/svn

Linux上的完整命令包括SVN命令本身,checkout指令,存储库的地址以及要检出的目录。创建一个空目录并执行以下命令:

svn checkout http://hotfortech-dd-wrt.googlecode.com/svn/trunk/ hotfortech-dd-wrt-read-only

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

在Windows上

由于tortoise是一个shell扩展,因此我们需要使用Windows文件浏览器的上下文菜单(单击鼠标右键)来使用它。实际上,如果尝试从开始菜单调用它,则会得到:

  • 创建一个空目录。

  • 右键单击它以弹出上下文菜单。

  • 选择SVN Checkout:

  • 将项目链接(如果有的话)复制并粘贴到URL文本框中:

  • 根据项目的大小,这可能需要一段时间,但是当Checkout完成时,我们应该会看到类似以下内容的信息:

  • 我们可能会开始开发。

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

在Linux / DD-WRT上

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

svn up

在Windows上

  • 右键单击工作目录,然后选择" SVN更新":

  • 如果遇到冲突,请尝试按照屏幕上的说明进行操作,然后根据自己的判断来解决这些问题。

提交更改
就是这样,我们应该没有冲突,并准备好使用所做的更改来更新存储库。
这里要注意的一点是,将日志消息添加到提交是一种常见的做法,以便能够轻松地回想为什么进行更改。实际上,Google的存储库使这成为提交的强制性准备工作。

在Linux / DD-WRT上

这是我对hotfortech项目所做的提交(将其升级到版本19)的示例:

svn commit -m “updated to reflect new ant-ads pack link”

在Windows上

  • 右键单击工作目录,然后选择SVN Commit:

  • 我们应该被一个允许我们注意日志消息的窗口欢迎:

  • 点击确定,当提示我们输入密码时,输入Google生成的密码。

  • 如果提交成功,我们应该看到以下内容:

  • 就是这样,我们应该能够像BOSS一样进行提交。