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 @@
@@ -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 @@
@@ -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