`vcsh` [<options>] <command>
-`vcsh` clone <url> [<repo>]
+`vcsh` clone [-b <branch>] <url> [<repo>]
`vcsh` delete <repo>
`vcsh` enter <repo>
+`vcsh` foreach [-g] <git command>
+
`vcsh` help
`vcsh` init <repo>
`vcsh` list
-`vcsh` list-tracked
-
-`vcsh` list-tracked-by <repo>
+`vcsh` list-tracked [<repo>]
-`vcsh` list-untracked
+`vcsh` list-untracked [<-a>] [<-r>] [<repo>]
`vcsh` pull
`vcsh` write-gitignore <repo>
-`vcsh` <repo> <git command>
+`vcsh` <repo> <gitcommand>
`vcsh` <repo>
If you need to clone a bundle of repositories, look into the
`post-clone-retired` hook.
+ You can also use a single git repository with several branches. Use the `-b`
+ option to specify a branch at clone time, the default is `master`.
+
* commit:
Commit in all repositories
* enter:
Enter repository; spawn new <$SHELL>.
+* foreach:
+ Execute git command for every vcsh repository.
+
+ `-g`: Execute in general context.
+
* help:
Display help.
* list-tracked:
List all files tracked by vcsh.
+ If you want to list files tracked by a specific repository, simply
+ append the repository's name last.
+
* list-tracked-by:
List files tracked by a repository.
+ This is a legacy command; you should use `list-tracked <repo>` instead.
+
* list-untracked:
List all files NOT tracked by vcsh.
+ `-a`: Show all files.
+ By default, the `git ls-files --exclude-standard` is called.
+
+ `-r`: Recursive mode.
By default, the file list is shallow and stops at directory levels where
- possible. If you prefer to get a list of all files, append `-r` for
- recursive mode.
+ possible.
+
+ `$repo`: List files not tracked by this specific repository.
* pull:
Pull from all vcsh remotes.
Write .gitignore.d/<repo> via `git ls-files`.
* <repo> <gitcommand>:
- Shortcut to run `vcsh` on a repo. Will prepend `git` to <command>.
+ Shortcut to run `git` commands on a repo. Will prepend `git` to <gitcommand>.
* <repo>:
Shortcut to run `vcsh enter <repo>`.
If you need more, vcsh is trivial to patch, but please let upstream know so
we can ship them by default.
+## OVERLAY SYSTEM
+
+`vcsh` also provides an overlay system. Similar to hooks, the recommended
+locations are <$XDG_CONFIG_HOME/vcsh/overlays-available> and
+<$XDG_CONFIG_HOME/vcsh/overlays-enabled>.
+
+Overlays follow the same rules as hooks and you are free to overwrite any
+and all functions. Same as hooks, you can use global or repository-specific
+overlays by using either <$VCSH_OVERLAY_D/$VCSH_COMMAND> or
+<$VCSH_OVERLAY_D/$VCSH_REPO_NAME.$VCSH_COMMAND>.
+
+Please note that nothing stops you from, e.g. overwriting `status()` in
+<$VCSH_OVERLAY_D/commit>. As the overlays will be sourced and you are
+replacing arbitrary functions, any and all features may stop working, or you
+may even lose data.
+
+You have been warned.
+
## DETAILED HOWTO AND FURTHER READING
Manpages are often short and sometimes useless to glean best practices from.
## COPYRIGHT
-Copyright 2011-2013 Richard Hartmann <richih@debian.org>
+Copyright 2011-2015 Richard Hartmann <richih@debian.org>
Licensed under the GNU GPL version 2 or higher.