diff --git a/changelog b/changelog
index 0dd7c3f0314956acda80f724461390dfcf16f36a..1f1d1e647aacb3f846147e0326fea449a729f682 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,11 @@
+2013-07-24  Richard Hartmann <richih.mailinglist@gmail.com>
+
+	* Release 1.20130724
+	* Add support for `vcsh status`
+	* Improve output of `vcsh pull`
+	* Improve output of `vcsh push`
+	* Minor documentation improvements
+
 2013-07-23  Richard Hartmann <richih.mailinglist@gmail.com>
 
 	* Release 1.20130723
diff --git a/doc/vcsh.1.ronn b/doc/vcsh.1.ronn
index b1957078400381993313762d03449e68b1128790..9532e654278c1187eb0112b8d50769ed19156eea 100644
--- a/doc/vcsh.1.ronn
+++ b/doc/vcsh.1.ronn
@@ -29,6 +29,8 @@ vcsh(1) - Version Control System for $HOME - multiple Git repositories in $HOME
 
 `vcsh` run <repo> <shell command>
 
+`vcsh` status
+
 `vcsh` upgrade <repo>
 
 `vcsh` version
@@ -125,6 +127,9 @@ an interactive user.
   This is needed to support mr and other scripts properly and of no concern to
   an interactive user.
 
+* status:
+  Show statuses of all vcsh repositories.
+
 * upgrade:
   Upgrade repository to currently recommended settings.
 
@@ -164,16 +169,16 @@ executed in the context of your shell.
 Interesting knobs you can turn:
 
 * <$VCSH_GITIGNORE>:
-  Can be <exact>, <recursive>, or <none>.
+  Can be <exact>, <none>, or <recursive>.
 
   <exact> will seed the repo-specific ignore file with all file and directory
   names which `git ls-files` returns.
 
+  <none> will not write any ignore file.
+
   <recursive> will descend through all directories recursively additionally to
   the above.
 
-  <none> will not write any ignore file.
-
   Defaults to <exact>.
 
 Less interesting knobs you could turn:
diff --git a/vcsh b/vcsh
index ea889318796f40217aff83f34941ceaf233025a2..f2bbd7a229c8211b9d79cb3bb0ee262f54a28eec 100755
--- a/vcsh
+++ b/vcsh
@@ -24,7 +24,7 @@ basename() {
 }
 
 SELF=$(basename $0)
-VERSION='1.20130723'
+VERSION='1.20130724'
 
 fatal() {
 	echo "$SELF: fatal: $1" >&2
@@ -106,6 +106,7 @@ help() {
           <newname>     Rename repository
    run <repo> \\
        <command>        Use this repository
+   status               Show statuses of all vcsh repositories
    upgrade <repo>       Upgrade repository to currently recommended settings
    version              Print version information
    which <substring>    Find substring in name of any tracked file
@@ -233,6 +234,7 @@ pull() {
 		export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git"
 		use
 		git pull
+		echo
 	done
 	hook post-pull
 }
@@ -244,6 +246,7 @@ push() {
 		export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git"
 		use
 		git push
+		echo
 	done
 	hook post-push
 }
@@ -273,6 +276,16 @@ run() {
 	hook post-run
 }
 
+status() {
+	for VCSH_REPO_NAME in $(list); do
+		echo "$VCSH_REPO_NAME:"
+		export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git"
+		use
+		git status --short --untracked-files='no'
+		echo
+	done
+}
+
 upgrade() {
 	hook pre-upgrade
 	use
@@ -373,7 +386,8 @@ elif [ "$1" = 'delete' ]           ||
 elif [ "$1" = 'list' ] ||
      [ "$1" = 'list-tracked' ] ||
      [ "$1" = 'pull' ] ||
-     [ "$1" = 'push' ]; then
+     [ "$1" = 'push' ] ||
+     [ "$1" = 'status' ]; then
 	export VCSH_COMMAND="$1"
 elif [ -n "$2" ]; then
 	export VCSH_COMMAND='run'