保留我自己的版本应用程序

时间:2010-04-10 22:33:36

标签: mercurial project dvcs buildout

我在这里需要一些意见。

我正在使用buildout来处理Django项目以获取依赖项等... 我使用mercurial作为DVCS。

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

1-在(github,bitbucket等)项目的一个分支中维护我的版本,并获得与(mercurial或git)配方的依赖关系。
2-克隆项目,将其放入PYTHONPATH,擦除DVCS目录并将其添加到我的项目版本中。所以每一个变化都是私密的。在这里,我需要从他们的DVCS或其他东西中删除所有信息。

你能想到的任何其他。

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

谢谢!

3 个答案:

答案 0 :(得分:1)

如果您使用的是DVCS,那么您的所有提交都会保留为更改集,人们可以选择是否应用您的更改集。因此,只要您对此更改发表评论,人们就可以根据自己的意愿选择是否应用更改。更重要的是,如果他们不想要这种改变,但想要你的其他改变,他们可以挑选。所以事实是DVCS为你解决了这个问题(前提是你们正在使用DVCS正确使用DVCS)。

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

答案 1 :(得分:1)

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

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

如果上游项目除了您自己的私人更改之外还需要进行更改,除非您保留DVCS信息,否则您将有一段时间合并它们。

使用Mercurial,您可以使用Mercurial subrepo feature

在您的项目中添加项目

答案 2 :(得分:1)

Esteban,采取以下措施:我会用善变的方式说话,但这也是git能做到的。

  1. 克隆他们的项目
  2. 在项目中将您的项目克隆为subrepo
  3. 这给了你最好的世界。您可以编辑项目及其项目中的代码,而无需关注哪些代码,并且当您提交代码更改时,将进入您的仓库以及指向项目克隆中的新变更集的指针。然后,当您想要更新项目的克隆时,您可以就地完成并简单地合并。

    所以这就是你在'1'中所说的,但是没有必要做一个公共回购的分支或主机。只需将他们的克隆编辑为项目的子项目并且永不推送(由于您没有对其回购的写入权限,因此无论如何都无法工作)。

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