我们目前正在使用VSS进行版本控制。 我们很less有开发人员对分布式模型感兴趣(并想摆脱VSS)。 我们的networking充满了Windows机器,虽然我们的IT部门有维护Linux机器的经验,但是他们不希望这样做。
什么DVCS系统可以托pipe他们的中央库在Windows上,同时提供..
在客户端,像Tortoise这样的graphics用户界面可能会成为一个需求(对不起,Windows shell很糟糕:|)。 由于我们的IT部门的资源已经相当的不足了,所以安装简便。 只要客户端能够存储凭据,使用Windows凭据进行身份validation将是一个优势,但不是一个要求。
我有一个(真的)快看Git,Mercurial和Bazaar。
是否有任何DVCS系统的Windows服务器进程,并有人设法在Windows的土地?
如果这是一个重复的问题,并表示歉意。 我找不到一个。
更新
得到了Mercurial为推挤目的工作! 详细的清单所需的东西可以在下面find答案。
几乎可以肯定,Mercurial是Windows上最简单的选择。
如果你不关心认证,你实际上可以允许hg serve
允许推送。 为此,您只需将以下内容添加到您希望提供的存储库中的.hg/hgrc
文件中:
[web] allow_push = * push_ssl = false
第一行说任何人都可以推送到这个仓库。 第二个告诉Mercurial允许推送没有SSL,因为hg serve
目前不支持HTTPS本身。 此时,用户可以推送到您的存储库,而无需在任何地方的帐户。 如果你只是一个小商店,这可能是好的 – 尤其是因为你可以使用Mercurial签名变更集来保证比HTTP Basic提供更高的可验证性。
不过,对于一个更大的店铺来说,你至少想要一个简单的壁垒就完全正确了。 要做到这一点,你需要做两个改变。 首先,您需要将Mercurial放在具有反向代理支持或CGI支持的Web服务器之后。 值得庆幸的是,IIS的最新版本都支持。 您可以参阅Mercurial红皮书中针对Mercurial特定步骤的CGI指导 ,以及Microsoft在IIS 6中设置CGI应用程序的指导,以获得IIS方面的帮助。
接下来,你需要设置一些基本的认证。 IIS提供了即开即用的HTTP Basic,作为奖励,它可以直接对您的域进行身份验证,从而将管理开销降至最低。
最后,您需要通过指定逗号分隔的用户名列表来将allow_push
行更改为仅支持特定的用户。 例如:
allow_push = benjamin, ted, the_cow
而已。 Mercurial现在允许来自可以通过HTTP基本认证进行认证的用户进行推送,并允许其他人进行推送。
在Benjamin指出HTTP服务CGI脚本之后,我决定试试这些脚本,并设法通过HTTP托管一个存储库。 Benjamin链接的红皮书和两篇Mercurial wiki文章都有很大的帮助。 一个描述一般的Mercurial发布 ,另一个包含一步一步的设置HgWebDir CGI脚本的说明。
这些说明并不完全是万无一失的,所以我不得不捅了一下。 最有可能的是我运行64位Vista。 以下说明记录了我所做的事情。 现在,我已经做了一次,我可能会以另一种顺序做的事情,所以不要考虑这些一步一步的指示。
水银
首先,我从http://mercurial.berkwood.com/获取Mercurial二进制文件,该文件已安装到d:\dev\Mercurial
。 我使用hg init
在d:\dev\testRepo
存储库下创建了一个测试存储库。 d:\dev\Mercurial\library.zip
包含CGI脚本所需的Mercurial库文件,所以它们被提取到d:\dev\Mercurial\library
。 起初让我感到困惑的是,当我打开zip文件时,收到一条错误消息,但没有看到任何内容。 只是提取文件到一个目录工作。
对于web脚本,我下载了包含hgwebdir.cgi的Mercurial 源代码 ,它被移动并重命名为d:\dev\Mercurial\webroot\hgwebdir.py
。 一步一步的文章包含修改Windows的hgwebdir脚本的很好的说明。 他们还包含hgweb.config的说明,在我的情况下,看起来像这样:
[paths] /hg/hgwebdir.py/test = D:\dev\Mercurial\testRepo
此外,存储库希望以下配置,所以我可以推在那里没有SSL。 注意我正在使用基本身份验证来验证用户当前。 我必须在D:\dev\Mercurial\testRepo\.hg\hgrc
创建配置文件,并在其中添加以下行:
[web] allow_push = * push_ssl = false
蟒蛇
CGI脚本是一个Python脚本,所以它需要Python。 Python版本执行它似乎很挑剔。 其中一篇文章提到运行它需要用于构建Mercurial的相同版本。 最后,我尝试了Python 2.6 x64,Python 2.4,Python 2.5 x64后,开始使用Python 2.5 x86。
IIS
我错过了,不得不安装的两件事是CGI支持和基本认证。 这两个都是通过控制面板,程序和功能安装的。 完成安装后,我在IIS中创建了一个虚拟目录(后来我更改为一个应用程序),指向D:\dev\Mercurial\webroot
。 虚拟目录需要一个可以从Handler Mappings中添加的* .py文件的CGI处理程序。 可执行文件是D:\dev\SDKs\Python25_x86\Python.exe %s
。 一旦IIS有权限到webroot目录,我可以导航到http://localhost/hg/hgwebdir.py/test并查看存储库。
所以现在读访问正在工作。 当我尝试推送到存储库时,收到奇怪的错误消息,告诉我这不是真正的存储库。
经过一个小时的调试,我最终在webroot下拷贝了整个D:\dev\Mercurial\library\mercurial
tree,这样Python就能找到D:\dev\Mercurial\webroot\mercurial\hgweb\hgwebdir_mod.pyc
。 在此之后Wireshark报告堆栈跟踪中的访问被拒绝错误。 不知道什么是真正的原因,但是将虚拟目录改为IIS中的应用程序并将其移动到使用本地系统帐户运行的应用程序池之上,访问被拒绝的错误消失了。
另外在某些时候,我给了HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters
注册表项更多的权限,以便IIS可以访问它。 怀疑它使用本地系统帐户后,需要这些。
一旦完成这些使用hg push http://localhost/hg/hgwebdir.cgi/test
东西到存储库hg push http://localhost/hg/hgwebdir.cgi/test
正在工作!
问题和解决方案
Cgimodulee
,可执行文件是你的Python可执行文件+%s library\mercurial\hgweb\hgwebdir_mod.pyc
移到另一个地方。 读完几乎为我工作的Mikko的答案后,我想出了自己的笔记安装。 我的设置被设计成一个“非保护和开放”的存储库,我的团队成员可以使用它安装在Windows 2008 server上。
1.安装Python。
我使用的Python版本是Python 2.6.2 ,我使用的是Windows x86 MSI安装程序。
2.安装MinGW。
我使用的Minimalist GNU for Windows版本是MinGW 5.1.4
3.修改你的路径。
此时您需要在环境路径中添加地点。
4.安装Mercurial。
我使用的mercurial版本是stable分支中的最新版本,我没有使用二进制文件,而是使用了源代码。 我想自己编译mercurial,以便它可以与我安装的任何版本的Python一起工作,所以我不必担心任何兼容性问题,我发现这是与其他安装方法的最大挑战。 获取源代码的简单方法是下载“zip”文件。 水银稳定释放
python setup.py build --force -c mingw32 python setup.py install --force --skip-build
5.修改你的路径。
您需要将“hg”命令的另一个位置插入您的环境路径。
6.创建您的配置文件。
如果您要在此服务器上进行本地提交,则需要设置默认用户名。
[UI] 编辑=记事本 用户名= your_name
6.测试你的安装。
打开一个新的命令窗口并用' hg debuginstall '进行测试来验证。 你应该看到像下面这样的东西。
正在检查编码(cp1252)... 检查扩展名... 检查模板... 检查补丁... 检查提交编辑器... 检查用户名... 没有发现问题
7.安装Web目录。
8.为集中存储库配置IIS7。
我使用的是使用.Net 2.0,Pipeline = Integrated,Identity = ApplicationPoolIdentity的DefaultAppPool。
9.测试您的Web设置。
您现在应该可以浏览http://localhost/Mercurial/hgwebdir.cgi并查看并清空存储库列表。
10.为友好URL配置IIS7
我不喜欢有不友好的URL,这一步使我们重新映射的URL更友好。 安装IIS的URL重写模块1.1扩展。
11.创建Mercurial存储库
您现在可以创建一个测试存储库。
[路径] / = C:\ Mercurial \ Repository \ **
**如果现在希望能够在存储库的.hg目录下无ssl地创建一个hgrc文件,则可以执行以下命令。
[网络] allow_push = * push_ssl = false
参考文献:
Mercurial Wiki Windows安装
HG书
一步步
发布Mercurial仓库
对于从VSS开始的第一步,我会建议使用SubVersion进行源代码管理,并为客户端提供TortoiseSVN或VisualSVN 。
但是,如果团队已经决定切换到DVCS,那么我会建议Mercurial,因为它更好地支持通过TortoiseHg在客户端上的HTTP和窗口 。
如果你正在寻找:
你正在描述塑料SCM
请原谅我的坏脾气和无耻的自我推销,但我刚刚发布了一个alpha版本的HgLab ,这是一个Mercurial服务器的Windows与全推拉式支持和Active Directory集成。
SCM-agnostic(在某种程度上)具有Repository-frontent和管理功能的Windows解决方案可能是SCM-Manager (Git,Mercurial,SVN,具有JVM单一需求的盒子)