Notes on migrating from CVS to Git (part 2 of ?)

  • when I began moving a second project from CVS, one unexpected difficulty was that Git doesn’t support putting empty directories in version control but CVS does. (I found this because I did a recursive diff of the directory trees checked out from CVS and from Git.) I had to create a hidden file for each such directory that had been in CVS, so that Git would have a file to commit. I called it .keep so it would be a hidden file (on Linux at least), and put a couple of lines inside explaining why it was there.
  • so far the biggest problem has been the SOCKS proxy that our ssh connections have to go through, rather than Git itself. Once someone gets to the point where they can ssh to our server through the proxy using key-based authentication, the worst is usually over.
  • Eclipse has been a pain point:
    • for the EGit plugin in Eclipse to work through the proxy, the environment variable GIT_SSH needs to be set correctly. This causes EGit to use an external ssh implementation instead of its internal one. We had to use ssh keys without a passphrase, because we couldn’t get Eclipse to prompt for one. (I’ve seen other posts that it should – perhaps the behavior changed with Eclipse 4.0?)
    • another oddity: on some systems Eclipse wouldn’t see this environment variable until Windows was rebooted. We’re running Windows 7 64-bit. I did not see this myself, but rebooting has become my go to recommendation when things just aren’t working the way they should.  (It’s Windows, after all.)
  • there’s been a minor recurring difficulty – writing about it. When updating our internal wiki pages: “Git” looks odd, “git” doesn’t look like a name.

The biggest remaining challenge may well be making a part of a CVS repository read-only… So far I’ve found at least 4 ways to do that, and the simple one didn’t work.