golang使用go-git实时拉取最新代码

10秒一次,实时拉取最新代码;

package main

import (
	"bytes"
	"compress/gzip"
	"context"
	"encoding/base64"
	"fmt"
	"io"
	"os"
	"time"

	"github.com/go-git/go-git/v5"
)


func main() {
	gitClone(context.Background())
	gitPull(context.Background())
}

var Global_GIT *git.Repository
var GIT_TOKEN string = "https://username:token@gitlab.tencent.net/dba/job.git"

func gitPull(ctx context.Context) {
	localTimer := time.NewTimer(10 * time.Second)
	var err error
	gp, err := Global_GIT.Worktree()
	if err != nil {
		panic(err)
	}

	for {
		<-localTimer.C
		err = gp.Pull(&git.PullOptions{
			RemoteName: "origin",
			Progress:   os.Stdout,
		})
		if err != nil {
			fmt.Println(err)
		}
		localTimer.Reset(10 * time.Second)
	}
}

func gitClone(ctx context.Context) {
	repo := GIT_TOKEN
	gitDir := "/tmp/foo"
	os.Remove(gitDir)

	err := os.MkdirAll(gitDir, os.ModePerm)
	if err != nil {
		panic(err)
	}
	r, err := git.PlainClone(gitDir, false, &git.CloneOptions{
		URL:      repo,
		Progress: os.Stdout,
	})

	if err != nil {
		panic(err)
	}
	Global_GIT = r

	fmt.Println("init git clone success!")
}


  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值