views:

46

answers:

2

I have several projects on my development system - some projects are open source, and (herein lies the 'problem'), use their own revision control system (RCS).

At last count, the different RCSs on my development machine are:

  • CVS
  • SVN
  • mercurial
  • git
  • ...

Its difficult enough, trying to remember and master the commands for a single system - so I am considering 'ditching' them all and settling for one - well not quite ditching them all, I'll explain further.

Ideally, I would like to:

  • have ONE system which I use for everything - i.e. checking in my code changes and running diffs against previous versions stored in MY repository. I call this my MASTER RCS

  • still be able to update the code in a specific project - using whatever revision control system its authors are using (mercurial, git or whatever), after I have resolved any conflicts etc and made sure that the updated code builds, then I want to check the updated code into my MASTER RCS. This will of course mean that I will need to keep around the different RCS which I will call the SLAVE RCS.

In terms of backing up stuff, its only the data stored in the MASTER RCS that I will back up.

Now for my question:

Is the scheme I propose possibly? (I can't see why not) - but there may be gotchas that I may not be aware of - I will appreciate any tips on what to be aware of and what to avoid.

BTW, I am thinking of using SVN as the MASTER RCS. If you can think of reasons of not using SVN (i.e. choosing another MASTER RCS) I'd be interested in hearing your reasons.

A: 

Your idea of using SVN as the MASTER RCS sounds good to me too. Given that there are tools like git-svn (allows using git and svn together) and HgSubversion (http://mercurial.selenic.com/wiki/WorkingWithSubversion) available, you should be able to get this setup done.

A: 

You might be interested by following the Amp project:

  • Common API to all repository formats.
  • will include (not there yet) git, bazaar, svn, cvs, darcs In Ruby. 100% Compatible

Today it wraps Mercurial commands. Tomorrow, it will wrap many VCS.


Right now, you can use SVN as a common repo.

Another approach I like is to:

  • get a workspace from any VCS tool I happen to have to use for a given project (Perforce, ClearCase, CVS, SVN, ...)
  • git init at the root directory of that workspace (effectively creating a git repo within the workspace)
  • hack and develop in this Git repo
  • once the code is stable, commit in the native VCS way directly from the same workspace.

See for instance this question.
No server to setup. No .svn all over my directories. Only one set of commands to use: git.

VonC
Sounds good in theory, but I'll play it safe and go with what I know - for now, i.e. SVN.
morpheous