Most software has a typical lifecycle: code, test, release, repeat. There are two problems with this process. First, developers need to keep writing new features while quality-assurance teams take time to test supposedly-stable versions of the software. New work cannot halt while the software is tested. Second, the team almost always needs to support older, released versions of software; if a bug is discovered in the latest code, it most likely exists in released versions as well, and customers will want to get that bugfix without having to wait for a major new release. Here's where version control can help. The typical procedure looks like this:
<1> Developers commit all new work to the trunk. Day-to-day changes are committed to /trunk: new features, bugfixes, and so on.
<2> The trunk is copied to a "release" branch. When the team thinks the software is ready for release (say, a 1.0 release), then /trunk might be copied to /branches/1.0.
<3> Teams continue to work in parallel. One team begins rigorous testing of the release branch, another team continues new work (say, for version 2.0) on /trunk. If bugs are discovered in either location, fixes are ported back and forth as necessary. At some point, however, even that process stops. The branch is "frozen" for final testing right before a release.
<4> The branch is tagged and released. When testing is complete, /branches/1.0 is copied to /tags/1.0.0 as a reference snapshot. The tag is packaged and released to customers.
<5> The branch is maintained over time. While work continues on /trunk for version 2.0, bugfixes continue to be ported from /trunk to /branches/1.0. When enough bugfixes have accumulated, management may decide to do a 1.0.1 release: /branches/1.0 is copied to /tags/1.0.1, and the tag is packaged and released.
This entire process repeats as the software matures: when the 2.0 work is complete, a new 2.0 release branch is created, tested, tagged, and eventually released. After some years, the repository ends up with a number of release branches in "maintenance" mode , and a number of tags representing final shipped versions.
分享到:
相关推荐
总之,SVN版本控制系统提供了强大的文件管理和协同功能,而清理.SVN子目录则是为了特定目的,如节省空间或保护隐私。通过编写脚本或使用专用工具,可以轻松实现这一操作。但一定要谨慎,确保在删除前理解其可能带来...
"去掉SVN版本控制"这个话题涉及到的是如何从已经受SVN管理的项目中移除版本控制信息,使得文件和目录不再与SVN仓库关联。这通常发生在个人想要独立工作,或者不再需要团队协作的情况下。 `清理SVN.BAT`是一个批处理...
集中式版本控制系统以CVS和SVN为代表,它们使用一个单一集中管理的服务器来保存所有文件的修订版本,所有开发者从该服务器下载最新版本,进行开发并提交更改。CVS是最早的开源版本控制系统之一,它可以跨平台使用,...
2. **版本控制操作**:`svn add <file>` 添加文件,`svn commit -m "commit message"` 提交更改,`svn update` 更新工作副本到最新版本。 3. **分支和标签**:在 SVN 中,分支和标签是仓库的不同路径。创建分支 `...
CVS是一种广泛使用的版本控制系统,而SVN作为其后继者,提供了一些改进的功能和更现代的架构。随着项目的发展,很多团队选择从CVS迁移到SVN,以利用后者的优势。 cvs2svn是一个开源工具,专门设计用来帮助用户平滑...
**Subversion**,简称SVN,是一种开源的集中式版本控制系统。它被广泛应用于软件开发和其他领域,用于跟踪和管理不同版本的文件和代码。SVN的主要优势在于其简单易用、稳定可靠以及强大的社区支持。 ### 知识点二:...
Subversion(SVN)是一个版本控制系统,它用于管理文件和目录的变化。SVN是CVS(Concurrent Versions System)的后继者,并且它是一个开源的软件版本管理工具,被广泛用于软件开发中以协助代码的版本控制。它在管理...
在软件开发过程中,版本控制是至关重要的,它帮助开发者跟踪代码的变更,管理不同阶段的项目状态。在众多版本控制系统中,Subversion(SVN)是一个广泛应用的选择。本篇文章将探讨如何利用Python来自动化地从SVN版本...
在IT行业中,版本控制系统是开发团队协作的重要工具,而Subversion(简称SVN)就是其中的一种。本篇文章将深入探讨如何通过公网以HTTP方式访问单位的SVN服务器,使远程开发者能够便捷地进行代码同步与协作。我们将...
Subversion(简称SVN)作为一款流行的集中式版本控制系统,在开发团队中广泛使用。本文将详细介绍如何在myEclipse 9.0环境中安装SVN插件,以实现与SVN仓库的无缝集成。 #### 二、环境配置 1. **操作系统**:CentOS...
随着版本控制系统的发展与演进,从较早的集中式版本控制系统(如CVS)到更先进的Subversion(SVN),开发者们经常面临将现有CVS仓库迁移到SVN的需求。本文将详细介绍如何在Windows环境下完成这一过程,并给出具体的...
SVN(Subversion)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件。它允许开发者跟踪文件的修改历史,协同工作,以及回滚到以前的版本。SVN1.8是Subversion的一个重要版本,引入了多项改进和新...
Subversion(SVN)是一种版本控制系统,用于管理软件项目的源代码和文件的变更。在使用SVN时,可能会遇到各种问题,以下是一些常见的问题及其解决方法: 1. **黄色感叹号(有冲突)**: 当你看到黄色感叹号时,表示你...
本话题涉及的是一款名为“hex转bin小工具”的应用程序,它专门用于帮助生成带有SVN版本号的APP。这在软件开发过程中非常有用,因为版本控制是确保代码质量和追踪更改的关键。 首先,我们需要理解“hex”和“bin”这...
在过去的许多年里,Subversion(SVN)是广泛应用的版本控制系统,但随着时间的发展,Git逐渐崭露头角,因其分布式特性和强大的功能而受到广泛欢迎。本文将详细介绍如何将现有的SVN仓库转换为Git仓库,以便更好地适应...
【mac华为SVNClient】是华为公司在Mac操作系统上推出的一款版本控制系统客户端,它相当于Windows平台下的QuidwayClient。SVN(Subversion)是一种广泛应用于软件开发中的版本控制系统,用于管理文件和目录的历史版本...
在IT行业中,版本控制系统如Subversion(SVN)被广泛用于团队协作,它允许开发者跟踪代码的更改并协同工作。然而,有时我们可能需要清理SVN仓库中的旧文件或特定日期的文件,以节省存储空间或者进行数据管理。本文将...
总之,"SVN清除工具"是一个实用的辅助程序,能够帮助开发者高效地从项目中移除SVN版本控制痕迹,特别是对于那些不再需要版本控制或者需要转换到其他版本控制系统的情况。通过自定义扩展名配置,工具可以适应不同的...
**SVN 使用教程** ...总之,SVN 是一个强大的版本控制系统,通过理解其核心概念和操作流程,开发者可以有效地协作和管理项目代码。通过熟练使用 SVN,可以提高团队的生产力,确保代码的质量和一致性。