`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 [<repo>]
-`vcsh` list-tracked-by <repo>
+`vcsh` list-untracked [<-a>] [<-r>] [<repo>]
`vcsh` pull
`vcsh` run <repo> <shell command>
-`vcsh` status
+`vcsh` status [<repo>]
`vcsh` upgrade <repo>
`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.
+
+ `$repo`: List files not tracked by this specific repository.
+
* pull:
Pull from all vcsh remotes.
an interactive user.
* status:
- Show statuses of all vcsh repositories.
+ Show statuses of all/one vcsh repositories.
* upgrade:
Upgrade repository to currently recommended settings.
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>`.
Interesting knobs you can turn:
+* <$VCSH_GITATTRIBUTES>:
+ Can be <none>, or any other value.
+
+ <none> will not maintain Git attributes in a special location.
+
+ If set to any other value, repo-specific gitattributes files will be maintained.
+
+ Defaults to <none>.
+
* <$VCSH_GITIGNORE>:
Can be <exact>, <none>, or <recursive>.
Defaults to <exact>.
+* <$VCSH_VCSH_WORKTREE>:
+ Can be <absolute>, or <relative>.
+
+ <absolute> will set an absolute path; defaulting to <$HOME>.
+
+ <relative> will set a path relative to <$GIT_DIR>.
+
+ Defaults to <absolute>.
+
Less interesting knobs you could turn:
* <$VCSH_DEBUG>:
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.