Browse Source
We still advertise "git resolve" as a standalone command, but never "git octopus", so nobody should be using it and it is safe to retire it. The functionality is still available as a strategy backend. Signed-off-by: Junio C Hamano <junkio@cox.net>maint

5 changed files with 1 additions and 133 deletions
@ -1,38 +0,0 @@ |
|||||||
git-octopus(1) |
|
||||||
============== |
|
||||||
|
|
||||||
NAME |
|
||||||
---- |
|
||||||
git-octopus - Merge more than two commits. |
|
||||||
|
|
||||||
|
|
||||||
SYNOPSIS |
|
||||||
-------- |
|
||||||
'git-octopus' |
|
||||||
|
|
||||||
DESCRIPTION |
|
||||||
----------- |
|
||||||
After running 'git fetch', $GIT_DIR/FETCH_HEAD contains the |
|
||||||
following information, one line per remote ref: |
|
||||||
|
|
||||||
------------------------------------------------ |
|
||||||
<object name> <ref name> from <repository> |
|
||||||
------------------------------------------------ |
|
||||||
|
|
||||||
Using this information, create and commit an Octopus merge on |
|
||||||
top of the current HEAD. |
|
||||||
|
|
||||||
|
|
||||||
Author |
|
||||||
------ |
|
||||||
Written by Junio C Hamano <junkio@cox.net> |
|
||||||
|
|
||||||
|
|
||||||
Documentation |
|
||||||
-------------- |
|
||||||
Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>. |
|
||||||
|
|
||||||
GIT |
|
||||||
--- |
|
||||||
Part of the gitlink:git[7] suite |
|
||||||
|
|
@ -1,90 +0,0 @@ |
|||||||
#!/bin/sh |
|
||||||
# |
|
||||||
# Copyright (c) 2005 Junio C Hamano |
|
||||||
# |
|
||||||
# Resolve two or more trees recorded in $GIT_DIR/FETCH_HEAD. |
|
||||||
# |
|
||||||
. git-sh-setup |
|
||||||
|
|
||||||
usage () { |
|
||||||
die "usage: git octopus" |
|
||||||
} |
|
||||||
|
|
||||||
# Sanity check the heads early. |
|
||||||
while read SHA1 REPO |
|
||||||
do |
|
||||||
test $(git-cat-file -t $SHA1) = "commit" || |
|
||||||
die "$REPO given to octopus is not a commit" |
|
||||||
done <"$GIT_DIR/FETCH_HEAD" |
|
||||||
|
|
||||||
head=$(git-rev-parse --verify HEAD) || exit |
|
||||||
|
|
||||||
git-update-index --refresh || |
|
||||||
die "Your working tree is dirty." |
|
||||||
test "$(git-diff-index --cached "$head")" = "" || |
|
||||||
die "Your working tree does not match HEAD." |
|
||||||
|
|
||||||
# MRC is the current "merge reference commit" |
|
||||||
# MRT is the current "merge result tree" |
|
||||||
|
|
||||||
MRC=$head PARENT="-p $head" |
|
||||||
MRT=$(git-write-tree) |
|
||||||
CNT=1 ;# counting our head |
|
||||||
NON_FF_MERGE=0 |
|
||||||
while read SHA1 REPO |
|
||||||
do |
|
||||||
common=$(git-merge-base $MRC $SHA1) || |
|
||||||
die "Unable to find common commit with $SHA1 from $REPO" |
|
||||||
|
|
||||||
if test "$common" = $SHA1 |
|
||||||
then |
|
||||||
echo "Already up-to-date: $REPO" |
|
||||||
continue |
|
||||||
fi |
|
||||||
|
|
||||||
CNT=`expr $CNT + 1` |
|
||||||
PARENT="$PARENT -p $SHA1" |
|
||||||
|
|
||||||
if test "$common,$NON_FF_MERGE" = "$MRC,0" |
|
||||||
then |
|
||||||
# The first head being merged was a fast-forward. |
|
||||||
# Advance MRC to the head being merged, and use that |
|
||||||
# tree as the intermediate result of the merge. |
|
||||||
# We still need to count this as part of the parent set. |
|
||||||
|
|
||||||
echo "Fast forwarding to: $REPO" |
|
||||||
git-read-tree -u -m $head $SHA1 || exit |
|
||||||
MRC=$SHA1 MRT=$(git-write-tree) |
|
||||||
continue |
|
||||||
fi |
|
||||||
|
|
||||||
NON_FF_MERGE=1 |
|
||||||
|
|
||||||
echo "Trying simple merge with $REPO" |
|
||||||
git-read-tree -u -m $common $MRT $SHA1 || exit |
|
||||||
next=$(git-write-tree 2>/dev/null) |
|
||||||
if test $? -ne 0 |
|
||||||
then |
|
||||||
echo "Simple merge did not work, trying automatic merge." |
|
||||||
git-merge-index -o git-merge-one-file -a || { |
|
||||||
git-read-tree --reset "$head" |
|
||||||
git-checkout-index -f -q -u -a |
|
||||||
die "Automatic merge failed; should not be doing Octopus" |
|
||||||
} |
|
||||||
next=$(git-write-tree 2>/dev/null) |
|
||||||
fi |
|
||||||
MRC=$common |
|
||||||
MRT=$next |
|
||||||
done <"$GIT_DIR/FETCH_HEAD" |
|
||||||
|
|
||||||
# Just to be careful in case the user feeds nonsense to us. |
|
||||||
case "$CNT" in |
|
||||||
1) |
|
||||||
echo "No changes." |
|
||||||
exit 0 ;; |
|
||||||
esac |
|
||||||
result_commit=$(git-fmt-merge-msg <"$GIT_DIR/FETCH_HEAD" | |
|
||||||
git-commit-tree $MRT $PARENT) |
|
||||||
echo "Committed merge $result_commit" |
|
||||||
git-update-ref HEAD $result_commit $head |
|
||||||
git-diff-tree -p $head $result_commit | git-apply --stat |
|
Loading…
Reference in new issue