Merging changes from branches where file paths have changed

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

 



Hi all,

I've got two git repositories -- for the purposes of illustration,
I'll call them RepoA, and RepoB.  RepoA is a large repository
originally from a CVS conversion.  Repo B is a repository which has
been formed from git-filter-branch (should it matter) from RepoA.

In doing the conversion -- RepoB contains the same history as in
RepoA, except that RepoB is now a limited subset in terms of its files
that RepoA has (repoB contains commits out of repoA for a specific
subdirectory).   However, the problem I'm wanting to solve now, which
is causing me to scratch my head and go "hmm", is how I go about
merging commits from RepoA and have them in RepoB -- where the commits
from repoA are in the same *directory* as the one which formed RepoB.

In RepoA, for the directory (and all its sub-directories) which is
contained in RepoB, I've got a list of commits -- roughly like the
following:

% cd ./distrib/build/sources/coretree/tree
% git log --oneline master..my/topic/branch -- .

Now in RepoB, I've got all of the directories and files from
./distrib/build/sources/coretree/tree/ in the root, having obtained
this from git-filter-branch from RepoA.  Despite the change of file
locations, the history of the files between the two repositories are
the same.

The commits though coming from "git log" in RepoA touch files in
distrib/build/sources/coretree/tree, yet the files to which I want the
changes for in RepoB are not in "distrib/build/sources/coretree/tree"
-- there all in "./" at the top-level directory for RepoB.  The files
in both once shared the same history -- it's just that now the
locations of those files in RepoB which have changed.

I want to cherry-pick the commits I obtained from the "git log"
command in RepoA, and have them contained in RepoB.  So I thought
something like this would work:

[ In RepoB.... ]:
% git remote add repoA file:///path/to/repoA/
% git fetch repoA
% git checkout specific/branch
% git cherry-pick $SOME_COMMIT_FROM_REPOA

However, this won't work, and doesn't.  Not only do the two
repositories not have any common ancestry, but even if they did, the
file paths from RepoA and RepoB do not match for the commit(s) I would
want to cherry-pick.  As far as I can tell, were I able to convince
Git the file paths did work, then I could cherry-pick them.

Can anyone suggest a good way round this?  I hope I've managed to
explain this adequately; just ask if not.

Thanks in Advance.

-- Thomas Adam
--
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]