windows - 带有 Windows 中央存储库的 DVCS

标签 windows git version-control mercurial

我们目前使用 VSS 进行版本控制。我们的开发人员中很少有人对分布式模型感兴趣(并且想摆脱 VSS)。我们的网络充满了 Windows 机器,虽然我们的 IT 部门有维护 Linux 机器的经验,但他们不愿意这样做。

哪些 DVCS 系统可以在 Windows 上托管其中央存储库,同时提供..

  1. 推送对存储库的访问。
  2. 基本身份验证。通常只是一种允许或拒绝访问整个存储库的方法。无需细粒度访问。
  3. 服务器进程,因此用户不需要对存储库的写入权限,从而降低了意外弄乱它的风险。

在客户端,或多或少需要一个 GUI,例如 Tortoise(抱歉,Windows shell 很糟糕。:|)。易于安装将是一个巨大的优势,因为我们的 IT 部门的资源已经很低了。只要客户端能够存储凭据,使用 Windows 凭据进行身份验证将是一个优势,但不是必需的。

我(真的)快速浏览了 Git、Mercurial 和 Bazaar。

  • Git 似乎使用 ssh 或简单的 WebDAV 访问存储库,需要用户的写入权限。
  • Mercurial 有一个内置的 http 服务器,但这似乎只用于 pull 目的。 更新:Mercurial 也支持推送。
  • Bazaar 似乎使用 sftp 访问存储库,同样需要用户的写入权限。

是否有适用于任何 DVCS 系统的 Windows 服务器进程,有没有人设法在 Windows 领域设置一个进程?

如果这是一个重复的问题,我们深表歉意。我找不到。

更新

让 Mercurial 用于推送目的!可以在下面的答案中找到所需内容的详细列表。

最佳答案

Mercurial 几乎可以肯定是您在 Windows 上最简单的选择。

如果您不关心身份验证,您实际上可以简单地允许 hg serve 允许推送。为此,您只需将以下内容添加到您希望提供的存储库中的 .hg/hgrc 文件中:

[web]
allow_push = *
push_ssl = false

第一行说任何人都可以推送到这个存储库。第二个告诉 Mercurial 允许在没有 SSL 的情况下进行推送,因为 hg serve 当前不支持 HTTPS。此时,用户可以在任何地方都没有帐户的情况下推送到您的存储库。如果您只是一家小商店,那可能没问题——特别是因为您可以使用 Mercurial 的能力来签署变更集,以保证比 HTTP Basic 提供的更高级别的可验证性。

不过,对于较大的商店,您希望至少有一个简单的 promise 障碍是完全正确的。为此,您需要进行两项更改。首先,您需要将 Mercurial 置于具有反向代理支持或 CGI 支持的 Web 服务器之后。值得庆幸的是,最近版本的 IIS 都支持这两者。可以咨询the CGI directions in the Mercurial Redbook对于特定于 Mercurial 的步骤,以及 Microsoft's guide to setting up CGI applications in IIS 6在 IIS 方面寻求帮助。

接下来,您需要设置一些基本的身份验证。 IIS 提供开箱即用的 HTTP Basic,作为奖励,它可以直接针对您的域进行身份验证,从而将管理开销保持在最低限度。

最后,您需要更改 allow_push 行以通过指定以逗号分隔的用户名列表来仅支持特定用户。例如:

allow_push = benjamin, ted, the_cow

就是这样。 Mercurial 现在将允许来自可以通过 HTTP 基本身份验证进行身份验证的用户的推送,并允许来自其他所有人的 pull 。

关于windows - 带有 Windows 中央存储库的 DVCS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/799187/

相关文章:

python - Windows下查看Python程序最大内存使用

git reset --hard -q 产生关于空格的错误

git - 在 vagrant+chef 设置中使用带密码的 ssh key

git - 我如何存储一些在 git reset --hard 中幸存下来的本地更改

svn - TortoiseSVN 的自动清理

c# - 访问其他 Windows 窗体类中的变量

c - 修改后被其他人覆盖原始文件

Windows Batch 认为凌晨 2 点是下午 5 点之后

svn - 在 xCode 9.0 中找不到 SVN 源代码控制存储库选项

c# - 我应该对哪些 C# 项目文件进行版本控制?