zoukankan      html  css  js  c++  java
  • 如何在程序中加入项目提交的commit ID

      作为一个软件开发工程师,相信大家经常会遇到设备上的程序有bug需要修改,但是因为程序年代太久远或源码分支太多,已经没办法知道设备上的程序是在哪一个提交里编译出来的,这时候查问题是非常困难的。如果没法确定设备上程序对应的代码分支,我们能做的就是给设备升级到最新版本,如果新旧版本和设备之间是兼容的那还好办,要是新旧版本和设备之间是不兼容,那就比较麻烦了,可能需要免费给客户换一台新的设备。
      现在有一个方法可以避免以上的问题,那就是往gitlab编译出来的每一个程序里写入commit ID。这样子就可以把程序与gitlab上的提交记录联系起来了,这样子出现问题我们就可以到对应的提交记录里看源码,排查问题。
    如何实现把commit ID写入程序中,以下是golang语言的一个小demo

    main.go

    package main
    
    import (
    	"flag"
    	"fmt"
    	"os"
    	"runtime"
    )
    
    var (
    	ver         bool
    	gitDescribe = "should be compiled with make."
    )
    
    func main() {
    	flag.BoolVar(&ver, "v", false, "show verison info.")
    	// 解析命令行参数
    	flag.Parse()
    
    	// 打印git版本、编译环境信息
    	if ver {
    		fmt.Printf("%s %s
    goVersion: %s, compiler: %s, Platform: %s
    Copyright (c) 2000-2019 Sangfor Technologies Inc.
    ",
    			os.Args[0], gitDescribe,
    			runtime.Version(), runtime.Compiler, fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH),
    		)
    		return
    	}
    }
    

      Makefile

    gitDescribe = $(shell git describe --dirty --always --tags)
    ldflags = "-s -X main.gitDescribe=${gitDescribe} "
    all:
        CGO_ENABLED=1 go build -ldflags ${ldflags} main.go
    

      

    使用:
    make 编译成功后,用./main -v 可查看打进程序中的git commit 的缩写哈希值


    备注:可自行修改,打进程序中的哈希值要不要缩写
    git rev-parse HEAD //获取HEAD 的commit ID
    git rev-parse --short HEAD //获取HEAD 的commit ID 哈希缩写
    git describe --dirty --always --tags //获取commit ID 哈希的缩写

  • 相关阅读:
    linux常用命令
    mysql 开发基础系列20 事务控制和锁定语句(上)
    sql server 性能调优之 资源等待 CXPACKET
    mysql 开发基础系列19 触发器
    mysql 开发基础系列18 存储过程和函数(下)
    mysql 开发基础系列17 存储过程和函数(上)
    sql server 性能调优之 资源等待PAGEIOLATCH
    mysql 开发基础系列16 视图
    mysql 开发基础系列15 索引的设计和使用
    sql server 性能调优之 当前用户请求分析 (1)
  • 原文地址:https://www.cnblogs.com/wuyepeng/p/13436053.html
Copyright © 2011-2022 走看看