Version control Mercurial源代码管理-分叉的利弊
我正在定制以支持自定义本地功能(波斯语日历、RTL主题等) BlogEngine.Net使用mercurial源代码管理,我能够创建一个项目分支,并将我的更改提交给它。但是我想把它作为一个单独的项目发布,因为代码中有一些主要的修改来支持波斯语,我不打算向主项目发送pull请求。好吧,我有两个选择:Version control Mercurial源代码管理-分叉的利弊,version-control,mercurial,codeplex,fork,Version Control,Mercurial,Codeplex,Fork,我正在定制以支持自定义本地功能(波斯语日历、RTL主题等) BlogEngine.Net使用mercurial源代码管理,我能够创建一个项目分支,并将我的更改提交给它。但是我想把它作为一个单独的项目发布,因为代码中有一些主要的修改来支持波斯语,我不打算向主项目发送pull请求。好吧,我有两个选择: 我可以下载BlogEngine.Net的源代码,创建新项目,提交原始源文件,然后将更改提交到存储库 我可以分叉主项目并拥有一个克隆存储库。然后我可以在该存储库上提交 现在使用叉子的好处是什么?如果我创
谢谢。分叉(aka:cloning)(aka:option#2)的主要好处是,您的存储库将包含父存储库的整个历史记录,允许在需要时从该存储库中推送或拉取。使用选项#1,您将从父存储库的快照开始,并丢失项目历史记录/沿袭 在确定两个存储库是否相关时,Mercurial将寻找一个共同的祖先-在选项1的情况下,您将不会拥有,在选项2的情况下,您将拥有。即使您明确表示不希望与父repo执行任何同步(推/拉/等)您可能会发现BlogEngine.net发布了一个关键的bug修复程序,您希望将其搁置,偶尔执行一次搁置。选项#1将阻止您这样做,因为它不会找到共同的祖先,但选项#2将允许这样做
在发布代码方面,我不太清楚“它自己的页面”是什么意思,但我认为发布这两个选项都不会有任何问题。在这两种情况下,您只有一个简单的存储库。在案例2中,您只有一个更大的存储库,有更多的提交和更多的历史记录。谢谢您的回答。通过“它自己的页面”“我的意思是,我希望有一个类似“FarsiBlogengine.CodePlex.Com”的地址,并提供二进制版本、可下载的源代码版本、讨论论坛等。就像我不使用forking时的功能一样。有可能吗?@Kamyar:好的,我明白。我不熟悉BlogEngine.net网站/软件,所以我无法为您回答这个问题。从反复无常的角度来看,选项1和选项2之间没有重大区别,所以如果你有问题,那将是BlogEngine.net的问题。祝你好运谢谢dls。然而,我的担心与blogengine.net无关。更好的说法是:我可以在codeplex中创建一个新项目,并将其存储库设置为分叉存储库吗?@Kamyar:我不熟悉codeplex,但我相信Google代码中存在类似的功能,而克隆(分叉)Google代码中的存储库确实会生成一个新的存储库。没有什么能阻止你像对待主回购一样对待分岔回购。试一试-应该很容易测试。谢谢dls。我会把结果贴在这里。