Here is the diff for fixing caching problems for GIDs, UIDs, etc:
===================================================================
RCS file: /home/repositories/freshports-1/scripts/caching.pm,v
retrieving revision 1.3
diff -r1.3 caching.pm
54a55,75
> sub RemoveFileFromCache($;$) {
> my $this = shift;
> my $file_name = shift;
>
> my $CachingFile = $FreshPorts::Config::CachingRoot . '/cache/ports/' . $file_name . '.*.html';
>
> print "checking cache for '$CachingFile'\n";
> my @CacheEntries = glob($CachingFile);
> if (scalar @CacheEntries) {
> print "cache items exists. removing them\n";
>
> foreach my $file (@CacheEntries) {
> if (!unlink($file)) {
> print "!!!unable to delete $file\n";
> }
> }
> } else {
> print "nothing in the cache to remove\n"
> }
> }
>
65d85
< my $port;
79c99,127
< print "This commit had nothing that needs to be removed from the cache\n";
---
> print "This commit had no ports that need to be removed from the cache\n";
> }
>
> return $ErrorFound;
> }
>
> sub RemoveFilesFromCache($) {
> my $this = shift;
> #
> # given the files touched by this commit
> # remove each one from the cache
> #
>
> my $FilesRef = shift;
> my %Files = %{$FilesRef};
>
> my $error;
> my $ErrorFound = 0;
>
> if (scalar %Files) {
> print "# # # # Removing files from the cache # # # #\n\n";
> while (my ($candidate, ) = each %Files) {
> print "$candidate\n";
>
> $this->RemoveFileFromCache($candidate);
> }
> print "\n# # # # Finished: Removing files from the cache # # # #\n\n";
> } else {
> print "This commit had no files that need to be removed from the cache\n";
Index: observer_commits.pm
===================================================================
RCS file: /home/repositories/freshports-1/scripts/observer_commits.pm,v
retrieving revision 1.4
diff -r1.4 observer_commits.pm
14a15
> my %FilesCacheRemove;
86c87
< print "Observer will clear the following items from cache after the commit:\n";
---
> print "Observer will clear the following ports from cache after the commit:\n";
97a99,110
>
> print "Observer will clear the following files from cache after the commit:\n";
> my @Files = @{$params{Files}};
> foreach $value (@Files) {
> my ($action, $filename, $revision, $commit_log_element_id, $element_id) = @$value;
> my ($subtree, $category_name, $port_name, $extra) = split/\//,$filename, 4;
> # look for special files outside a port, such as LEGAL, GIDs, UIDs
> if ($subtree eq $FreshPorts::Config::ports_prefix && defined($category_name) && !defined($port_name)) {
> $FilesCacheRemove{"$category_name"} = "$category_name";
> print "$category_name\n";
> }
> }
106a120
> $Caching->RemoveFilesFromCache(\%FilesCacheRemove);
Index: xml_munge.pm
===================================================================
RCS file: /home/repositories/freshports-1/scripts/xml_munge.pm,v
retrieving revision 1.8
diff -r1.8 xml_munge.pm
389c389
< (message_id => $Updates{MessageId}, CommitLogPorts => \%CommitLogPorts) );
---
> (message_id => $Updates{MessageId}, CommitLogPorts => \%CommitLogPorts, Files => \@Files));