2

我正在自定义BlogEngine.Net以支持自定义本地功能(波斯日历、RTL 主题等)

BlogEngine.Net 使用 mercurial 源代码控制,我能够创建项目的分支并将我的更改提交给它。但我想将它作为一个单独的项目发布,因为代码中有重大修改以支持波斯语,我不打算向主项目发送拉取请求。AFAIK 我有两个选择:

  1. 我可以下载 BlogEngine.Net 的源代码,创建一个新项目,提交原始源文件,然后将我的更改提交到存储库。
  2. 我可以分叉主项目并拥有一个克隆存储库。然后我可以在该存储库上提交。

现在使用叉子有什么好处?如果我创建一个 fork,我能否像独立项目一样在自己的页面中发布我的项目(选项 1)?通过说“它自己的页面”,我的意思是我想要一个像“FarsiBlogengine.CodePlex.Com”这样的地址,并提供二进制版本、可供下载的源代码版本、有一个讨论论坛等。就像我拥有的​​功能一样当我不使用分叉时。

一般来说,使用fork而不是下载主项目,创建一个新项目并提交到新项目有什么好处?
谢谢。

4

1 回答 1

5

分叉(又名:克隆)(又名:选项#2)的主要好处是您的存储库将包含父存储库的整个历史记录,如果需要,可以选择从该存储库推送或拉取。使用选项 #1,您将从父存储库的快照开始并丢失项目历史/沿袭。

在确定两个存储库是否相关时,Mercurial 将寻找一个共同的祖先——在选项 #1 的情况下,您将没有,而在选项 #2 的情况下,您将。即使您明确声明您不想与父 repo 执行任何同步(推送/拉取/等),您可能会发现 BlogEngine.net 发布了一个您想要拉过来并执行拉取的关键错误修复偶尔。选项 #1 将阻止您这样做,因为它不会找到共同的祖先,但选项 #2 将允许它。

在发布您的代码方面,我不确定您所说的“它自己的页面”是什么意思,但我认为您在发布任何一个选项时都不会遇到任何问题。在这两种情况下,您所拥有的只是一个简单的存储库。在 #2 中,您只有一个更大的存储库,其中包含更多的提交和更多的历史记录。

于 2011-05-11T12:10:08.783 回答