Jul 062007
 

Søren Straarup brought this up today. FreshSource does not link to the right place in CVSWEB for commits to CVSROOT. For example, look at this commit. If you click on the diff link, it goes to the wrong place. It goes to

http://www.freebsd.org/cgi/cvsweb.cgi/CVSROOT/modules.diff?r1=1.18319&r2=1.18318

instead of

http://www.freebsd.org/cgi/cvsweb.cgi/CVSROOT-ports/modules.diff?r1=1.18319&r2=1.18318

After discussions with Simon Nielsen and is Søren Straarup, we found a few fine examples:

The main issue, as I see it now, is to associate the given commit with a particular repository. In the beginning, FreshPorts processed only commits from the ports repository. Then, it started to process all commits, but did not differentiate between the various repository.

The problem is compounted by the cvs-all emails which do not differentiate between the various CVSROOT files. The full path is one most file names, but not on CVSROOT.

What we may be able to do is process the line “FreeBSD .* repository” and use that. It would require a change to the XML template, and some significant processing changes within FreshPorts to grab that value.

This is where the real thinking starts. :) This seems like an AWFUL lot of work just to get the path to the CVSROOT file correct. Perhaps I should just amend the path of such files as they go into the XML and not mess around with the XML otherwise.

What do you suggest?

Website Pin Facebook Twitter Myspace Friendfeed Technorati del.icio.us Digg Google StumbleUpon Premium Responsive

  One Response to “How much is that repo in the window?”

  1. I’m thinking that this code can grab the repo name from the cvs-all email. Any suggested changes?

    sub GetFreeBSDRepository {
        my ($message) = @_;
        my ($FreeBSDRepository) = 'unknown';
    
        my (@lines) = split("\n", $message);
    
        for (@lines) {
            my ($line) = $_;
    
            if ($line =~ /^  FreeBSD \w+? repository/i) {
                $FreeBSDRepository = (split(" ", $line, 3))[1];
                last;
            }
        }
    
        return $FreeBSDRepository;
    }