4

我在这里需要一些意见。

我正在使用构建来获取依赖项等的 Django 项目......我使用 mercurial 作为 DVCS。

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

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

其他你能想到的。

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

谢谢!

4

3 回答 3

1

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

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

于 2010-04-10T22:39:46.810 回答
1

Esteban,采取这些步骤:我会用 mercurial-speak 说话,但这在 git 中也能做到。

  1. 克隆他们的项目
  2. 使您的项目克隆成为项目中的子存储库

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

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

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

于 2010-04-11T00:20:37.863 回答
1

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

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

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

使用 Mercurial,您可以使用Mercurial 子存​​储库功能将项目包含在您的项目中。

于 2010-04-10T22:59:56.220 回答