在线DVCS客户端

时间:2012-04-19 11:20:05

标签: php mercurial github bitbucket sourceforge

好的,我一直在用Recommended DVCS mechanism for hosting many independent patchesUsing Mercurial patch queue repository on BitBucket for many users and patches这样的问题抓住我的问题的各种解决方案,但希望这将是我需要询问的关于如何建立源代码控制的最后一个问题我在https://sourceforge.net/p/iotabuildit/wiki/Home/描述的项目。然后,我可以接受其他问题的答案并继续。

我正在努力实现的要求是:

  1. 对用户来说,必须非常容易地做出贡献源修改(补丁)。这意味着他们不必下载版本控制客户端。
  2. 任何版本的代码都需要在线轻松托管,因为由于W3C安全要求(从IE显然忽略,但Chrome尊重),从本地文件集运行时,它无法在Chrome中运行。
  3. 用户应该能够自行注册并自动获得许可,可以提供其他人可以播放和审核的补丁(例如Little Big Planet,但更集成 - 允许更改任何内容而不仅仅是添加内容)。
  4. 到目前为止,我尝试过的路径因以下原因而失败:

    1. Mercurial Patch Queue - 经过一段时间的探索后,我发现它对于普通玩家/用户来说太复杂了。我们在这里谈论潜在的非开发者。
    2. Github& BitBucket - 这些存储库似乎仍然需要本地DVCS客户端,并且需要额外的步骤来提供补丁。最后,对于普通用户来说,他们仍然很难,特别是那些只想玩一些用户特定游戏版本的用户。似乎没有办法在线托管文件。
    3. 所以现在我提出的解决方案如下,我想看看我是否遗漏了一些可以通过其他方式更好地处理的问题。我将在我的SourceForge项目上创建一些PHP脚本:

      1. 允许用户使用密码注册自己的电子邮件/帐户,以便只有他们可以更新自己的“补丁”
      2. 允许他们克隆标准存储库或任何其他用户存储库。
      3. 在PHP脚本可访问的目录中创建克隆 online ,但不在HTTP中创建。
      4. 允许他们将一组文件提交到他们的工作目录,并将差异作为补丁提交给他们的存储库。
      5. 允许从同一目录中的其他用户的存储库中提取补丁。 (拉和提交到您自己的存储库不需要身份验证,当我考虑更加正式的在线存储库托管时,这是一个绊脚石)
      6. 有一个单独的PHP脚本,可以将您的工作区复制到可以在线播放游戏的托管目录中。任何玩家都可以访问此工作区来播放您的游戏版本(其中可能包含从任意数量的其他存储库中提取的补丁)。
      7. 我不能使用现有的存储库来执行此操作似乎很奇怪,但我无法想到解决身份验证问题的方法。所以我需要创建自己的克隆,我知道PHP脚本应该能够在不推送的情况下访问和提交。遗憾的是,其他DVCS客户端可能无法从这些在线客户端中获取,但如果需要,可能还有一些方法可以导出补丁。当合并冲突出现时,我不知道我将要做什么。但到目前为止,这是我最接近可行的解决方案。

        所以我最终得到的是一个在线DVCS客户端,以避免用户必须下载DVCS客户端,并避免为他们的游戏版本找到主机。我忽略了一个更简单的解决方案吗? (我是否违反了SourceForge的服务条款?如果(我可以)安装了Mercurial,我也可以在Dreamhost上托管它。)

1 个答案:

答案 0 :(得分:1)

很少有评论/答案:

使用DVCS(“D”作为分布式),没有“服务器”或“客户端” 如果要在本地(在工作站上)访问代码,则需要DVCS(git或Mercurial),并且您将克隆upstream repo(即存储在GitHub或BitBucket中的远程仓库)。 / p>

根据我的理解,每个用户都会分叉主仓库,为每个用户创建一个仓库,仍然存储在上游服务器(GitHub或BitBucket)上,因为它是叉子背后的想法(远程端克隆)。

这将解决1.因为每个用户都是他/她自己的分支的所有者,并且只有那里的写访问权 2.是给定的(你可以分叉回购)

GitHub或BitBucket不会解决其余的问题,而是安装了DVCS的专用服务器,以及添加相关钩子以便自动化所需的内容。
该专用服务器可以监视在GitHub或BitBucket上推送的内容,对于给定用户的给定repo,执行所需的克隆或更新,并将repo同步到正确的目录(例如,在您的情况下可以访问PHP脚本)