• Filipe Brandenburger's avatar
    Use just GitVersion for the -version output · 8de322f1
    Filipe Brandenburger authored
    It turns out that that's simply the most useful information about the version
    that was built.
    
    For a git tree, it includes information about the closest release, number of
    commits since the release, enough of the SHA1 to find the exact commit and
    whether the tree was clean or dirty at build time.
    
    For a build from tarball, it will include information of which release was built
    and, when using a tarball from a not released commit (e.g. downloading
    "master.tar.gz" from GitHub, not recommended!) it will include the -dev prefix
    to indicate that was not an official release. (That's as good as we can get with
    it.)
    
    If additional information is required, it can be found with -version=raw.
    
    Tested:
    
    - Built from the git tree:
    
        $ _output/go/bin/kubecfg -version
        Kubernetes v0.2-29-gd916051e9db865
        $ _output/go/bin/kubecfg -version=raw
        version.Info{Major:"0", Minor:"2+", GitVersion:"v0.2-29-gd916051e9db865", GitCommit:"d916051e9db8650899acb9415a4e285e3e3a1f87", GitTreeState:"clean"}
    
    - Built it from a dirty git tree:
    
        $ { echo 'package version'; echo 'var X = 1'; } >pkg/version/sillyvar.go
        $ make
        $ _output/go/bin/kubecfg -version
        Kubernetes v0.2-29-gd916051e9db865-dirty
        $ _output/go/bin/kubecfg -version=raw
        version.Info{Major:"0", Minor:"2+", GitVersion:"v0.2-29-gd916051e9db865-dirty", GitCommit:"d916051e9db8650899acb9415a4e285e3e3a1f87", GitTreeState:"dirty"}
    
    - Tag it v0.3 and build it:
    
        $ git tag -a v0.3 -m 'Release Kubernetes v0.3'
        $ make
        $ _output/go/bin/kubecfg -version
        Kubernetes v0.3
        $ _output/go/bin/kubecfg -version=raw
        version.Info{Major:"0", Minor:"3", GitVersion:"v0.3", GitCommit:"d916051e9db8650899acb9415a4e285e3e3a1f87", GitTreeState:"clean"}
    
    - Built it from a tarball:
    
        $ wget -O kubernetes.tgz https://api.github.com/repos/filbranden/kubernetes/tarball/version_string1
        $ tar xvf kubernetes.tgz
        $ cd filbranden-kubernetes-*/
        $ make
        $ _output/go/bin/kubecfg -version
        Kubernetes v0.2-dev
        $ _output/go/bin/kubecfg -version=raw
        version.Info{Major:"0", Minor:"2+", GitVersion:"v0.2-dev", GitCommit:"", GitTreeState:"not a git tree"}
    
    - Built it with `go get`:
    
        # I need to prefetch the tree to replace the official tree with mine:
        $ mkdir -p ${TMPDIR}/gopath/src/github.com/
        $ ln -sf filbranden ${TMPDIR}/gopath/src/github.com/GoogleCloudPlatform
    
        # Now run `go get` to build kubecfg:
        $ GOPATH=${TMPDIR}/gopath go get github.com/filbranden/kubernetes/cmd/kubecfg
    
        # Check the version:
        $ ${TMPDIR}/gopath/bin/kubecfg -version
        Kubernetes v0.2-dev
        $ ${TMPDIR}/gopath/bin/kubecfg -version=raw
        version.Info{Major:"0", Minor:"2+", GitVersion:"v0.2-dev", GitCommit:"", GitTreeState:"not a git tree"}
    Signed-off-by: 's avatarFilipe Brandenburger <filbranden@google.com>
    8de322f1
version.go 1.55 KB