summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 5793aa1)
raw | patch | inline | side by side (parent: 5793aa1)
author | Martin Langhoff <martin@catalyst.net.nz> | |
Wed, 1 Mar 2006 07:03:58 +0000 (20:03 +1300) | ||
committer | Martin Langhoff <martin@catalyst.net.nz> | |
Wed, 1 Mar 2006 08:07:55 +0000 (21:07 +1300) |
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.
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 | patch | blob | history |
diff --git a/git-cvsserver.perl b/git-cvsserver.perl
index 33fcc1156b2f0068e9d8abba7788935137cc8965..20a9baeb7169e4649ecf55f462afaf01ef5f1c4e 100755 (executable)
--- a/git-cvsserver.perl
+++ b/git-cvsserver.perl
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);