From 858cbfbabe4ede5f5eba32041eb7448319e53e2a Mon Sep 17 00:00:00 2001 From: Martin Langhoff Date: Wed, 1 Mar 2006 20:03:58 +1300 Subject: [PATCH] cvsserver: Eclipse compat - browsing 'modules' (heads in our case) works Eclipse CVS clients have an odd way of perusing the top level of the repository, by calling update on module "". So reproduce cvs' odd behaviour in the interest of compatibility. It makes it much easier to get a checkout when using Eclipse. --- git-cvsserver.perl | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/git-cvsserver.perl b/git-cvsserver.perl index 344b2f398..3c588c9d6 100755 --- a/git-cvsserver.perl +++ b/git-cvsserver.perl @@ -630,6 +630,26 @@ sub req_update argsplit("update"); + # + # It may just be a client exploring the available heads/modukles + # in that case, list them as top level directories and leave it + # at that. Eclipse uses this technique to offer you a list of + # projects (heads in this case) to checkout. + # + if ($state->{module} eq '') { + print "E cvs update: Updating .\n"; + opendir HEADS, $state->{CVSROOT} . '/refs/heads'; + while (my $head = readdir(HEADS)) { + if (-f $state->{CVSROOT} . '/refs/heads/' . $head) { + print "E cvs update: New directory `$head'\n"; + } + } + closedir HEADS; + print "ok\n"; + return 1; + } + + # Grab a handle to the SQLite db and do any necessary updates my $updater = GITCVS::updater->new($state->{CVSROOT}, $state->{module}, $log); -- 2.26.2