[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [jgit-dev] Getting the difference between two related repositories
- From: Shawn Pearce <spearce@xxxxxxxxxxx>
- Date: Tue, 3 May 2011 10:39:19 -0700
- Delivered-to: firstname.lastname@example.org
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.)