【问题标题】:To keep my own versioned app or not是否保留我自己的版本化应用程序
【发布时间】:2010-04-11 08:51:09
【问题描述】:

我在这里需要一些意见。

我正在开发一个 Django 项目,使用 buildout 来获取依赖项等... 我使用 mercurial 作为 DVCS。

现在...我需要自定义其中一个依赖项,因此我可以执行以下操作之一: (* 这些更改可能对其他人没有用处。)

1- 在(github、bitbucket 等)中创建项目的分支,维护我的版本,并使用(mercurial 或 git)配方获取依赖关系。
2- 克隆项目,将其放在 PYTHONPATH 中,擦除 DVCS 目录并将其添加到我的项目版本中。因此,每次更改都将是私有的。在这里,我需要从他们的 DVCS 或其他东西中删除所有信息。

其他你能想到的。

我错过了什么?我太虚了?

谢谢!

【问题讨论】:

  • 我们中间似乎有一个病态的反对者。我认为有某种批处理作业可以解决这个问题?
  • 否,但有几种方法可以解决否决票。其中之一是提出更好的问题。
  • 啊,是的,但是在不发表评论的情况下投反对票是非常违背 SO 的精神的。 “如果您看到错误信息,请投反对票。插入 cmets 指示具体是什么错误。”
  • 在不评论您认为该问题有什么问题的情况下拒绝投票似乎是不真诚的(除非有人已经提出)。由于这是一个编程设计问题,我觉得它适合 SO。不同意反对票的另一种解决方案是反对票。业力平衡

标签: mercurial project dvcs buildout


【解决方案1】:

Esteban,采取这些步骤:我会用 mercurial-speak 说话,但这一切都可以在 git 中完成。

  1. 克隆他们的项目
  2. 在您的项目中将您的项目克隆为subrepo

这给了你世界上最好的东西。您可以在您的项目和他们的项目中编辑代码,而无需注意哪个是哪个,并且当您提交对代码的更改时,连同指向您的项目克隆中的新变更集的指针一起进入您的存储库。然后,当您想更新他们项目的克隆时,您可以就地执行此操作并简单地合并。

所以这几乎就是你在“1”中所说的,但没有必要公开进行分叉或主机回购。只需将他们的克隆编辑为您项目的子存储库,并且永远不要推送(这无论如何都行不通,因为您没有对其存储库的写入权限)。

您的选项二的主要缺点是,当他们修改和改进您所依赖的项目时,您将很难将他们的改进纳入并与您的合并。

【讨论】:

    【解决方案2】:

    如果您使用 DVCS,那么您的所有提交都将保存为变更集,人们可以选择是否应用您的变​​更集。因此,只要您评论该更改,人们就可以选择是否应用更改,因为他们认为合适。更重要的是,如果他们不想要那个改变,但想要你的其他改变,他们可以挑选。所以事实是 DVCS 会为您解决问题(前提是从您那里拉出的人正在正确使用 DVCS)。

    就个人而言,我建议分叉,但就像我说的那样,这并不重要。

    【讨论】:

      【解决方案3】:

      你以一种相当混乱的方式提出这个问题,我不知道你是否真的理解 DVCS 的意义。

      DVCS 的全部意义在于允许您拥有自己的私有存储库。除非您愿意,否则您不需要在 github 或 bitbucket 或任何这些地方发布您的存储库,但我当然不会删除 DVCS 信息。

      如果上游项目除了您自己的私有更改之外还进行了您确实想要的更改,那么除非您保留 DVCS 信息,否则您将很难合并它们。

      使用 Mercurial,您可以使用 Mercurial subrepo feature 在您的项目中包含一个项目。

      【讨论】:

      • 是的...我可能在这里遗漏了一些东西。如何将已包含 DVCS 信息的项目添加到我的存储库中?谢谢
      • @Esteban,我修改了我的答案以包含对此评论的答案。
      猜你喜欢
      • 2020-10-27
      • 2013-01-12
      • 2019-09-06
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 2023-02-16
      • 2020-01-20
      • 1970-01-01
      相关资源
      最近更新 更多