Re: [PATCH] cvsserver: Add support for packed refs
- From
Lars Noschinski <lars@public.noschinski.de>
- Date
- Jul 17, 2008, 12:40 UTC
- Message-ID
- <20080717124034.GA10589@lars.home.noschinski.de>
- In-Reply-To
- <alpine.LSU.1.00.0807171346560.3486@wbgn129.biozentrum.uni-wuerzburg.de>
Hello!
* Johannes Schindelin <Johannes.Schindelin@gmx.de> [08-07-17 14:31]:
Show 40 quoted lines
>On Thu, 17 Jul 2008, Lars Noschinski wrote:
>
>> req_update still parses /refs/heads manually. Replace this by
>> a call to show-ref.
>>
>> Signed-off-by: Lars Noschinski <lars@public.noschinski.de>
>> ---
>> git-cvsserver.perl | 25 +++++++++----------------
>> 1 files changed, 9 insertions(+), 16 deletions(-)
>>
>> diff --git a/git-cvsserver.perl b/git-cvsserver.perl
>> index b00d1c2..0e4f5f9 100755
>> --- a/git-cvsserver.perl
>> +++ b/git-cvsserver.perl
>> @@ -947,24 +947,17 @@ sub req_update
>> # projects (heads in this case) to checkout.
>> #
>> if ($state->{module} eq '') {
>> - my $heads_dir = $state->{CVSROOT} . '/refs/heads';
>> - if (!opendir HEADS, $heads_dir) {
>> - print "E [server aborted]: Failed to open directory, "
>> - . "$heads_dir: $!\nerror\n";
>> - return 0;
>> - }
>> - print "E cvs update: Updating .\n";
>> - 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;
>> + my $showref = `git show-ref --heads`;
>> + for my $line (split '\n', $showref) {
>> + if ( $line =~ m% refs/heads/(.*)$% ) {
>> + print "M $1\t$1\n";
>
>In the removed part, I see that this changes behaviour from "E cvs update:
>..." to "M ...".Good catch, this part is indeed somewhat busted. The tested clients did not care, but this should be changed nevertheless to be the same as the old behaviour.
Show 5 quoted lines
>I do not know the CVS protocol well enough to know if that is still >correct. > >BTW from the removed part, it seems that the indentation was done with >tabs formerly, and with spaces now; please use tabs instead.
Actually, the old indetation was wrong. The biggest part of the file (and the surrounding code) is indented by spaces.