代码之家  ›  专栏  ›  技术社区  ›  Phil

如何在Subversion中处理.NET应用程序的新版本?

  •  1
  • Phil  · 技术社区  · 16 年前

    我对源代码管理是个新手,我想知道如何处理以下场景:

    假设我有一个为一个平台编写的应用程序,比如 Windows Forms 在.NET中,我使用 Subversion (或任何 SCM 我想是软件)。

    现在我想更新要使用的应用程序 WPF 可能还会增加一些其他的增强功能。对于这个WPF版本2.0,我会在树的一个分支中继续开发吗?

    可能会有一些文件保持不变,其中包含业务逻辑、数据访问等,但实际上,我希望启动一个全新的解决方案,并可能在1.0版中到处借用一些东西。

    最佳实践是什么?使用自己的树/分支/标记文件夹创建新的应用程序文件夹,还是尝试将新版本作为原始1.0应用程序文件夹的一部分保留?

    你觉得怎么样?

    或者在不那么激烈的情况下,比如从 Silverlight 2到Silverlight 3?那么呢?

    我很感谢那些曾经经历过这一切的人的任何指导。

    4 回复  |  直到 16 年前
        1
  •  2
  •   Timo Geusch    16 年前

    关于版本控制,通常有几个学派,但我经常遇到的对我来说有意义的学派是:

    • 你做的所有开发工作都是在主分支上推动项目向前发展,也就是说,在CVS中是头,在Subversion中是“主干”。这一个接收所有像您描述的那样的更改,包括更改GUI库、更新第三方工具等等。该分支的提示应该始终反映软件的最新版本,并且希望是最棒的版本,但是它永远不会将一天的曙光视为一个发布。
    • 对于每个发布,您都创建一个发布分支。与发布相关的所有工作以及 只有 在这个特定的分支上发布。这些应该主要是错误修复。您在这个分支上所做的更改可能会被合并回主分支,但如果从主分支到发布分支有任何更改的话,我不会期望有很多更改。主分支是一个移动的目标,而发布的分支不是。
        2
  •  3
  •   bryanbcook    16 年前

    我的项目结构如下:

    /branches (different working sets)
    /tags     (revisions, etc)
    /trunk    (current production state)
      /lib      (3rd party libraries and dependencies)
      /tools    (build tools)
      /src
        /component-a
        /component-b
        /component-c
    

    因为Subversion只跟踪每次提交的delta,所以在主干下分支所有内容不会受到服务器端的惩罚。唯一要考虑的是本地计算机上要使用多少磁盘空间。

    当你推出代码时,在标签下面“标记”它。当需要分离实验代码时,创建一个分支。

    编辑: 在不同操作系统或运行时环境之间共享库所带来的挑战方面,这实际上取决于项目和组件的大小。在某些情况下,将“核心”逻辑拆分为自己的项目,并将“版本化”编译的库导出给(可能的)许多用户,这是有意义的。这种方法只有在核心逻辑是稳定的并且不经常版本化的情况下才能很好地工作。

        3
  •  2
  •   Community Mohan Dere    9 年前

    从您的评论 @Timo Geusch 您的问题似乎与处理已发布软件的版本无关,后者更多的是选择一个任意数字。重新排列代码与版本控制无关,更多的是关于如何设置.NET解决方案(即代码体系结构)。让我们以下面的例子为例,它的名字很糟糕:

    MySolution
        /MyWinFormsProject
    

    在这个例子中,我们有一个叫做 MySolution . 它是一个项目,这是一个WinForms MyWinFormsProject . 当我们想从一个WinForms项目切换到一个WPF项目时,会有问题,因为您在WinForms应用程序中的大部分代码都需要重写。如果你有超过10000行的代码,这将是一项艰巨的任务。

    如果您正处于这种情况,那么您真的应该开始重构,将通用代码拆分出来,并将其放到另一个项目中(最好是 Class Library 一)我们可以称之为 MyCommonCode . 记住你需要参考 MyCo码 在里面 mywinforms项目 .

    MySolution
        /MyWinFormsProject
        /MyCommonCode
    

    完成后提交,修订号将增加。如果以后你搞砸了,你可以回到这个话题上来。接下来创建新项目,一个WPF项目名为 MyWPFProject . 你只需要设置 MYWPFP项目 作为启动项目,如果你想从那个项目开始。

    MySolution
        /MyWinFormsProject
        /MyCommonCode
        /MyWPFProject
    

    完成后,再次承诺。在完成wpf one之前,不需要删除winforms项目。

    注意:如何准确划分和命名 projects and namespaces 由你决定,尽管看看 open souce projects 会给你灵感。

        4
  •  0
  •   OMG Ponies    16 年前

    tag 当前在存储库头部的“版本1.0”等内容。