我正在自定义BlogEngine.Net以支持自定义本地功能(波斯语日历,RTL主题等)
BlogEngine.Net使用mercurial源代码控制,我可以创建项目的分支并将其更改提交给它。但我想将它作为一个单独的项目发布,因为代码中有重大修改以支持波斯语,我不打算向主项目发送拉取请求。 AFAIK我有两种选择:
现在使用叉子有什么好处?如果我创建一个fork,我是否能够像自己的项目(选项1)一样在自己的页面中释放我的项目?通过说“它自己的页面”我的意思是我希望有一个像“FarsiBlogengine.CodePlex.Com”这样的地址并制作二进制版本,可以下载源代码版本,有一个讨论论坛等。就像我有的功能一样当我不使用分叉时。
一般来说,使用分叉而不是下载主项目,创建新项目和承诺新项目的优点是什么?
感谢。
答案 0 :(得分:5)
分叉(又名:克隆)(又名:选项#2)的主要好处是您的存储库将包含父存储库的整个历史记录,如果需要,可以启用从该存储库推送或拉出的选项。使用选项#1,您将从父存储库的快照开始,并丢失项目历史记录/沿袭。
当确定两个存储库是否相关时,Mercurial将寻找一个共同的祖先 - 在选项#1的情况下,你将没有那个,并且在选项#2的情况下,你将。即使你明确声明你不想与父仓库执行任何同步(推/拉/等等),你可能会发现BlogEngine.net发布了一个关键的错误修复,你想要拉过来并执行拉动偶尔。选项#1将阻止您这样做,因为它不会找到共同的祖先,但选项#2将允许它。
在发布代码方面,我并不完全确定“你自己的页面”是什么意思,但我不认为你会发布任何一个选项的任何问题。在这两种情况下,您只拥有一个简单的存储库。在#2的情况下,你只有一个更大的存储库,提交更多,历史更多。