Skip to content

使用svn进行版本管理

svn

代码管理工具。和git对比有着更简单,更安全的特点。常用于企业管理代码。

将本地代码合并到 prd 分支并提交发版的完整步骤可以按以下流程进行。这假设你已经有一个本地工作副本,并且你正在使用 SVN 进行版本控制。

这次从创建本地仓库到合并发版的一些常用命令:

1. 更新本地代码库

首先,确保你的本地代码库是最新的,以避免合并时产生冲突。

bash
svn update

这会把远程代码库中最新的修改拉取到你的本地工作副本。

2. 切换到 prd 分支

如果你当前不在 prd 分支,需要切换到该分支。假设 prd 是你需要合并到的分支。

bash
svn switch ^/branches/prd

这个命令会将你的工作副本切换到 prd 分支。

3. 合并代码到 prd 分支

现在,将你的本地更改合并到 prd 分支。通常你会从你的开发分支(如 devfeature-branch)合并。

bash
svn merge ^/branches/dev

这里,^/branches/dev 表示远程 dev 分支的路径。

如果你是在本地开发的,而不是在特定分支,可以使用:

bash
svn merge .

这将当前工作副本的更改合并到 prd 分支。

4. 解决冲突

合并过程中可能会产生冲突。SVN 会标记这些冲突,你需要手动解决它们。

  • 打开冲突文件并手动编辑,确保合并的代码是正确的。

  • 使用以下命令标记冲突已经解决:

    bash
    svn resolve --accept=working <file_name>

或者,如果你使用的是图形化工具(如 TortoiseSVN 或 Kaleidoscope),可以通过界面解决冲突。

5. 测试和验证

在提交之前,确保合并后的代码能够正常工作。你可以在本地环境中执行测试,确保没有引入新的问题。

6. 提交代码到 prd 分支

一旦合并完成,并且你确信代码没有问题,可以提交更改到 prd 分支。

bash
svn commit -m "Merged changes from dev branch to prd for release."

这里的 -m 选项用于添加提交信息,描述此次合并的内容。

7. 标记版本(可选)

为了记录发版的状态,可以为此次发版创建一个 SVN 标签(tag),这在未来的版本管理中很有帮助。

bash
svn copy ^/branches/prd ^/tags/release-X.X.X -m "Tagging version X.X.X for release."

这个命令会将 prd 分支的当前状态复制到 tags 下,作为一个新版本发布的标记。

分支管理

在Subversion (SVN) 中,tags、trunk 和 branches 是三个常用的目录结构概念,它们用于组织和管理项目的不同版本、开发分支和稳定版本。

当然这种结构并不是必须的,是指约定俗成的最佳实践。

目录结构:

/project_root/
    /trunk/
    /branches/
    /tags/
  1. Trunk(主干)

trunk 是项目的主开发线,也就是主干。通常,所有新的开发工作都会直接在 trunk 上进行。这包括新功能的开发、bug修复等。trunk 是项目的最新版本,通常处于不稳定状态,适合开发者使用。

  1. Branches(分支)

branches 目录通常包含项目的分支版本。分支通常用于开发新的功能、修复重大bug、或为特定版本进行定制。开发人员可以在分支上进行工作,而不影响 trunk 中的其他开发工作。

用途:

  • 功能分支:用于开发特定的新功能。
  • 发布分支:用于准备发布的版本,并只允许进行bug修复和最后的调优。
  • 维护分支:用于对已发布的版本进行维护,如修复bug和安全漏洞。
  1. Tags(标签)

tags 目录通常用于保存项目在特定时间点的快照,这个快照是项目的某个版本的只读副本。通常用于标记一个项目的发布版本或里程碑版本。tags 中的内容应该是不可变的,即一旦创建,代码不应再更改。

用途:

  • 版本快照:创建项目发布版本的快照,如 v1.0, v2.0 等。
  • 里程碑:记录项目达到某个里程碑时的代码状态。
  • 优势:通过 tags,团队可以随时访问或回滚到历史上的某个稳定版本。

日常开发项目目录:

/project_root/
    /trunk/                 # 主开发线
    /branches/
        /testing/           # 线上测试代码
        /production/        # 生产代码
    /tags/
        /v1.0.0/            # 生产版本的标签(快照)

这里推荐一个mac上的svn工具:SmartSvn 图形化命令界面。可以简化流程。 以及code diff工具:Kaleidoscope。集成了git,svn等主流版本管理工具

上次更新于: