On Fri, Sep 12, 2008 at 06:12:40PM +0200, Johan Herland wrote: > On Friday 12 September 2008, Lars Hjemli wrote: > > On Fri, Sep 12, 2008 at 4:58 PM, Petr Baudis <pasky@xxxxxxx> wrote: > > > it seems that cgit > > > requires all the repositories explicitly listed in the config file. > > > Do you plan to remove this limitation in the future? > > > > Not really, I'd rather add another command (or a commandline option) > > to generate an include-file for cgitrc by scanning directory-trees > > for git repos. I've CC'd Kristian since I believe he's got such a > > script running for freedesktop.org; if so, maybe it could be > > included/used as basis for something similar in cgit? > > Here's a script I wrote for locating repos and generating repo > lists/configs for cgit, gitweb and hgwebdir (yes, this handles hg repos > as well). It works either as a CGI script (producing a list of detected > repos in HTML format), or from the command-line. It's only been tested > on an experimental DVCS server at $dayjob, so you might have to change > things to make it work in your scenario. > > If there is interest in this, I can create a public repo and we can keep > improving on it. Thanks. The script was a bit more scary than I thought, but in the end I managed to generate something. There are trailing dots in project names, but I'm not going to waste time on that anymore - this has long gone over the 20 minutes I originally alotted the project anyway; I hope cgit will gain a builtin capability for this in the future, since this is still quite a pain. Attached is a random patch for your script I had to use, FWIW. Unfortunately, the recommended RewriteRule is not working - it does not play well together with query parameters cgit is using, so e.g. browsing past commits does not work. What RewriteRule should I use instead? -- Petr "Pasky" Baudis The next generation of interesting software will be done on the Macintosh, not the IBM PC. -- Bill Gates
--- repofinder-orig.py 2008-09-13 00:44:22.000000000 +0200 +++ repofinder.py 2008-09-13 00:44:47.000000000 +0200 @@ -244,7 +244,7 @@ if (self.group): assert name.startswith(self.group.path) name = name[len(self.group.path):] - name = name.strip("/") + name = name.strip("/srv/git/") self._name = self.nameFromPath(name) return self._name name = property(getName) @@ -267,7 +267,10 @@ """Return a (name, email) tuple with our best guess as to who owns this repo """ - return (self.ownerName, self.ownerEmail) + __o = self.ownerName + if (__o is None): + __o = '' + return (__o, self.ownerEmail) owner = property(getOwner) def getDescription (self): @@ -286,14 +289,15 @@ @staticmethod def nameFromPath (path): - if path.endswith(".git"): path = path[:-4] + if path.endswith(".git"): path = path[:-5] path = path.rstrip("/") return path @staticmethod def cloneUrlFromPath (path): if path.endswith("/.git"): path = path[:-5] - return "ssh://%s%s" % (Settings['ServerName'], path) + path = path.strip("/srv/git") + return "git://%s/%sgit" % (Settings['ServerName'], path) def __init__ (self, path): Repo.__init__(self, path) @@ -316,6 +320,9 @@ def getOwnerEmail (self): if self._ownerEmail is None: self._ownerEmail = self.config.get("user.email") + if self._ownerEmail is None: + try: self._ownerEmail = open(os.path.join(self.path, "owner")).read().strip() + except: pass return Repo.getOwnerEmail(self) ownerEmail = property(getOwnerEmail) @@ -592,12 +599,12 @@ for repo in sorted(group.repos): url = repo.path if url.endswith("/.git"): url = url[:-5] - url = url.strip("/") + url = url.strip("/srv/git/") print >>self.f, "repo.url=%s" % (url) print >>self.f, "repo.path=%s" % (repo.path) print >>self.f, "repo.name=%s" % (repo.name) print >>self.f, "repo.desc=%s" % (repo.description) - print >>self.f, "repo.owner=%s <%s>" % repo.owner + print >>self.f, "repo.owner=%s%s" % repo.owner print >>self.f, "repo.clone-url=%s" % (repo.clone) print >>self.f, ""