【问题标题】:Recommended DVCS mechanism for hosting many independent patches推荐用于托管许多独立补丁的 DVCS 机制
【发布时间】:2012-04-25 18:05:12
【问题描述】:

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

我看到 Mercurial 中存在“搁置”之类的东西,但我看不出 SourceForge 存储库如何/是否支持它。由于有合并请求,因此可能无法讨论搁置的更改。

我正在寻找任何可以简化此操作的建议。理想情况下,我希望用户能够:

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

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

【问题讨论】:

标签: version-control mercurial dvcs sourceforge


【解决方案1】:

听起来您可以使用 mercurial queue (mq) 补丁队列来做一些事情。补丁队列可以是自己的、独立的版本库,人们可以使用“守卫”来仅应用他们想尝试的补丁。

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

【讨论】:

  • 看起来 bitbucket 最多只有 5 个用户免费,我的项目希望允许数百个用户提交补丁。是否有任何特殊机制可以让人们在不被视为“用户”的情况下在 bitbucket 上提交补丁?
  • 如果您正在从事开源项目,它是免费的。
  • @SteveKaye 是否有任何地方可以看到这样的声明?在注册或主页上不明显。
  • 好吧,这有点迟钝,但定价页面上说它对最多五个用户免费,并将用户定义为有权访问您的私人存储库之一的人。这意味着公共存储库不会影响定价。您可以发送电子邮件至 sales@bitbucket.org 进行澄清。
  • 我很难弄清楚如何将 mq 与 bitbucket 一起使用,而 Google 没有帮助(我看到 4 年前的文档没有帮助)。我应该问一个单独的问题还是你能在这里解释一下?使用 TortoiseHg 2.1.1 我能够获得一个未提交的补丁进入补丁队列,在我链接的 mq 存储库的 bitbucket 的补丁队列中可见。我必须明确地将 .diff 文件和系列文件添加到变更集中,并检查 --mq 开关选项。我现在可以在新的克隆中看到未提交的补丁。但是如果我删除它,我无法在不重新克隆的情况下恢复它。我是不是搞砸了?
猜你喜欢
  • 2010-10-10
  • 2011-05-05
  • 2017-04-06
  • 2011-12-23
  • 2015-04-24
  • 2013-02-22
  • 2013-04-28
  • 2014-07-19
  • 2018-04-21
相关资源
最近更新 更多