version-control - Mercurial 源代码控制 - Forking 的优缺点

标签 version-control mercurial codeplex fork

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

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

  1. 我可以下载 BlogEngine.Net 的源代码,创建一个新项目,提交原始源文件,然后将我的更改提交到存储库。
  2. 我可以 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/

相关文章:

visual-studio-2010 - 如何在代理后面克隆 Codeplex Mercurial 存储库?

svn - Subversion-分支的分支

version-control - 将文件复制到新分支并在 P4V 中保留更改列表历史记录

bash - Mercurial:检查最后一次拉取/更新是否引入了更改

svn - 在没有管理员权限的情况下如何备份远程 SVN 存储库?

svn - 使用 Tortoise SVN,如何下载 CodePlex 应用程序的最新版本源代码?

Git:压缩不是最近提交的连续提交,并且不从根开始

Git:压缩分支之间共享的 Material

version-control - 如何克隆到修订版本而不丢失修订版本号?

Mercurial:在 "hg pull -u"之前强制执行 "hg commit"