diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Documentation/git-octopus.txt | 38 | ||||
-rw-r--r-- | Documentation/git.txt | 3 | ||||
-rw-r--r-- | Makefile | 2 | ||||
-rwxr-xr-x | git-octopus.sh | 90 |
5 files changed, 1 insertions, 133 deletions
diff --git a/.gitignore b/.gitignore index 8a6bd02d4..6bd508e4b 100644 --- a/.gitignore +++ b/.gitignore @@ -60,7 +60,6 @@ git-merge-stupid git-mktag git-name-rev git-mv -git-octopus git-pack-redundant git-pack-objects git-parse-remote diff --git a/Documentation/git-octopus.txt b/Documentation/git-octopus.txt deleted file mode 100644 index 6e32ea347..000000000 --- a/Documentation/git-octopus.txt +++ /dev/null @@ -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 - diff --git a/Documentation/git.txt b/Documentation/git.txt index 482eba7eb..5f068c2a1 100644 --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -297,9 +297,6 @@ gitlink:git-merge[1]:: gitlink:git-mv[1]:: Move or rename a file, a directory, or a symlink. -gitlink:git-octopus[1]:: - Merge more than two commits. - gitlink:git-pull[1]:: Fetch from and merge with a remote repository. @@ -89,7 +89,7 @@ SCRIPT_SH = \ git-cherry.sh git-clone.sh git-commit.sh \ git-count-objects.sh git-diff.sh git-fetch.sh \ git-format-patch.sh git-log.sh git-ls-remote.sh \ - git-merge-one-file.sh git-octopus.sh git-parse-remote.sh \ + git-merge-one-file.sh git-parse-remote.sh \ git-prune.sh git-pull.sh git-push.sh git-rebase.sh \ git-repack.sh git-request-pull.sh git-reset.sh \ git-resolve.sh git-revert.sh git-sh-setup.sh git-status.sh \ diff --git a/git-octopus.sh b/git-octopus.sh deleted file mode 100755 index 2edbf52c4..000000000 --- a/git-octopus.sh +++ /dev/null @@ -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 |