diff --git a/doc/hooks b/doc/hooks index 1a93fda674a49e1c20e84be0a3b78b46a89a164e..e7fdb94024ca32e88e952b7ca2232893e25956b0 100644 --- a/doc/hooks +++ b/doc/hooks @@ -1,4 +1,13 @@ Available hooks are: + +* pre-clone +* post-clone +* post-clone-retired + Use this if you need to operate on different git repositories after cloning. + This hook can be useful if your configuration needs some remote + repositories, but you do not want to include it into your vcsh + repository. For instance, if you use vim plugins manager (vundle, + NeoBundle), zsh configuration frameworks (oh-my-zsh, prezto), etc. * pre-command * post-command * pre-enter diff --git a/doc/vcsh.1.ronn b/doc/vcsh.1.ronn index 79a4063ebad86d1a0391afb471680a713bcd905b..b1957078400381993313762d03449e68b1128790 100644 --- a/doc/vcsh.1.ronn +++ b/doc/vcsh.1.ronn @@ -81,6 +81,9 @@ an interactive user. * clone: Clone an existing repository. + If you need to clone a bundle of repositories, look into the + `post-clone-retired` hook. + * delete: Delete an existing repository. diff --git a/vcsh b/vcsh index 175a9d1a39fcef377628deb224b9074d244efdbc..ced6909a8f29e73a1184b1a8ba4bbc1e839ea578 100755 --- a/vcsh +++ b/vcsh @@ -153,6 +153,8 @@ clone() { Once this situation has been resolved, run 'vcsh run $VCSH_REPO_NAME git pull' to finish cloning.\n" 17 git merge origin/master hook post-clone + retire + hook post-clone-retired } delete() { @@ -246,6 +248,11 @@ push() { hook post-push } +retire() { + unset GIT_WORK_TREE + unset VCSH_DIRECTORY +} + rename() { git_dir_exists [ -d "$GIT_DIR_NEW" ] && fatal "'$GIT_DIR_NEW' exists" 54