注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

笑遍世界@网易博客

明天还会在路上……

 
 
 

日志

 
 
关于我

Stay hungry, stay foolish. 工作用脑,生活用心! 走过山重水复,必然迎来柳暗花明! 受苦的人没有悲观的权利,远征的人没有流泪的资格。 Live each day as if we should die tomorrow.

网易考拉推荐
 
 

用hg serve发布hg repository  

2012-02-01 20:42:45|  分类: Linux技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

hg server 来发布Mercurial repository

经常使用Mercurialrepo(比如:xen-unstable.hg),本文就如何搭建一个hg repository吧。

首先,需要建立一个repo,【安装mercurial软件包 自不必说的了】

$ hg init (project-directory)

$ cd (project-directory) 

$ (add some files) 

$ hg add 

$ hg commit -m 'Initial commit'

然后,在repo的目录内,运行hg serve即可发布这个repo(默认情况下使用TCP8000端口)

 

在另外一台机器上,运行如下hg clone命令即可将repo clone下来。

hg clone http://vt-repo:8000/ my-repo.hg   #vt-repo为我的server namelairver

 

如何支持push server端配置

1.       使用http/web方式push:在server端的repo中修改.hg/hgrc文件。

(或者修改your Web server user's .hgrc file, such as /home/www-data/.hgrc, or a system-wide hgrc file like /etc/mercurial/hgrc

添加如下配置信息:

[web]

push_ssl = false

allow_push = *

(注意:一定需要保证你的repo目录对运行Web Server的用户具有可读可写的权限。hg push 默认使用https方式,需要ssl认证,allow_push是限制那些用户可以push,这里再内网,对这些权限方面的暂时不做限制。)

2.       使用ssh方式push:修改client端的.hg/hgrc文件制定push

添加如下内容:

[paths]

default = http://vt-repo:8000/      #这一行是clone下来就有的

default-push = ssh://user@vt-repo/my-repo.hg

clienthg push之时会让你输入uservt-repossh登录的密码)

 

client端的配置,只需要添加一个用户自己的username即可,在.hg/hgrc文件中添加如下:

[ui]

username = your_name <your_email@xxx.com>

 

客户端将repo clone下来,然后修改,然后commit,最后push即可。

 

这里再添加一个我曾用过的一个脚本,它用来做hg serve的。


#!/bin/bash

#

# Startup script for mercurial server.

#

# Change following lines

APP_BIN=/usr/bin/hg

SRC=/home/repo/pub/xen-unstable.hg

SRCNAME="xen-unstable"

# Path to PID file of running mercurial process.

PID_FILE=/home/repo/hg-serve.pid

 

 

state=$1

 

case "$state" in

'start')

    echo "Mecurial Server service starting."

   (cd ${SRC}; ${APP_BIN} serve --name "${SRCNAME}"  -d  -p 8000 --pid-file ${PID_FILE})

  ;;

 

'stop')

  if [ -f "${PID_FILE}" ]; then

    PID=`cat "${PID_FILE}"`

    if [ "${PID}" -gt 1 ]; then

      kill -TERM ${PID}

      echo "Stopping the Mercurial service PID=${PID}."

    else

      echo Bad PID for Mercurial -- \"${PID}\"

    fi

  else

    echo No PID file recorded for mercurial

  fi

  ;;

 

*)

  echo "$0 {start|stop}"

  exit 1

  ;;

esac





 

 

 

参考资料:

http://mercurial.selenic.com/wiki/hgserve

http://smilejay.com/2011/11/git_hg_basic_usage/

  评论这张
 
阅读(1354)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017