Skip to content
Snippets Groups Projects
Commit 30e3b0e7 authored by Richard Hartmann's avatar Richard Hartmann
Browse files

Merge pull request #89 from alerque/master

Add hooks to allow fancy merge handling
parents 890dbded bca2d01e
Branches
Tags
No related merge requests found
......@@ -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
......
#!/bin/sh
# This finds objects that the pre-merge script moved out of the way to
# avoid conflicts when running git clone and moves them back to their
# original places. The result is that the git repository gets checked out
# and the extant objects end up back in the working directory. Git now
# sees these as un-staged changes to the working branch and you can deal
# with them by adding them or reverting.
find -name '*.vcsh-unclobber' -execdir rename .vcsh-unclobber '' {} \;
#!/bin/sh
# This code does amost exactly what the native VCSH sanity checking code
# does except that on finding a potential merge conflict, it moves the
# extant object out of the way temporarily. The merge then happens cleanly
# as far as git knows, and a post-merge hook can figure out what to do with
# the extant versions of the objects.
for object in $(git ls-tree -r origin/master | awk '{print $4}'); do
[ -e "$object" ] && mv "$object" "$object.vcsh-unclobber"
done
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment