From: "Philip Oakley" <philipoakley@iee.org>
To: "Git List" <git@vger.kernel.org>
Cc: "self" <philipoakley@iee.org>
Subject: Are --first-parent and --ancestry-path compatible rev-list options?
Date: Fri, 26 Aug 2016 22:23:46 +0100 [thread overview]
Message-ID: <2FA1998250474E76A386B82AD635E56A@PhilipOakley> (raw)
While trying to answer a Stack Overflow question I thought I could
contribute to, I've found a scenario that I don't understand that may be a
bug.
In http://stackoverflow.com/questions/39144006/identify-merge-into-master
MvG asked how to find the point at which a commit on a feature branch was
later merged into the main-line.
After some discussion it appeared that
`git log --oneline --first-parent --merges --reverse --ancestry-path
:/j.. | head -1`
should find the point that 'j' was merged into master (when on master),
however it appears that --first-parent and --ancestry-path interact badly to
produce no output in the example, but if either is dropped, the expected
commit is shown.
What am I missing?
--
Philip
The commit graph. We are looking for F based on knowing J.
. A - B - C - D -- E -- F -- G - H <-first parent, --merges (C,F,H)
. \ | / \ / /
. ----Z | / /
. | | | /
. \ \ / /
. I -[J]- K - L - M <-since J, children of J
. \ /
. N - O - P
# Steps to reproduce the extended example from
# http://stackoverflow.com/q/39144006/1468366
git init .
echo a > txt
git add txt
git commit -m a
echo a > txt; git commit -a -m a
echo b > txt; git commit -a -m b
git checkout -b side :/a
echo z > txt; git commit -a -m z
git checkout master
git merge :/z; echo c > txt; git add -u; git commit -m c
#echo c > txt; git commit -a -m c
echo d > txt; git commit -a -m d
echo e > txt; git commit -a -m e
git checkout -b 2nd :/b
echo i > txt; git commit -a -m i
echo j > txt; git commit -a -m j
git merge :/d; echo k > txt; git add -u; git commit -m k
git checkout -b 3rd :/i
echo n > txt; git commit -a -m n
echo o > txt; git commit -a -m o
echo p > txt; git commit -a -m p
git checkout 2nd
git merge :/p; echo l > txt; git add -u; git commit -m l
echo m > txt; git commit -a -m m
git checkout master
git merge :/l; echo f > txt; git add -u; git commit -m f
git merge :/m; echo g > txt; git add -u; git commit -m g
echo h > txt; git commit -a -m h
git log --oneline --first-parent --merges --reverse --ancestry-path :/j..
| head -5
# why does this not work --ancestry-path and --first-parent appear to clash.
code available as
https://gist.github.com/PhilipOakley/58f344f910e50b72f5a8a2bd55b6c175
next reply other threads:[~2016-08-26 21:23 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-26 21:23 Philip Oakley [this message]
2016-08-26 22:53 ` Are --first-parent and --ancestry-path compatible rev-list options? Junio C Hamano
2016-08-27 11:04 ` Philip Oakley
2016-09-01 17:32 ` Junio C Hamano
2016-09-01 20:48 ` Philip Oakley
2016-09-01 22:20 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2FA1998250474E76A386B82AD635E56A@PhilipOakley \
--to=philipoakley@iee.org \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).