gitcvs2git

Determining how cvs2git converted CVS trees


I successfully converted and imported into git an eight-year old CVS master tree which contains individual CVS projects. I am trying to figure out what the cvs2git conversion did to the individual CVS repositories.

Fortunately, I still have the master CVS tree and have not deployed anything, so I can do this again. I'm looking for git commands that will let me explore what I converted, so I can tell if I should have converted each CVS repository separately.


Solution

  • You can verify what cvs2git did by issuing git log against one of your subprojects:

    git log -- <directory>
    

    If that command returns a full history, cvs2git merged all your subprojects into one. Based on your comments this looks to be the case.

    You've now got a choice: Fracture the repo or keep it combined? This isn't always a clear-cut decision, and the motivations for fracturing a repo in CVS are different than they are in git.

    I recommend trying your new git repository for a couple of weeks, without fracturing it into submodules, subtrees, or nested repositories. This will get you comfortable with common git commands, and let you try out some great git features like git bisect, which are more difficult to use when you nest projects. Additionally, I suspect you'll find branching and particularly merging to be stupidly easy in comparison to CVS. It might be the case that you don't need to fracture the repository at all.

    If you decide you want to do so, give some other answers on the topic a read. Splitting the repo itself is easy. Here's a simple tutorial from github. A quick google search will turn up quite a few more.