diff --git a/doc/hooks b/doc/hooks
index 54ff795611c0081e11eca8d16064f0f57f2ac60e..30cd373a50b492b472edffe498e9ac63cff45516 100644
--- a/doc/hooks
+++ b/doc/hooks
@@ -14,6 +14,12 @@ Available hooks are:
* post-enter
* pre-init
* post-init
+* pre-merge
+ Use this hook to detect and handle merge conflicts before vcsh's native code
+ finds and errors on them. This is useful for allowing clones on top of existing
+ files.
+* post-merge
+ Use this hook to finish handling any merge conflicts found in the pre-merge hook.
* pre-pull
* post-pull
* pre-push
diff --git a/vcsh b/vcsh
index 6ce5320a620e098d2907c127261c65a0a334a939..a6d82138307a2d00e93f8c944b3f93ac03e69316 100755
--- a/vcsh
+++ b/vcsh
@@ -152,6 +152,7 @@ clone() {
exit
fi
git fetch
+ hook pre-merge
git ls-tree -r --name-only origin/master | (while read object; do
[ -e "$object" ] &&
error "'$object' exists." &&
@@ -161,6 +162,7 @@ clone() {
fatal "will stop after fetching and not try to merge!
Once this situation has been resolved, run 'vcsh run $VCSH_REPO_NAME git pull' to finish cloning." 17
git merge origin/master
+ hook post-merge
hook post-clone
retire
hook post-clone-retired