savannah-hackers-public
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Savannah-hackers-public] Re: mirroring cvs to git *on* savannah


From: Sylvain Beucler
Subject: [Savannah-hackers-public] Re: mirroring cvs to git *on* savannah
Date: Mon, 13 Aug 2007 13:54:40 +0200
User-agent: Mutt/1.5.13 (2006-08-11)

On Fri, Aug 10, 2007 at 01:34:02PM +0200, Jim Meyering wrote:
> I plan to mirror a few CVS repositories to git, keeping the entire process
> local to savannah.  Before now, I've been mirroring gnulib and emacs
> on my desktop and pushing from the resulting git repo to savannah, but
> automating that is suboptimal for a few reasons: security, since you have
> to choose between using a passwordless ssh key (never! for something like)
> and hard-coding an ssh password into some sort of script (even worse).
> Plus, it's not as reliable if things are remote: network/desktop problems
> stop the mirror.
> 
> Tools needed: cvs, rsync, cvsps, git (including git-cvsimport, etc.),
> GNU find+xargs.  All but cvsps were already installed.  I did apt-get
> install cvsps to install it in the top-level vserver, but then thought it
> might be better to do it in the cvs vserver.  There, that same command
> would have pulled in a cvs update, so I didn't do it, and for now, I'll
> be experimenting from the top-level one instead.
> [if someone can okay updating /usr/bin/cvs in the cvs vserver,
>  I'll resume working there ]

It's not updating, it's a new install :)

CVS is manually installed (see
http://savannah.gnu.org/maintenance/ManuallyInstalledPackages , namely
it has a backported security patch to prevent remote repository
creation).

You could can either manually install cvsps (but I'd rather reduce the
number of manually installed packages instead of growing it), or use
the 'equivs' Debian package to create a fake CVS package. Here's the
configuration I used to fake the presence of Java a year ago:

Install:
 aptitude install equivs
 equivs-control java-gcj-compat-empty

# file: java-gcj-compat-empty
Package: java-gcj-compat-empty
Maintainer: Sylvain Beucler <address@hidden>
Provides: java-gcj-compat
Description: Empty/fake package to trick backports.org's OOo2

Then:
 equivs-build java-gcj-compat-empty
 dpkg -i java-gcj-compat-empty_1.0_all.deb


If you make changes to the installation, please update ~/infra/cvs.txt
(check ~/infra.README along the way :)).


> I expect to run a root cron job that su's to nobody.
> It will maintain an rsync'd copy of each repository in
> /var/tmp/c2g-mirror, as well as the resulting .git repo.
> The repo sizes are negligible compared to available space (380GB):

The available space is not the only factor to take into account -
backups come to mind :) But indeed disk space should not be a problem
here.


> The .git repository sizes:
> 
>      13M  gnulib/.git
>     203M  emacs/.git
> 
> The cvs repositories:
> 
>      45M  /vservers/cvs/sources/gnulib/gnulib
>     436M  /vservers/cvs/sources/emacs/emacs/
> 
> Unless someone has a better idea, I'll put the two bourne shell
> scripts I use in /usr/local/bin.
> 
> Any objections?  If so, now's the time to speak up.

At a time, I wondered if the Git people had a recommended procedure
for this kind of mirroring (eg had a ready-to-use tool). Is that the
case, or are you using something custom?

I don't like the fact that files are owned by nobody (other nobody
processes may then mess with them). Maybe you could create special
users that are part of the project group, as in the CVS rsync
replication script (such as user libcrsync).


Cheers,

-- 
Sylvain




reply via email to

[Prev in Thread] Current Thread [Next in Thread]