GitHub - jianli/git-get-merge: A git command to find the merge that introduced a given commit. (original) (raw)

git get-merge is a git command to locate the merge that introduced a given commit into a given branch in your repository (master by default). It is correct with very high probability.

Installation

pip install git-get-merge

Usage

git get-merge d50a9d6 commit bf9629e38ec3f280704fa868e70fbcbfbcc5f442 Merge: 622bc4f d50a9d6 Author: Jian Date: Fri Jul 4 02:01:40 2014 +0200

Merge pull request #5 from lowks/patch-1

Update setup.py

More Info

git get-merge help usage: git get-merge [branch]

Attempt to find when commit was merged to , where is master by default. Two methods are used:

method 1

Stupid algorithm which works most of the time.

Follow the commit downstream and return the first merge into another
branch, as opposed to a merge from another branch. Hopefully, this other
branch is <branch>.

Abort if the graph starts branching or terminates.

method 2

Find the earliest common commit between ancestry-path and first-parent.

Source: http://stackoverflow.com/a/8492711

This is the correct algorithm assuming a properly-maintained git
history. However, if there has ever been a fast-forward merge of a feature
branch into <branch>, the first-parent history of <branch> will have been
tampered with and this "correct" approach could fail.