diff --git a/cmd/helm/version.go b/cmd/helm/version.go
index 16dbc0e674057254e07f952074ee49af202c5a7d..4a93d58cd74a6b53571f0d4f1aea25eb2433d9e2 100644
--- a/cmd/helm/version.go
+++ b/cmd/helm/version.go
@@ -27,6 +27,7 @@ import (
 	"google.golang.org/grpc/codes"
 
 	"k8s.io/helm/pkg/helm"
+	pb "k8s.io/helm/pkg/proto/hapi/version"
 	"k8s.io/helm/pkg/version"
 )
 
@@ -53,6 +54,7 @@ type versionCmd struct {
 	client     helm.Interface
 	showClient bool
 	showServer bool
+	short      bool
 }
 
 func newVersionCmd(c helm.Interface, out io.Writer) *cobra.Command {
@@ -80,8 +82,9 @@ func newVersionCmd(c helm.Interface, out io.Writer) *cobra.Command {
 		},
 	}
 	f := cmd.Flags()
-	f.BoolVarP(&version.showClient, "client", "c", false, "if set, show the client version")
-	f.BoolVarP(&version.showServer, "server", "s", false, "if set, show the server version")
+	f.BoolVarP(&version.showClient, "client", "c", false, "client version only")
+	f.BoolVarP(&version.showServer, "server", "s", false, "server version only")
+	f.BoolVar(&version.short, "short", false, "print the version number")
 
 	return cmd
 }
@@ -90,7 +93,7 @@ func (v *versionCmd) run() error {
 
 	if v.showClient {
 		cv := version.GetVersionProto()
-		fmt.Fprintf(v.out, "Client: %#v\n", cv)
+		fmt.Fprintf(v.out, "Client: %s\n", formatVersion(cv, v.short))
 	}
 
 	if !v.showServer {
@@ -107,6 +110,13 @@ func (v *versionCmd) run() error {
 		}
 		return errors.New("cannot connect to Tiller")
 	}
-	fmt.Fprintf(v.out, "Server: %#v\n", resp.Version)
+	fmt.Fprintf(v.out, "Server: %s\n", formatVersion(resp.Version, v.short))
 	return nil
 }
+
+func formatVersion(v *pb.Version, short bool) string {
+	if short {
+		return fmt.Sprintf("%s+g%s", v.SemVer, v.GitCommit[:7])
+	}
+	return fmt.Sprintf("%#v", v)
+}