• 如何在程序中加入项目提交的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 哈希的缩写

  • 相关阅读:
    使用 Jbulider 开发 J2ME 移动游戏程序
    JDBC的数据库事务
    oracle 常用命令大汇总
    Oracle数据库几种启动方式
    分析Oracle数据库日志文件(1)
    SugarCRM 去掉 header 应用程序 下拉菜单
    SugarCRM 去掉左边快捷保存菜单
    SugarCRM 指定模块显示左边快捷方式
    SugarCRM 左边菜单全部去掉
    SugarCRM 去掉header头部的查找功能
  • 原文地址:https://www.cnblogs.com/wuyepeng/p/13436053.html
Copyright © 2020-2023  润新知