Mik*_*nen 24 windows git version-control mercurial
我们目前正在使用VSS进行版本控制.我们的开发人员中很少有人对分布式模型感兴趣(并希望摆脱VSS).我们的网络充满了Windows机器,而我们的IT部门拥有维护Linux机器的经验,他们不愿意这样做.
什么DVCS系统可以在Windows上托管其中央存储库,同时提供..
在客户端,像Tortoise这样的GUI或多或少都是一个要求(抱歉,Windows shell很糟糕.:|).易于安装将是一个巨大的优势,因为我们的IT部门已经非常低的资源.只要客户端能够存储凭据,使用Windows凭据进行身份验证将是一个优势,但不是必需的.
我有一个(真的)快速看看Git,Mercurial和Bazaar.
是否有任何DVCS系统的Windows服务器进程,谁有人设法在Windows的土地上设置一个?
如果这是一个重复的问题,请道歉.我找不到一个.
更新
Mercurial为推动目的而工作!详细列表所需的内容可以在下面找到答案.
Ben*_*ack 17
Mercurial几乎可以肯定是Windows上最简单的选择.
如果你不关心身份验证,你实际上可以轻松地允许hg serve
推送.为此,您只需将以下内容添加到.hg/hgrc
要提供的存储库中的文件中:
[web]
allow_push = *
push_ssl = false
Run Code Online (Sandbox Code Playgroud)
第一行说任何人都可以推送到这个存储库.第二个告诉Mercurial允许在没有SSL的情况下推送,因为hg serve
目前本身不支持HTTPS.此时,用户无需在任何地方拥有帐户即可推送到您的存储库.如果你只是一个小商店,这可能很好 - 特别是因为你可以使用Mercurial签署变更集的能力,以保证比HTTP Basic提供的更高级别的可验证性,无论如何.
然而,对于一个更大的商店来说,你至少想要一个简单的承诺障碍是完全正确的.为此,您需要进行两项更改.首先,您需要将Mercurial置于具有反向代理支持或CGI支持的Web服务器之后.值得庆幸的是,最新版本的IIS支持这两种版本 您可以参考Mercurial Redbook中针对Mercurial特定步骤的CGI指导,以及Microsoft在IIS 6中设置CGI应用程序以获取IIS方面帮助的指南.
接下来,您需要设置一些基本身份验证.IIS提供了开箱即用的HTTP Basic,作为奖励,它可以直接针对您的域进行身份验证,从而将管理开销降至最低.
最后,您需要allow_push
通过指定以逗号分隔的用户名列表来更改该行以仅支持特定用户.例如:
allow_push = benjamin, ted, the_cow
Run Code Online (Sandbox Code Playgroud)
而已.Mercurial现在允许来自可以通过HTTP Basic身份验证进行身份验证的用户进行推送,并允许来自其他所有人.
Mik*_*nen 12
在Benjamin指出HTTP服务CGI脚本之后,我决定尝试这些并设法获得通过HTTP托管的存储库.Benjamin链接的红皮书和Mercurial wiki的两篇文章有很大的帮助.一般描述Mercurial发布,另一个包含设置HgWebDir CGI脚本的分步说明.
这些说明并非完全万无一失,所以我不得不捅一下.最有可能的是,我正在运行64位Vista.下面的说明记录了我的所作所为.既然我已经完成了一次,我可能会按照其他顺序做事,所以不要考虑这些一步一步的说明.
水银
首先,我从http://mercurial.berkwood.com/获得了安装的Mercurial二进制文件d:\dev\Mercurial
.我创建了一个存储库,用于在d:\dev\testRepo
存储库下使用hg init
.该d:\dev\Mercurial\library.zip
包含由CGI脚本所需的Mercurial库文件,以便他们提取到d:\dev\Mercurial\library
.最让我困惑的是,当我打开zip文件时,我收到了一条错误消息,没有看到任何内容.只是将文件解压缩到一个目录.
对于Web脚本,我下载了Mercurial 源代码,其中包含已移动并重命名为的hgwebdir.cgi d:\dev\Mercurial\webroot\hgwebdir.py
.一步一步的文章包含有关修改Windows的hgwebdir脚本的良好说明.它们还包含hgweb.config的说明,在我的情况下最终看起来像这样:
[paths]
/hg/hgwebdir.py/test = D:\dev\Mercurial\testRepo
Run Code Online (Sandbox Code Playgroud)
此外,存储库需要以下配置,因此我可以在没有SSL的情况下推送.注意我正在使用基本身份验证来验证用户当前.我必须创建配置D:\dev\Mercurial\testRepo\.hg\hgrc
并添加以下行:
[web]
allow_push = *
push_ssl = false
Run Code Online (Sandbox Code Playgroud)
蟒蛇
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并查看存储库.
所以现在读访问工作正常.当我尝试推送到存储库时,我收到了奇怪的错误消息,告诉我它不是真正的存储库.
经过一个小时的调试后,我最终D:\dev\Mercurial\library\mercurial
在webroot下复制整个树,以便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
工作将东西推送到存储库!
问题和解决方案
CgiModule
,可执行文件是您的Python可执行文件+%slibrary\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"文件. Mercurial Stable Release
python setup.py build --force -c mingw32 python setup.py install --force --skip-build
5.修改你的路径.
您需要在环境路径中插入"hg"命令的另一个位置.
6.创建配置文件.
如果要在此服务器上进行本地提交,则需要设置默认用户名.
[ui] editor = Notepad username = your_name
6.测试您的安装.
打开一个新的命令窗口并使用' hg debuginstall '进行测试以进行验证.您应该看到类似以下的内容.
Checking encoding (cp1252)... Checking extensions... Checking templates... Checking patch... Checking commit editor... Checking username... No problems detected
7.设置Web目录.
8.为集中存储库配置IIS7.
我使用的是DefaultAppPool,它使用.Net 2.0,Pipeline = Integrated,Identity = ApplicationPoolIdentity.
9.测试Web设置.
您现在应该可以浏览http://localhost/Mercurial/hgwebdir.cgi并查看并清空存储库列表.
10.为友好URL配置IIS7
我不喜欢拥有不友好的URL,这一步允许我们将URL重新映射到更友好的地方.为IIS 安装URL Rewrite Moduel 1.1 Extension.
11.创建Mercurial存储库
您现在可以创建一个测试存储库.
[paths] / = C:\Mercurial\Repository\**
**如果你现在想要能够在没有ssl的情况下在存储库的.hg目录中创建一个hgrc文件以下行.
[web] allow_push = * push_ssl = false
参考文献:
Mercurial Wiki Windows安装
HG Book
逐步
发布Mercurial存储库
归档时间: |
|
查看次数: |
2903 次 |
最近记录: |