Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jgit-dev] Getting the difference between two related repositories

On Tue, May 3, 2011 at 09:15, Akos Tajti <akos.tajti@xxxxxxxxx> wrote:
> I want to implement the following functionality:
> I have two git repositories (A and B). B is the clone of A. After cloning,
> some new changesets were committed to B. Now I want to find out the last
> common changeset of the two repositories. For example:
> A: a--b--c--e--f
>             |
> B:        d--g
> In this case the last common changeset is c, d and g was committed to B. Is
> there an easy way of gathering this information with JGit?

There isn't a way to do this without first fetching "f" into B, or "g" into A.

Assuming you did, you can use RevWalk with the RevFilter.MERGE_BASE
filter to find "c".

If both repositories A and B are on the local system, you might be
able to create a temporary repository T that has both A and B listed
as object alternates. This would allow you to perform the RevWalk
MERGE_BASE operation without fetching the objects between the

The network protocol that is used to exchange objects between
repositories computes a rough approximation of the common ancestor.
But it isn't accessible as a way to compute this without also doing
the transfer... and it usually comes up with at least 32 candidate
common ancestors. (Its just how the protocol works.)


Back to the top