This is a multiphase question. I am looking for the current state of the art to completing it and linking separate resources doing disjoined parts.
Short story of what I need:
- convert a full-history CVS repo into git as a base
- concatenate an existing git repo for that same project on top of the above
- publish the merged repo on github
- merge in forks from the 2nd step
My issue is as follows (a longer story):
- I have a relatively large original CVS repo, let's call it
O_cvs
with some branches, tags, etc., lots of history for over 10 years. - At some point a copy (one of) of a checkout of that repo
O_cvs
was made and pushed into a Git repo as a starting point, let's call itO_git
. There were no further commits toO_cvs
; nor further development is planned inO_cvs
after migration. O_git
had a number of features added and projects forked, some are merged via pull requests and some aren't, sayF1_git
,F2_git
, etc.
Thus, my plan with question where appropriate:
- I care for the history and contributors and tags in
O_cvs
that I would like to preserve as a base. As a result I would like to produce a repo, let's call itG_git
(local?) fromO_cvs
. What's the current recommended tool to do that for me? I researched here and elsewhere and found different suggestions posted over the years featured, e.g., in here, here, and here:git-cvsimport
cvs2git
extension ofsvn2git
- CVS2GIT wrapper for
cvs2git
from Tikal - "
crap
" -- Cvs Remote Access Program - More tools from kernel.org
- I then plan to publish
G_git
on GitHub (only question here should this be the order), asG
. - I care for the
O_git
and its forks, hosted elsewhere, so I'd pull that in. - I want to concatenate the histories of
G_git
+O_git
, and push them to GitHub, into the combined repoG
. From my research "grafting" and fast import seem the way to go here.- so would I graft
O_git
ontoG_git
on GitHub (should grafting be done before pushingG_git
to GitHub?)
- so would I graft
- I will work on pull requests to
O_git
fromF1_git
,F2_git
, etc. (may take awhile, butG
needs to be out sooner) to integrate them intoG
(will there be a problem? do I have to go through the intermediate steps toO_git
, and then via an additional remote toG
?)
Recommendations on the current tools and the sequence above and associated pitfalls are appreciated.