我正在定制BlogEngine.Net支持自定义本地功能(波斯语日历、RTL 主题等)
BlogEngine.Net 使用 Mercurial 源代码控制,我能够创建项目的分支并向其提交更改。但我想将其作为一个单独的项目发布,因为代码进行了重大修改以支持波斯语,并且我不打算向主项目发送拉取请求。 AFAIK我有两个选择:
- 我可以下载 BlogEngine.Net 的源代码,创建一个新项目,提交原始源文件,然后将我的更改提交到存储库。
- 我可以 fork 主项目并拥有一个克隆存储库。然后我可以提交该存储库。
现在使用 fork 有什么好处?如果我创建一个 fork ,我是否能够像独立项目一样在自己的页面中发布我的项目(选项1)?通过说“它自己的页面”,我的意思是我想要一个像“FarsiBlogengine.CodePlex.Com”这样的地址,并提供二进制版本、源代码版本可供下载,有一个讨论论坛等。就像我拥有的功能一样当我不使用 fork 时。
一般来说,使用 fork 而不是下载主项目、创建新项目并提交到新项目有什么优点?
谢谢。
最佳答案
fork (又名:克隆)(又名:选项#2)的主要好处是,您的存储库将包含父存储库的整个历史记录,从而可以在需要时选择从该存储库推送或拉取。使用选项 #1,您将从父存储库的快照开始并丢失项目历史记录/沿袭。
在确定两个存储库是否相关时,Mercurial 将查找共同的祖先 - 在选项 #1 的情况下,您将不会有该祖先,而在选项 #2 的情况下,您会。即使您明确声明您不想与父存储库执行任何同步(推/拉/等),您可能会发现 BlogEngine.net 发布了一个您想要拉过来并执行拉的关键错误修复偶尔。选项 #1 将阻止您执行此操作,因为它找不到共同祖先,但选项 #2 将允许这样做。
就发布代码而言,我不太确定“它自己的页面”是什么意思,但我认为使用这两种选项发布都不会有任何问题。在这两种情况下,您所拥有的只是一个简单的存储库。在情况 #2 中,您只是拥有一个更大的存储库,其中包含更多提交和更多历史记录。
关于version-control - Mercurial 源代码控制 - Forking 的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5963712/