-1

好的,我一直在掌握解决我的问题的各种解决方案,例如为托管许多独立补丁的推荐 DVCS 机制在 BitBucket 上为许多用户和补丁使用 Mercurial 补丁队列存储库,但希望这将是我需要的最后一个问题询问如何为我在https://sourceforge.net/p/iotabuildit/wiki/Home/中描述的项目建立源代码控制。然后我可以接受其他问题的一些答案并继续前进。

我正在努力满足的要求是:

  1. 对用户来说,贡献源代码修改(补丁)必须非常容易。这意味着他们不必下载版本控制客户端。
  2. 任何版本的代码都需要轻松地在线托管,因为由于 W3C 安全要求(IE 显然忽略了这一点,但 Chrome 很荣幸),当从本地文件集运行时它在 Chrome 中不起作用。
  3. 用户应该能够自己注册并自动获得贡献任何其他人可以播放和查看的补丁的权限(如 Little Big Planet,但更集成 - 允许更改任何内容,而不仅仅是添加内容)。

到目前为止,我尝试过的路径都失败了,原因如下:

  1. Mercurial Patch Queue - 在探索了一会儿之后,我发现它对于普通玩家/用户来说太复杂了,无法参与其中。我们在这里谈论的是潜在的非开发人员。
  2. Github 和 BitBucket - 这些存储库似乎仍然需要本地 DVCS 客户端,并且需要额外的步骤来贡献补丁。最后,对于普通用户来说,它们仍然很难,尤其是那些只想玩某些用户的特定版本游戏的人。似乎没有办法在线托管文件。

所以现在我提出的解决方案如下,我想看看我是否遗漏了一些可以通过其他方式更好地处理的东西。我将在我的 SourceForge 项目上创建一些 PHP 脚本,这些脚本将:

  1. 允许用户使用密码注册自己的电子邮件/帐户,以便只有他们可以更新自己的“补丁”
  2. 允许他们克隆标准存储库或任何其他用户存储库。
  3. 在 PHP 脚本可访问但 HTTP 不可访问的目录中在线创建克隆。
  4. 允许他们将一组文件提交到他们的工作目录,并将差异作为补丁提交到他们的存储库。
  5. 允许从同一目录中的其他用户存储库中提取补丁。(拉取和提交到您自己的存储库不需要身份验证,当我考虑已经存在的更正式的在线存储库托管时,这是一个绊脚石)
  6. 拥有一个单独的 PHP 脚本,将您的工作空间复制到可以在线玩游戏的托管目录中。任何玩家都可以访问此工作区来玩您的游戏版本(其中可能包括从任意数量的其他存储库中提取的补丁)。

我不能使用现有的存储库来执行此操作似乎很奇怪,但我想不出解决身份验证问题的方法。所以我需要创建我自己的克隆,我知道 PHP 脚本应该能够在不推送的情况下访问和提交。不幸的是,其他 DVCS 客户端可能无法从这些在线客户端中提取,但如果需要,可能有一些方法可以导出补丁。而且我不知道当合并冲突发生时我要做什么。但这是迄今为止我最接近可行的解决方案。

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

4

1 回答 1

1

一些评论/答案:

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

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

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

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

于 2012-04-19T12:35:05.777 回答