【问题标题】:Deploying branches and maintaining configs in VS2010 / VSOnline在 VS2010 / VSOnline 中部署分支和维护配置
【发布时间】:2014-02-10 13:17:10
【问题描述】:

我正在尝试让我们的内部 c# click once 应用程序进入 VSOnline 进行源代码控制,以允许外部开发人员访问。

我想我已经在源代码管理编辑器中进行了设置和工作,但在日常实际使用设置方面遇到了麻烦。

我有一些 git 经验,但 TFS 经验为零,但我选择了 TFS 选项,因为我认为开发人员比 git 更熟悉它。

我想要实现的是 3 个分支; Main/Trunk、Dev 和 Release,并且至少能够部署 Release 和 Main。 Release 面向外部客户,Main 面向内部客户。

目前我的源代码管理资源管理器看起来像;

DefaultCollection
-->Name of project
---->(Branch icon) Dev (created as a Branch from Main)
---->(Branch icon) Main
---->(Branch icon) Release (created as a Branch from Main)

两件事;

  1. 在使用方面,我不确定如何在分支之间进行交换以进行编码/更改?我是否只是打开要处理的分支的解决方案文件,然后保存所有更改,然后将其作为变更集提交?还是手动签出文件,处理它,然后再次签入?

  2. 鉴于它是 ClickOnce 应用程序;每个分支都部署到不同的 IIS 站点,这意味着不同的应用程序标识、路径和设置。我在为此使用分支是正确的还是有更好的方法?我担心有人提交了错误的文件并导致强制卸载/重新安装应用程序。

非常感谢任何指针/docco;请注意我使用的是 VS2010。

谢谢, 利亚姆

【问题讨论】:

  • 如果您愿意,可以亲自给我这个task。如果你愿意,你可以给我发电子邮件。电子邮件写在我的个人资料中。

标签: c# visual-studio-2010 tfs clickonce azure-devops


【解决方案1】:

如何在分支之间交换

如果您习惯于 GIT,那么 TFVC 中的“重量级”分支可能会有点令人困惑。正如您所遇到的那样,没有真正的“在分支之间切换”。您将分支映射到本地文件夹,并通过打开那里的文件“在该分支上工作”。

正如 Lee 指出的那样,您可以为每个分支创建单独的工作区,这将隔离每个分支的工作区。如果您使用的是本地工作区,每个工作区都有自己的“/tf$”文件夹,相当于“/.git”文件夹的 TFVC。

MSDN 上有几个文档对此进行了更详细的解释:

如何办理入住

TFVC 中的变更集等同于 Git 中的提交,它是一组更改文件的逻辑集合,它们作为一个整体提交/推送,或者根本不提交。但就像在 Git 中一样,您可以一次将所有更改提交到本地工作区,或者您可以从第一次提交中排除某些更改并在第二次提交中保留这些更改。

在 TFVC 中,您通常会尝试提交一组逻辑文件来修复错误、实现某些目标等。虽然仍然可以单独签出/签入文件,但您的机会要高得多实际上导致主存储库中的源以这种方式处于不一致的状态。

关于你的第二个问题

根据您想要走多远,您可以设置 Team Build 以实际构建应用程序并在构建过程中从特定位置获取配置。这样,您就不必将生产环境的配置与开发设置一起存储。配置文件可能包含敏感信息,您可能不希望将它们放在源代码管理中,开发版本除外。

您还可以将配置文件存储在每个分支的特殊文件夹中,并确保每次合并它们时,它们都会相应更新。

正如李所说,您可以查看Config Transaformations。在构建过程中将一些 XSLT 应用于您的配置文件。这样,您可以在每个分支中存储多个配置文件,并且在 Visual Studio 中选择“配置”将定义最终配置的外观。

见:

【讨论】:

  • 太棒了 - 谢谢你的链接。重新拥有与分支机构不同的工作空间;然后我是否仍然将变更集跨工作区合并回主分支?
【解决方案2】:

在使用方面我不太确定如何在分支之间交换代码/进行更改?

我建议为每个分支创建单独的工作区。这样,当您尝试签入开发代码时,您就不会意外签入发布代码。此外,当您想要切换正在处理的代码分支时,您可以切换工作区。这应该让事情变得“更干净”并且更容易使用。

我是否只是打开我想要处理的分支的解决方案文件,然后保存所有更改,然后将其作为变更集提交?还是手动签出文件,处理它,然后再次签入?

您不必手动检查它。如果我没记错的话,当您开始进行更改时,它将默认自动签出。您可以根据需要检查任何大块的代码。但是请确保如果您要签入引用 ClassB.cs 中所需更改的 ClassA.cs 更改,您也要签入。您不想让其他开发人员的源代码处于损坏状态。

如果您开始从事某项工作并且不得不暂停该工作以执行其他一些重要的任务,shelve 您的工作,而不是让您的工作空间因完成一半的工作而变得杂乱无章,从而难以管理签到.

鉴于它是一款 ClickOnce 应用程序;每个分支都部署到不同的 IIS 站点,这意味着不同的应用程序标识、路径和设置。我在为此使用分支是正确的还是有更好的方法?

我会考虑为此使用web.config transformations。您仍然需要多个分支,但要将已测试/已完成/正在开发的代码彼此分开。

【讨论】:

  • 好的,将研究配置的转换。用于打开文件;这是非常基本的但是;我是打开 VS 然后打开工作区文件夹,然后选择 .sln 文件还是使用源代码浏览器浏览到我要进行更改的位置?
  • 我在 VS 中使用源代码管理浏览器。使用组合框选择您要使用的工作区,然后打开相应的 .sln 文件。合并分支时,使用源控制资源管理器中的组合框选择目标工作区/分支,右键单击源工作区/分支并选择合并。解决任何合并冲突后,使用待定更改窗口检查您的代码。
  • 我开始使用一个大工作区,但发现将它们分开会更容易保持井井有条。挂起的更改窗口不会被来自所有不同分支的文件弄得一团糟。
  • 谢谢李欧;非常感谢
猜你喜欢
  • 2022-08-24
  • 2010-12-24
  • 1970-01-01
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
  • 2018-03-05
  • 1970-01-01
相关资源
最近更新 更多