【问题标题】:How to keep different versions of my WSDLs in different git branches of my workflow如何将不同版本的 WSDL 保存在工作流的不同 git 分支中
【发布时间】:2014-01-15 09:38:25
【问题描述】:

我有一个项目(网络),它与服务层进行大量交互。客户端有不同的暂存服务器用于项目的部署和服务层,像这样:

  • A0..A9 的服务器用于开发,
  • 用于数据迁移测试的 B0..B9 服务器,
  • 来自 C0..C9 的服务器用于集成测试,
  • 用于 QA 的 D0..D9 的服务器,
  • 用于生产的 E0..E9 的服务器

我在网站上使用的用于与服务层交互的 WSDL,从一组服务器更改为另一组。

如何使用具有三个分支(master、dev、qa)的 git 工作流将不同版本的 WSDL 保存在不同的分支中?

【问题讨论】:

  • 在分支中保持任何东西的方式相同。自然?我不明白你的问题,分支中有不同的东西是很自然的。
  • 嗨@janos:问题是我想跟踪这些 WSDL 上的更改,并且在某些时候这些分支将合并(dev->qa,qa->master)。在合并期间,我不希望这些 WSDL 发生冲突,而是希望它们在其分支中保持“生存”并在其分支中跟踪它们的更改。这更清楚了吗? 对不起,我的英语草率
  • 是的,更清楚,我想,看看我的回答 ;-)

标签: asp.net git wsdl soa


【解决方案1】:

正如您在评论中解释的那样,分支将被合并,并且 WSDL 文件将发生冲突。发生这种情况时,您必须通过保留 WSDL 文件的正确版本来解决冲突。

例如,如果您在 qa,从 dev 合并,并且 WSDL 文件存在冲突,您可以通过以下方式解决:

git checkout HEAD file.wsdl

这会将 WSDL 文件恢复为合并前的状态,您可以提交合并。

但是,如果 WSDL 文件有更改但没有冲突,那么git merge 会自动合并它们。如果这不是您想要的,并且您真的想保留文件而不合并,那么您可以像这样合并:

git merge dev --no-commit --no-ff
git checkout HEAD file.wsdl
git commit

更新

为了使这更容易,请参阅其他问题的第一个答案: Git: ignore some files during a merge (keep some files restricted to one branch)

它提供了 3 种不同的解决方案,请务必考虑所有这些。

【讨论】:

    【解决方案2】:

    我认为使用分支是错误的工具。分支对于(或多或少)需要并行和隔离进行的独立开发非常有用。您的多个部署环境的用例似乎不适合该模型。如果您需要多个分支,例如,它也不能很好地扩展。发布并且始终必须创建和维护特定于部署的子分支。

    定义多个配置的单个分支可能会更好地为您服务(用于部署或构建,取决于使用 WSDL 文件的内容)。

    这假设 WSDL 文件是分支之间唯一的不同,这是我从问题中得到的印象。

    【讨论】:

    • 我正在开发一个连续集成模型,所以没有发布分支。来自master 的结帐将为您提供一个可以投入生产的稳定版本的项目,尽管在开发中进行了一些迭代。从qa 结帐将为您提供具有最新功能的项目的稳定版本;最后,从dev 分支结帐将为您提供团队当前工作的新副本。尽管部署布局比这更复杂,但这代表了我希望在每个分支上跟踪的三个版本的 WSDL,而不会在它们之间发生冲突。
    • 好的,所以无论如何你都需要分支。这并不意味着分支单个文件而不是维护多个文件不是一个坏主意,但这取决于文件的内容,它与部署环境的关联程度以及内容应遵循的程度合并时的其余代码。
    猜你喜欢
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 2011-01-05
    相关资源
    最近更新 更多