{
  "schemaVersion": "0.11.0",
  "canonical": "https://www.pystone.net/notes/software-version-control-practice/",
  "atlas": "https://www.pystone.net/?node=software-version-control-practice#knowledge-atlas",
  "markdown": "https://www.pystone.net/notes/software-version-control-practice.md",
  "context": "https://www.pystone.net/notes/software-version-control-practice.context.json",
  "knowledgeVersion": "224c990773de.5fa8af6e39fa",
  "build": {
    "siteCommit": "224c990773de166d23a886306577dd90379529ce",
    "notesCommit": "5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a",
    "builtAt": "1970-01-01T00:00:00.000Z",
    "version": "224c990773de.5fa8af6e39fa"
  },
  "id": "note:software-version-control-practice",
  "slug": "software-version-control-practice",
  "title": "【SCM】软件版本管理实践",
  "type": "note",
  "visibility": "public",
  "idStability": "rename-stable",
  "author": {
    "name": "Perrin Yong",
    "profile": "https://www.pystone.net/profile/"
  },
  "publisher": {
    "name": "Perrin Yong",
    "profile": "https://www.pystone.net/profile/"
  },
  "aliases": [],
  "summary": "【SCM】软件版本管理实践",
  "contentRole": "unspecified",
  "isMoc": false,
  "mocRecognition": "none",
  "generated": false,
  "attribution": "unspecified",
  "domain": "10-计算机、信息技术与工程",
  "tags": [],
  "mocs": [],
  "contentHash": "e765bd852881ca7af8454bcb9f8791c5d5c78b22466b642f1dc91c9fb6ea2f43",
  "assets": [],
  "headings": [
    {
      "depth": 1,
      "text": "【SCM】软件版本管理实践",
      "anchor": "scm软件版本管理实践",
      "citation": "https://www.pystone.net/notes/software-version-control-practice/#scm%E8%BD%AF%E4%BB%B6%E7%89%88%E6%9C%AC%E7%AE%A1%E7%90%86%E5%AE%9E%E8%B7%B5"
    },
    {
      "depth": 2,
      "text": "SVN",
      "anchor": "svn",
      "citation": "https://www.pystone.net/notes/software-version-control-practice/#svn"
    },
    {
      "depth": 3,
      "text": "方案1",
      "anchor": "方案1",
      "citation": "https://www.pystone.net/notes/software-version-control-practice/#%E6%96%B9%E6%A1%881"
    },
    {
      "depth": 2,
      "text": "Git与SVN配合使用",
      "anchor": "git与svn配合使用",
      "citation": "https://www.pystone.net/notes/software-version-control-practice/#git%E4%B8%8Esvn%E9%85%8D%E5%90%88%E4%BD%BF%E7%94%A8"
    }
  ],
  "claims": [],
  "outgoing": [],
  "incoming": [
    {
      "id": "note:software-engineering-and-quality",
      "title": "软件工程与质量保障",
      "url": "https://www.pystone.net/notes/software-engineering-and-quality/",
      "atlas": "https://www.pystone.net/?node=software-engineering-and-quality#knowledge-atlas",
      "label": "软件工程与质量保障",
      "origin": "explicit",
      "humanReviewed": true,
      "context": "CI-CD与质量保障/CI-CD工具链中的“【SCM】软件版本管理实践”导航项",
      "citation": "https://www.pystone.net/notes/software-engineering-and-quality/#ci-cd%E4%B8%8E%E8%B4%A8%E9%87%8F%E4%BF%9D%E9%9A%9Cci-cd%E5%B7%A5%E5%85%B7%E9%93%BE"
    },
    {
      "id": "note:software-delivery-automation-quality",
      "title": "软件交付、自动化与工程质量",
      "url": "https://www.pystone.net/notes/software-delivery-automation-quality/",
      "atlas": "https://www.pystone.net/?node=software-delivery-automation-quality#knowledge-atlas",
      "label": "软件交付、自动化与工程质量",
      "origin": "explicit",
      "humanReviewed": true,
      "context": "软件版本管理实践提供变更可追踪性，是自动化交付的前提。",
      "citation": "https://www.pystone.net/notes/software-delivery-automation-quality/#%E8%B4%A8%E9%87%8F%E7%9B%AE%E6%A0%87%E4%B8%8E%E8%BF%87%E7%A8%8B"
    },
    {
      "id": "note:software-quality-as-feedback-system",
      "title": "软件质量为什么是反馈系统而不是测试阶段",
      "url": "https://www.pystone.net/notes/software-quality-as-feedback-system/",
      "atlas": "https://www.pystone.net/?node=software-quality-as-feedback-system#knowledge-atlas",
      "label": "软件质量为什么是反馈系统而不是测试阶段",
      "origin": "explicit",
      "humanReviewed": true,
      "context": "软件版本管理实践保存了分支、构建和发布环境的具体做法。其历史分支方案不应直接提升为通用最佳实践，但它说明一个更稳定的原则：变更必须能够回答“改了什么、由哪个版本进入、在哪里验证、出现问题怎样回退”。",
      "citation": "https://www.pystone.net/notes/software-quality-as-feedback-system/#2-%E7%89%88%E6%9C%AC%E7%AE%A1%E7%90%86%E6%8F%90%E4%BE%9B%E5%9B%A0%E6%9E%9C%E4%B8%8E%E5%9B%9E%E9%80%80%E5%9F%BA%E7%A1%80"
    }
  ],
  "contentMarkdown": "# 【SCM】软件版本管理实践\n\n﻿# 【SCM】软件版本管理实践\n\n> 创建时间：2021/10/19 18:39\n\n* SVN\n    * 方案1\n  * Git与SVN配合使用\n\n## SVN\n\n### 方案1\n\n在trunk分支做开发（本地的working copy命名为dev），创建test、trial和release分支，分别做测试、试用服发布和正式服发布。另外创建uwatest分支，来集成uwa性能监控与优化服务。\n\n定期Merge dev分支到其他分支。在每个分支都按照不同的频率进行构建。\n\ndev - 每天1~3次出包，开发的结果直接可以验收，不需人力考虑出包过程。\ntest - 每次发版本，将dev发布到test分支一次，并出包。\nrelease - 按照项目计划的正式版发布时间进行。\nuwatest - 按照uwa建议的频率出包进行性能监控。\n\n## Git与SVN配合使用\n\nGit管理代码，SVN管理项目资源。\n持续集成中，拉取最新资源、代码，构建项目的流程如下：\n\n  * git拉去最新codes\n用Pipeline中的“git”步骤\n\n  * svn获取最新资源\n\n```cpp\nstring s = String.Empty;\n\n```\n  * 把资源copy到目录 proj 中\n  * 把代码copy到目录 proj 中\nbat\n\n```cpp\nstring s = String.Empty;\n\n```\n\n> /e 参数表示，复制 E:\\Blog\\blog5\\source_posts 下面的目录和子目录，包括空目录\n>  /y 参数表示，如果目标目录下有同名文件了，不询问，就直接覆盖。\n>  shell\n\n```cpp\nstring s = String.Empty;\n\n```\n\n  * 编译出包\n"
}
