`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 [<-r>] [<repo>]
+`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
Delete an existing repository.
* enter:
- Enter repository; spawn new <$SHELL>.
+ Enter repository; spawn new <$SHELL> with <$GIT_DIR> set.
+
+* 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.
- If you want to list files not tracked by a specific repository, simply
- append the repository's name last.
+ `$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>`.
Defaults to <exact>.
-* <$VCSH_VCSH_WORKTREE>:
+* <$VCSH_WORKTREE>:
Can be <absolute>, or <relative>.
<absolute> will set an absolute path; defaulting to <$HOME>.
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.
Martin F. Krafft aka madduck came up with the concept of fake bare Git
repositories.
-vcsh was initally written by madduck. This version is a re-implementation from
+vcsh was initially written by madduck. This version is a re-implementation from
scratch with a lot more features. madduck graciously agreed to let the author
take over the name.
## 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.