基于python开发pre-commit hook达到对git提交时间的控制

本文讲述了在从svn转向git后,为解决git提交时间与系统时间不一致的问题,作者通过创建git的pre-commit钩子,用python编写脚本来检查本地时间。由于内网环境无法直接获取外网时间,作者搭建了内网NTP服务器,并最终通过curl获取nginx服务器上的时间信息来校验本地时间。文章分享了解决过程中遇到的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  近期公司开发使用的版本控制工具由svn转向git,由于开发需求,经常会更改本地的时间,从而暴漏出一个原先使用svn不会出现的问题:commit的时间经常会不对。主要是因为git提交到远程服务器需要两部曲commit-push,而commit时使用的是本地的系统时间,这样就导致在修改本地时间之后,commit的时间就与正常时间对不上。现在希望开发一个脚本实现在提交的时候检查本地的时间是否正常,如果异常就阻止此次提交,以此来控制提交时间。
  在定位好问题之后,确定使用git中pre-commit这个hook达到本地提交的时候检查本地时间的目的。由于hook支持python,我对python又比较熟,所以决定使用python实现。
  确定好以上问题之后,需要解决的问题是如何获取到远程服务器的时间。由于公司统一在内网开发,所以开发机是无法连接到外网的,所以是无法直接获取到外网的时间,于是考虑在内网搭建一台ntp服务器。搭建服务器的教程参考:http://www.cnblogs.com/kerrycode/archive/2015/08/20/4744804.html。搭建完ntp服务器后,编写了第一版程序:

#!/usr/bin/env python
#coding=utf-8

import time
import ntplib
import sys
import math

max_diff = 20 * 60          #  最大允许相差20分钟
url = "time.windows.com" # 获取时间的ntp服务器

def STD(s_time):
    return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(s_time))


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值