diff --git a/doc/vcsh.1.ronn b/doc/vcsh.1.ronn
index 038cc2b2d6113e220f9cc68ddd66473ffc01b926..e12cf1599c175ee5c8c3be9b12a845a5e28a70e8 100644
--- a/doc/vcsh.1.ronn
+++ b/doc/vcsh.1.ronn
@@ -27,6 +27,8 @@ vcsh(1) - manage config files in $HOME via fake bare git repositories
 
 `vcsh` setup <repo>
 
+`vcsh` version
+
 `vcsh` which <substring>
 
 `vcsh` write-gitignore <repo>
@@ -113,6 +115,9 @@ an interactive user.
 * setup:
   Set up repository with recommended settings.
 
+* version:
+  Print version information.
+
 * which <substring>:
   Find <substring> in name of any tracked file.
 
diff --git a/vcsh b/vcsh
index f222fff8abf02f08905180a4d63b0020415969ec..c446fb981ce89e4561f2bace26036a7cfb869da3 100755
--- a/vcsh
+++ b/vcsh
@@ -12,6 +12,7 @@
 # this software will most likely follow suit.
 
 SELF=$(basename $0)
+VERSION='1.2'
 
 fatal() {
 	echo "$SELF: fatal: $1" >&2
@@ -90,6 +91,7 @@ help() {
    run <repo> \\
        <command>        Use this repository
    setup <repo>         Set up repository with recommended settings
+   version              Print version information
    which <substring>    Find substring in name of any tracked file
    write-gitignore \\
    <repo>               Write .gitignore.d/<repo> via git ls-files
@@ -284,6 +286,9 @@ if [ "$1" = 'clone' ]; then
 	[ -n "$3" ] && VCSH_REPO_NAME="$3" || VCSH_REPO_NAME=$(basename "$GIT_REMOTE" .git)
 	export VCSH_REPO_NAME
 	export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git"
+elif [ "$1" = 'version' ]; then
+	echo "$SELF $VERSION"
+	exit
 elif [ "$1" = 'which' ]; then
 	[ -z "$2" ] && fatal "$1: please specify a filename" 1
 	[ -n "$3" ] && fatal "$1: too many parameters" 1