Adr3nal D0S venit, vidit, dixit 27.06.2008 16:55:
We are making extensive use of submodules at work and we have created
a number of extra scripts to simplify our usage. For example, there
is git-rstatus, which recursively reports status of all submodules.
I am working on another script to check whether or not a change to any
submodules jump branches. If we have commits like this:
A--B--C
\--D
I don't care if a submodule moves from A to C or B to C, but I do care
if a commit of the super-project would cause a jump from D to C or
revert from C to B, effectively dropping previously committed code on
the floor.
So, is there a "correct" or "best" way to determine if one commit's
SHA follows directly from another's SHA in the commit history?
"Directly" as in "is child of", or as in "connected by the DAG"?
"git rev-list C..B" lists all commits which are not in C but in B. If
this list is empty then B is "contained" in C. This is how you can test
for being connected by the DAG. For the graph above, all of the
following refspecs would return an empty list, indicating connectedness:
C..B
C..A
B..A
D..B
D..A
Are those the "good ones" in your case? Then you know how to test for
the bad guys ;)
Michael
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html