Re: Determining if two commits are on a separate branch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux