git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: synchronizing incremental git changes to cvs

From
Martin Langhoff <martin.langhoff@gmail.com>
Date
May 21, 2006, 00:09 UTC
Message-ID
<46a038f90605201709n3a840fd9n7e85a289f49a3c5f@mail.gmail.com>
In-Reply-To
<87mzdcjqey.fsf@rho.meyering.net>
On 5/21/06, Jim Meyering <jim@meyering.net> wrote:
> Can anyone point me at code to mirror a git repository to cvs?

Ive thought a couple of times about writing an exporter that would replay things into a true CVS repo, but it's truly not worth it. We've already got git-cvsserver that does all that -- better for me to focus on that codebase.

Show 6 quoted lines
> I've experimented with git-cvsexportcommit, and found a few bugs (it
> couldn't handle simple things, like adding a file in a new directory --
> fixed that, along with a few other minor problems), adding an empty file
> in git still gets a patch application error on the cvs side, but I can
> live with that for now.  More seriously, making a change on a git branch
> mistakenly tries to apply the delta on the cvs trunk.

cvsexportcommit is clearly for manual usage, not for automagic usage. It is a bit rough, (and I'd like to see your patches to it!) but it wants to be driven by a smarter script to, for instance, know what branch you want things in.

> Why am I interested?  I want to switch the development of GNU coreutils
> from cvs to git.  I would also like to continue making the repository
> available via cvs, for the sake of continuity.  At worst, I can always
> cut the CVS cord, but that's a last resort.

git-cvsserver is the word. It currently tracks the git repo itself pretty well (perfectly, AFAICS) and it also tracks a git tree that is actually imported daily from CVS -- doing

    CVSrepo ->cvsimport -> GIT -> cvsserver -> CVS checkout

git-cvsserver works great for anon cvs access (does pserver) and TortoiseCVS and cli cvs work great with it. Eclipse works well, but it has been quite hard to get 'right'. Optionally, it can support users with commit rights via ssh. It does track git 'heads' but they don't show up as branches, they show up as different modules. So you to get a checkout of the master branch, you do:

    cvs -d pserver:anonymouys@foo.com:/var/foo.git co master
hope that helps!
martin
Previous: Jakub NarebskiNext: Jim Meyering
Message 6 of 20 in “synchronizing incremental git changes to cvs”
  1. Jim MeyeringMay 20, 2006
  2. Johannes SchindelinMay 20, 2006
  3. Jim MeyeringMay 21, 2006
  4. Pavel RoskinMay 22, 2006
  5. Jakub NarebskiMay 22, 2006
  6. Martin LanghoffMay 21, 2006
  7. Jim MeyeringMay 21, 2006
  8. Junio C HamanoMay 21, 2006
  9. Jim MeyeringMay 21, 2006
  10. don't accept bogus N in `HEAD~N'Jim Meyering, May 21, 2006
  11. Jakub NarebskiMay 21, 2006
  12. Jim MeyeringMay 22, 2006
  13. Junio C HamanoMay 22, 2006
  14. Junio C HamanoMay 22, 2006
  15. avoid atoi, when possible; int overflow -> heap corruptionJim Meyering, May 22, 2006
  16. Morten WelinderMay 22, 2006
  17. Jim MeyeringMay 22, 2006
  18. Jeff KingMay 22, 2006
  19. Morten WelinderMay 22, 2006
  20. detect write failure, even for stdoutJim Meyering, May 22, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.