version-control - 推荐用于托管许多独立补丁的 DVCS 机制

标签 version-control mercurial dvcs sourceforge

我有一个项目刚刚开始,地址为 http://sourceforge.net/projects/iotabuildit/ (更多详细信息请参见 http://sourceforge.net/p/iotabuildit/wiki/Home/ )当前正在使用 Mercurial 进行版本控制。看起来 Mercurial 和 SourceForge 几乎拥有所有正确的功能或元素来整合我为这个项目设想的协作机制,但我认为我还没有完全做到这一点。我希望人们能够提交、讨论和投票来自大量个人(比项目通常拥有的开发人员更多)的个人更改。我希望用户能够尽可能轻松地参与其中。现在的想法是,人们可以克隆“free4all”分支,它是基本“代码”存储库的克隆,或者他们可以在自己的 SourceForge 用户项目中创建自己的分支(SourceForge 现在为每个用户提供一个工作区托管各种与项目相关的内容)。然后他们可以将其克隆到本地存储库(下载 TortoiseHg 或他们首选的 Mercurial 客户端后)。然后他们可以进行修改,提交它们,将它们推送到分支,并请求 merge 到基础“代码”存储库中,此时我们可以讨论/审查 merge 请求。这一切步骤仍然太多,而且比我想要的更正式。

我看到 Mercurial 中有“搁置”这样的东西,但我不知道 SourceForge 存储库如何/是否支持它。由于存在 merge 请求,因此可能没有办法讨论搁置的更改。

我正在寻找任何能让这件事变得更容易的建议。理想情况下,我希望用户能够:

  1. 指定他们想要玩的任何版本,并从托管的源代码管理中提取请求的版本,供用户在 SourceForge 上玩(因为出于安全原因,游戏无法在本地玩) Chrome 浏览器正确应用于访问独立文件中的图像内容的 javascript 代码的限制)
  2. 允许用户下载所请求的项目版本以进行本地编辑(从同一源构建的 C# 版本也可以在本地播放,或者 Internet Explorer 显然忽略安全限制,允许在浏览器中本地播放)
  3. 接受提交的修改,其形式可以与任何其他兼容的“分支”或已提交/发布的游戏版本 merge (理想情况下这会非常简单——也许只需要上传整组文件即可)到服务器并在那里执行比较和补丁/差异提取)
  4. 其他玩家可以查看已提交的可用补丁列表,并选择要玩/测试的任意补丁集,然后对更改进行讨论和投票。

显然,其中一些要求非常具体,如果我想达到理想的目标,我可能需要编写一些服务器端代码。但如果我需要的大部分功能已经基本存在,我想采取阻力最小的途径并使用可用的技术。或者我想看看是否可以比我之前概述的过程更接近,而无需编写任何服务器代码。那么哪些部分可以帮助我做到这一点呢? Mercurial 和 SourceForge 是否支持按照我想要的方式存储和共享搁置的代码?这个“补丁队列”(我看到了,但还无法理解或无法开始工作)有什么可能有帮助吗?有没有一种方法可以从给定的文件集中提取补丁文件(与存储库(服务器端)中的特定修订版进行比较),而无需用户下载任何 Mercurial 组件?

最佳答案

这听起来像是您可以使用 Mercurial 队列 (mq) 补丁队列来完成的操作。补丁队列可以是自己的、单独的版本存储库,人们可以使用“守卫”来仅应用他们想要尝试的补丁。

但实际上,使用 bitbucket 或 github 听起来更容易,它们都内置了出色的补丁提交、审核和验收工作流程。

关于version-control - 推荐用于托管许多独立补丁的 DVCS 机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10139746/

相关文章:

version-control - Mercurial:如何忽略对跟踪文件的更改

r - packrat 包的替代品 - 包的可重复性

Git 分支在 Pull 或 Fetch 后不显示在 "git branch"但 "git checkout"工作......?

svn - 非版本化 SVN 目录?

mercurial - TortoiseHG Sync - 如何保存 URL

maven-2 - Maven + Mercurial 用于构建编号

Git 将另一个存储库中的单个文件 merge 到我自己的

version-control - hg 本地忽略

version-control - 如何获得与给定版本最接近的版本,其中包含除 .hgtags 之外的其他更改?

git - 移动 .git 目录