---
title: "【SCM】软件版本管理实践"
author: "Perrin Yong"
author_profile: https://www.pystone.net/profile/
published_by: "Perrin Yong"
canonical: https://www.pystone.net/notes/software-version-control-practice/
type: note
content_role: unspecified
visibility: public
id_stability: rename-stable
source_path: "10-计算机、信息技术与工程/03-软件工程与质量保障/CI-CD与质量保障/CI-CD工具链/【SCM】软件版本管理实践.md"
content_hash: e765bd852881ca7af8454bcb9f8791c5d5c78b22466b642f1dc91c9fb6ea2f43
knowledge_version: 224c990773de.5fa8af6e39fa
site_commit: 224c990773de166d23a886306577dd90379529ce
notes_commit: 5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a
---
# 【SCM】软件版本管理实践

﻿# 【SCM】软件版本管理实践

> 创建时间：2021/10/19 18:39

* SVN
    * 方案1
  * Git与SVN配合使用

## SVN

### 方案1

在trunk分支做开发（本地的working copy命名为dev），创建test、trial和release分支，分别做测试、试用服发布和正式服发布。另外创建uwatest分支，来集成uwa性能监控与优化服务。

定期Merge dev分支到其他分支。在每个分支都按照不同的频率进行构建。

dev - 每天1~3次出包，开发的结果直接可以验收，不需人力考虑出包过程。
test - 每次发版本，将dev发布到test分支一次，并出包。
release - 按照项目计划的正式版发布时间进行。
uwatest - 按照uwa建议的频率出包进行性能监控。

## Git与SVN配合使用

Git管理代码，SVN管理项目资源。
持续集成中，拉取最新资源、代码，构建项目的流程如下：

  * git拉去最新codes
用Pipeline中的“git”步骤

  * svn获取最新资源

```cpp
string s = String.Empty;

```
  * 把资源copy到目录 proj 中
  * 把代码copy到目录 proj 中
bat

```cpp
string s = String.Empty;

```

> /e 参数表示，复制 E:\Blog\blog5\source_posts 下面的目录和子目录，包括空目录
>  /y 参数表示，如果目标目录下有同名文件了，不询问，就直接覆盖。
>  shell

```cpp
string s = String.Empty;

```

  * 编译出包
