hg 自动 push


hg的版本提交分两步

1. hg commit

2. hg push

但有些时候,我们需要一步完成,即在hg commit后,自动做 hg push

配置如下:


.hg/hgrc
[hooks]
commit.autopush = hg push


python 改配置程序

# -*- coding:utf-8 -*-

import sys
import os
import configparser

# global various
BASEDIR=""

def usage():
	print("Autopush for HG")
	print("Copyright (C) 2011 Liu Yugang <liuyug@yahoo.cn>")
	print("autopush <directory>")

def FixAutoPush(hgrcfile):
	config = configparser.ConfigParser()
	try :
		config.read(hgrcfile)
		if(not config.has_section("hooks")):
			config.add_section("hooks")
		if(config.has_option("hooks","commit.autopush")):
			if(config["hooks"]["commit.autopush"]=="hg push"):
				print("Find \"commit.autopush\" in \""+hgrcfile+"\", skip.")
				return
		config["hooks"]["commit.autopush"]="hg push"
		with open(hgrcfile,"w") as configfile:
			config.write(configfile)
		print("Fix \""+hgrcfile+"\"")
	except configparser.Error as err:
		print(err)
	
def main():
	if(len(sys.argv)<2):
		usage()
		exit()
	BASEDIR=os.path.abspath(sys.argv[1])

	fixautopush=False
	hgrcfile=os.path.join(BASEDIR,".hg","hgrc")
	if(os.path.isfile(hgrcfile)):
		FixAutoPush(hgrcfile)
		exit()

	for hg_dir in os.listdir(BASEDIR):
		hgrcfile=os.path.join(BASEDIR,hg_dir,".hg","hgrc")
		if(os.path.isfile(hgrcfile)):
			FixAutoPush(hgrcfile)
			fixautopush=True
	if(not fixautopush)	:
		print("Can't find \""+hgrcfile+'" file.')
	
if __name__ == "__main__":
    main()



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值