mercurial(Hg) Server 搭建 过程记录
1、 环境说明
只是测试搭建,环境为本机开发环境:win 8.1 + IIS8.5
软件准备:

2、 软件安装
先安装Python2.7, 然后安装Mercurial的Python package, 然后安装TortoiseHg, 最后安装url rewrite组件。
3、 在D盘建一个数据仓库总目录, 例如D:\Mercurial\ hgweb, 所有的repositories都将位于这个目录之下。

(Repositories是仓库文件夹,下面存放多个代码仓库。这里为了方便放入D:\Mercurial\ hgweb路径下,其实也可放在别的路径,只要在配置文件中配置对就行了)
4、 IIS下建立网站hg


双击Handlers Mappings, 右侧会出现一个actions列表, 点击Add Managed Handler, 会弹出一个新建窗口, 按如下图所示填写这个新建窗口:


5、 在D:\Mercurial\ hgweb路径下建立hgweb.cgi文件,内容如下:
#!D:/Python27/python.exe
#
# An example FastCGI script for use with flup, edit as necessary
# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = "D:/Mercurial/hgweb/hgweb.config"
# Uncomment and adjust if Mercurial is not installed system-wide
# (consult "installed modules" path from 'hg debuginstall'):
import sys; sys.path.insert(0, "D:\\Python27\\Lib\\site-packages\\mercurial")
# Uncomment to send python tracebacks to the browser if an error occurs:
from mercurial import demandimport;
demandimport.enable()
import cgitb
cgitb.enable()
#import os
#os.environ["HGENCODING"] = "UTF-8"
from mercurial.hgweb.hgwebdir_mod import hgwebdir
import mercurial.hgweb.wsgicgi as wsgicgi
application = hgwebdir(config)
wsgicgi.launch(application)
其中D:/Python27/python.exe为python安装路径,
config = "D:/Mercurial/hgweb/hgweb.config" (下一步将建立的文件)
D:\\Python27\\Lib\\site-packages\\mercurial 为安装Mercurial的Python package路径。
6、 再在D:\Mercurial\ hgweb下新建一个文本文件, 重命名为hgweb.config,内容为:
[paths]
/Repositories/ = D:/Mercurial/hgweb/Repositories/*
[web]
encoding = UTF-8
push_ssl = false
allow_read = *
allow_push = *
baseurl = /
即可尝试浏览http://localhost/hgweb.cgi . 应该能看到如下界面:
(由于80端口有其他网站,此处用的83端口,内部使用,所以安全问题不大关注 设置push_ssl = false)

7、 创建网站时会自动生成个web.config文件,用任意文本编辑器打开此文件, 在System.webServer节下的handlers节下面增加一个rewrite节
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="CGIHandler" path="*.cgi" verb="*" modules="CgiModule" scriptProcessor="D:\Python27\python.exe -u "%s"" resourceType="Unspecified" requireAccess="Script" />
</handlers>
<rewrite>
<rules>
<clear />
<rule name="hgweb.cgi" enabled="true" patternSyntax="Wildcard">
<match url="*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="hgweb.cgi/{R:1}" />
</rule>
</rules>
</rewrite>
<security>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Allow" users="?" />
</authorization>
</security>
</system.webServer>
</configuration>
这样直接用http://localhost/ 就可访问和http://localhost/hgweb.cgi一样的效果。
8、 用Hg在Repositories中创建仓库

然后就可以在客户端clone仓库、以及push到服务器了。
在push时可能会遇到权限问题,解决方法:
1) 确定IIS_IUSERS有读写D:/Mercurial/hgweb文件夹的权限;
2) 修改仓库中的.hg/hgrc文件

添加如下内容
[web]
allow_read = *
allow_push = *
push_ssl = false
(也没太弄明白为什么,hgweb.config中也有这些配置,和这里有啥区别?但是在这里添加后确实可以PUSH了)
参考网址:
http://www.cnblogs.com/Moosdau/archive/2012/03/06/2382769.html
http://blog.csdn.net/delphinew/article/details/5440723
http://bz.selenic.com/show_bug.cgi?id=2954
mercurial(Hg) Server 搭建 过程记录的更多相关文章
- Java Web项目搭建过程记录(struts2)
开发工具:eclipse 搭建环境:jdk1.7 tomcat 8.0 基础的java开发环境搭建过程不再赘述,下面从打开eclipse 之后的操作开始 第一步: 创建项目,File -> ...
- iRedMail的搭建过程记录
iRedMail的搭建和注意事项 经过一段时间的折腾,终于将iRedMail搭建起来了,下面介绍一下搭建的过程,以及注意事项. 注意事项: 1. iRedMail不支持重复安装,如果安装错误,请重置 ...
- mongo 集群(副本)搭建过程记录
最近搭建mongo集群,回忆总结,作以记录.整个过程主要参考以下两篇文章,但是过程并不顺利,有些问题需要记录.https://www.cnblogs.com/dba-devops/p/7130710. ...
- mongodb集群搭建过程记录
mongodb集群搭建花费比较长的时间,在此记录下过程,方便以后使用 一 软件环境 系统:ubuntu 18.04,mongodb 社区版4.2 https://docs.mongodb.com/ma ...
- Linux下kafka集群搭建过程记录
环境准备 zookeeper集群环境kafka是依赖于zookeeper注册中心的一款分布式消息对列,所以需要有zookeeper单机或者集群环境. 三台服务器: 172.16.18.198 k8s- ...
- JDK+Tomcat+Eclipse环境搭建过程记录
这学期选了一门公选课叫网络开发工具与技术,主要学习用JSP语言构建网站.在配置环境的过程中遇到不少的坑,于是记录下来,希望能帮到大家. 系统环境:Win10 JDK版本:8u121, JAVA版本1. ...
- linux 编程环境搭建过程记录
1, 安装centos 7 最小版 过程略 ...... 2, 安装桌面安装yum groupinstall "GNOME Desktop" 更新系统运行级别ln -sf /li ...
- MAPR 开发环境搭建过程记录
我下载了MAPR 官方提供的virtualbox 和 vmware版本的sandbox进行试用. 开始试用了一会vmware版的,因为不太熟悉vmware的操作,而且vmplayer经常没有反应,后来 ...
- Python 语言搭建SELENIUM测试环境,搭建过程记录。
第一步,安装Python: 第二步,安装SetupTools: 第三步,安装Pip: 第四步,安装selenium(for python) 第五步,新建第一个基于Firefox的测试用例 上述 只是步 ...
随机推荐
- phpcms v9升级后台无法上传缩略图的原因分析
phpcms V9 是目前国内使用人数最多的一款开源免费的CMS系统,正是由于他的免费性,开源性,以及其自身的功能性比较强大,所以倍受许多站长朋友们的亲来,以及许多的公司的喜欢.phpcms也为了完善 ...
- 使用Jquery解决Asp.Net中下拉列表值改变后访问服务器刷新界面。
使用DropDownList控件时,改变选项时,获取服务端数据库数据并刷新界面数据. 1. 绑定DropDownList控件SelectedIndexChanged事件. 2. AutoPortBac ...
- ORACLE主要的系统表和系统视图
ORACLE主要的系统表和系统视图 1.系统表 ORACLE数据库的系统参数都存储在数据库中,可以通过SQLPLUS,以用户SYS进行查询.几个重要的表或者视图如下: v$controlfile:控制 ...
- Android高清巨图加载方案
1.今天看了鸿洋的<Android高清巨图加载方案>一文,对加载高清巨图时的解决方案有了一定的认识. 思路为: 提供一个设置图片的入口. 重写onTouchEvent,在里面根据用户移动的 ...
- 安卓网络请求之——OkHttp学习
之前做安卓项目的时候,HTTP请求用的是android api中的HttpURLConnection和HttpClient,编码比较繁琐,自己封装的也不好.后来知道有很多网络请求的第三方框架,可以方便 ...
- 《python基础教程》笔记之 元组
元组不能修改,创建语法很简单:使用逗号分隔了一些值,则自动创建了元组. >>> 1,2,3(1, 2, 3)>>> 1,(1,) 元组的节本操作同列表相同,除了没有 ...
- cf B. Hungry Sequence
http://codeforces.com/contest/327/problem/B 这道题素数打表就行. #include <cstdio> #include <cstring& ...
- 查询Sqlserver 表结构信息 SQL
SELECT 表名 then d.name else '' end, 表说明 then isnull(f.value,'') else '' end, 字段序号 = a.colorder, 字段名 = ...
- debug openStack
ERROR neutron.agent.l3.agent [-] An interface driver must be specified No valid host was found. Ther ...
- c语言局部变量 静态局部变量 全局变量与静态全局变量
基本概念: 作用域:起作用的区域,也就是可以工作的范围. 代码块:所谓代码块,就是用{}括起来的一段代码. 数据段:数据段存的是数,像全局变量就是存在数据段的 代码段:存的是程序代码,一般是只读的. ...