* git-cvsserver wart?
@ 2006-05-25 16:42 Cameron McBride
2006-05-25 21:19 ` Martin Langhoff
0 siblings, 1 reply; 8+ messages in thread
From: Cameron McBride @ 2006-05-25 16:42 UTC (permalink / raw)
To: git
I'm a new git user, so if I'm doing something boneheaed - sharp kicks
are welcome.
For reasons I won't go into, the ability to use cvs clients is darn
near crucial. Although most development is local (where I install /
use git), pulling down the latest updates and pushing up minor changes
via CVS is helpful at remote locations where I don't want to maintain
clients. Git with git-cvsserver makes this very nice. Thanks to
all!
Now, the problem I ran into:
code/ntropy> cvs up
Can't use an undefined value as an ARRAY reference at
/usr/local/bin/git-cvsserver line 761.
closing dbh with active statement handles
cvs [update aborted]: end of file from server (consult above messages if any)
code/ntropy> cvs -v
Concurrent Versions System (CVS) 1.11.1p1 (client/server)
Doing a 'cvs up -dP' (or either of the two individually) seems to work fine.
so, it's an old client, a newer client doesn't have this problem. a
bare 'cvs up' works fine on:
Concurrent Versions System (CVS) 1.11.17 (client/server)
Just to be clear, it appears everything gets updated with the
workaround - but there might be something else amiss, so I thought it
was worth mentioning.
Cameron
p.s. I'm assuming the following statement is harmless (it's always present):
closing dbh with active statement handles
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: git-cvsserver wart?
2006-05-25 16:42 git-cvsserver wart? Cameron McBride
@ 2006-05-25 21:19 ` Martin Langhoff
2006-05-26 3:11 ` Cameron McBride
0 siblings, 1 reply; 8+ messages in thread
From: Martin Langhoff @ 2006-05-25 21:19 UTC (permalink / raw)
To: Cameron McBride; +Cc: git
On 5/26/06, Cameron McBride <cameron.mcbride@gmail.com> wrote:
> For reasons I won't go into, the ability to use cvs clients is darn
> near crucial. Although most development is local (where I install /
> use git), pulling down the latest updates and pushing up minor changes
> via CVS is helpful at remote locations where I don't want to maintain
> clients. Git with git-cvsserver makes this very nice. Thanks to
> all!
NP!
There's been some recent changes to cvsserver -- so version info is
crucial. What git version are you using? Can you try with the lastest
#master head from Junio? That's the latest and greatest...
If that doesn't fix it, can you post the logs? I think you have to
declare CVS_LOG=/tmp/cvslog or somesuch.
> code/ntropy> cvs -v
> Concurrent Versions System (CVS) 1.11.1p1 (client/server)
We've developed it testing against 1.12.9 from debian and 1.11.20 from
MacOSX/fink.
> so, it's an old client, a newer client doesn't have this problem. a
> bare 'cvs up' works fine on:
> Concurrent Versions System (CVS) 1.11.17 (client/server)
Ah! Then capturing the logs of the working and non-working clients,
and comparing them can probably help. Can you capture and post the
relevant parts of the log...?
> p.s. I'm assuming the following statement is harmless (it's always present):
> closing dbh with active statement handles
Yup. Harmless indeed. They way we are using prepared statements, I
don't know how to avoid it :-/ -- suggestions welcome.
cheers,
martin
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: git-cvsserver wart?
2006-05-25 21:19 ` Martin Langhoff
@ 2006-05-26 3:11 ` Cameron McBride
2006-05-26 3:23 ` Martin Langhoff
2006-05-26 3:24 ` Cameron McBride
0 siblings, 2 replies; 8+ messages in thread
From: Cameron McBride @ 2006-05-26 3:11 UTC (permalink / raw)
To: Martin Langhoff, git
On 5/25/06, Martin Langhoff <martin.langhoff@gmail.com> wrote:
> On 5/26/06, Cameron McBride <cameron.mcbride@gmail.com> wrote:
> There's been some recent changes to cvsserver -- so version info is
> crucial. What git version are you using? Can you try with the lastest
> #master head from Junio? That's the latest and greatest...
sorry, my bad. This error was discovered using the git stable, v1.3.3.
Grabbing the latest at git://git.kernel.org/pub/scm/git/git.git
showed the same problem.
> If that doesn't fix it, can you post the logs? I think you have to
> declare CVS_LOG=/tmp/cvslog or somesuch.
I'm assuming you mean the log from git-cvsserver (set via git/config
with logfile=...)
Besides the log cutoff in the broken attempt, it appears the culprit
is a lack of arguments being passed down as that is the only
difference in the logs. Specifically, the working versions output
'Arguments : (something) ' which seemed to come from the
req_Argument()
subroutine around line 550 (in the case of newer CVS, the output is '--').
Anyhow, the error seems to be that $state->{args} is not getting
initialized. In the newer version, there seemed to be additional
uninitialized variables, e.g. $state->{prependdir}. These might be
signs of some larger problem (where the $state isn't getting set
properly).
To quiet it down and get it to run - a crude hack seemed to work
(included below). I didn't test any of this much, nor do I really
understand the whole of what's going on - my alterations just seemed
to allow 'cvs up' to complete without errors or warnings from both
clients. Not a very robust criteria, so please review.
Cameron
--
diff --git a/git-cvsserver.perl b/git-cvsserver.perl
index 5ccca4f..a52e838 100755
--- a/git-cvsserver.perl
+++ b/git-cvsserver.perl
@@ -1702,6 +1702,7 @@ sub argsfromdir
{
my $updater = shift;
+ $state->{args} = [] unless defined($state->{args});
$state->{args} = [] if ( scalar(@{$state->{args}}) == 1 and
$state->{args}[0] eq "." );
return if ( scalar ( @{$state->{args}} ) > 1 );
@@ -1729,7 +1730,11 @@ sub argsfromdir
foreach my $file ( @{$updater->gethead} )
{
next if ( $file->{filehash} eq "deleted" and not defined
( $state->{entries}{$file->{name}} ) );
- next unless ( $file->{name} =~ s/^$state->{prependdir}// );
+ if( defined($state->{prependdir} ) )
+ {
+ $file->{name} =~ s/^$state->{prependdir}//;
+ }
+ next unless ( $file->{name} );
push @{$state->{args}}, $file->{name};
}
}
@@ -1812,7 +1817,7 @@ sub filenamesplit
( $filepart, $dirpart ) = ( $2, $1 ) if ( $filename =~ /(.*)\/(.*)/ );
$dirpart .= "/";
- if ( $fixforlocaldir )
+ if ( $fixforlocaldir and defined($state->{prependdir}))
{
$dirpart =~ s/^$state->{prependdir}//;
}
@@ -1832,7 +1837,10 @@ sub filecleanup
}
$filename =~ s/^\.\///g;
- $filename = $state->{prependdir} . $filename;
+ if( defined($state->{prependdir}) )
+ {
+ $filename = $state->{prependdir} . $filename;
+ }
return $filename;
}
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: git-cvsserver wart?
2006-05-26 3:11 ` Cameron McBride
@ 2006-05-26 3:23 ` Martin Langhoff
2006-05-26 3:57 ` Cameron McBride
2006-05-26 3:24 ` Cameron McBride
1 sibling, 1 reply; 8+ messages in thread
From: Martin Langhoff @ 2006-05-26 3:23 UTC (permalink / raw)
To: Cameron McBride; +Cc: git
On 5/26/06, Cameron McBride <cameron.mcbride@gmail.com> wrote:
> sorry, my bad. This error was discovered using the git stable, v1.3.3.
> Grabbing the latest at git://git.kernel.org/pub/scm/git/git.git
> showed the same problem.
Ok. You might want to retain that latest, it has some further fixes ;-)
> > If that doesn't fix it, can you post the logs? I think you have to
> > declare CVS_LOG=/tmp/cvslog or somesuch.
>
> I'm assuming you mean the log from git-cvsserver (set via git/config
> with logfile=...)
I was actually thinking of setting the environment at the client end:
CVS_CLIENT_LOG,
http://cvsbook.red-bean.com/cvsbook.html#$CVS_CLIENT_LOG but it looks
like you've got it mostly sorted.
> Besides the log cutoff in the broken attempt, it appears the culprit
> is a lack of arguments being passed down as that is the only
> difference in the logs.
Yes, I was guessing as much. I am still curious about what parameters
(and in what order) cvs 1.11.7 sends...
> To quiet it down and get it to run - a crude hack seemed to work
It looks reasonable as a means to shut it up, but perhaps if we can
figure out what the client is telling us... ;-)
martin
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: git-cvsserver wart?
2006-05-26 3:11 ` Cameron McBride
2006-05-26 3:23 ` Martin Langhoff
@ 2006-05-26 3:24 ` Cameron McBride
2006-05-26 3:28 ` Martin Langhoff
1 sibling, 1 reply; 8+ messages in thread
From: Cameron McBride @ 2006-05-26 3:24 UTC (permalink / raw)
To: Martin Langhoff, git
Does cvs commit upstream work? In my testing, I can't get 'cvs ci' to
function on a git repo.
This seems to be broken with v1.3.3 and latest 1.3.3.ged90. The cvs
clients are the same as before 1.11.1p1 and 1.11.17
The cvs client exits with:
Index already exists in git repo
The log (for git version 1.3.3.ged90):
INFO - --------------- STARTING -----------------
DEBUG - Temporary directory is '/tmp/UvaWwud8fs'
DEBUG - req_Root : /export/home/cameron/ws/git_test/ntropy.git
DEBUG - req_Validresponses : ok error Valid-requests Checked-in
New-entry Checksum Copy-file Updated Created Update-existing Merged
Patched Rcs-diff Mode Mod-time Removed Remove-entry
Set-static-directory Clear-static-directory Set-sticky Clear-sticky
Template Set-checkin-prog Set-update-prog Notified Module-expansion
Wrapper-rcsOption M Mbinary E F MT DEBUG -
req_validrequests
DEBUG - SEND : Valid-requests remove add status Entry watchers ci tag
log co Modified Questionable admin Root history valid-requests
Global_option Argumentx annotate Valid-responses Unchanged Directory
rlog Argument expand-modules diff editors update
DEBUG - SEND : ok
DEBUG - Argument : -m
DEBUG - Argument : ncsa mod
DEBUG - req_Directory : localdir=.
repository=/export/home/cameron/ws/git_test/ntropy.git/master path=
directory= module=master
INFO - Received entry line '/README/1.7///' => 'README'
DEBUG - Argument : README
INFO - req_ci : [NULL]
WARN - file 'index' already exists in the git repository
Let me know if any additional information is useful, I didn't have
much time to dig into this.
Cameron
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: git-cvsserver wart?
2006-05-26 3:24 ` Cameron McBride
@ 2006-05-26 3:28 ` Martin Langhoff
2006-05-26 3:34 ` Cameron McBride
0 siblings, 1 reply; 8+ messages in thread
From: Martin Langhoff @ 2006-05-26 3:28 UTC (permalink / raw)
To: Cameron McBride; +Cc: git
On 5/26/06, Cameron McBride <cameron.mcbride@gmail.com> wrote:
> WARN - file 'index' already exists in the git repository
This warning means that you are running git-cvsserver off a repo where
you also have a checkout. git-cvsserver really expects to be running
off a 'naked' or 'bare' repo. For read only ops I think it kind-of
works in a 'checkout' repo, but commits are a different story.
cheers,
m
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: git-cvsserver wart?
2006-05-26 3:28 ` Martin Langhoff
@ 2006-05-26 3:34 ` Cameron McBride
0 siblings, 0 replies; 8+ messages in thread
From: Cameron McBride @ 2006-05-26 3:34 UTC (permalink / raw)
To: Martin Langhoff, git
On 5/25/06, Martin Langhoff <martin.langhoff@gmail.com> wrote:
> On 5/26/06, Cameron McBride <cameron.mcbride@gmail.com> wrote:
> > WARN - file 'index' already exists in the git repository
>
> This warning means that you are running git-cvsserver off a repo where
> you also have a checkout. git-cvsserver really expects to be running
> off a 'naked' or 'bare' repo. For read only ops I think it kind-of
> works in a 'checkout' repo, but commits are a different story.
hmmm, it is supposed to be a bare repo. perhaps I flubbed something
up. Can I safely delete this index file? It's in the repo.git
directory. Perhaps it got created on the initial import from CVS
(using cvsimport and cvsps)?
Cameron
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: git-cvsserver wart?
2006-05-26 3:23 ` Martin Langhoff
@ 2006-05-26 3:57 ` Cameron McBride
0 siblings, 0 replies; 8+ messages in thread
From: Cameron McBride @ 2006-05-26 3:57 UTC (permalink / raw)
To: Martin Langhoff; +Cc: git
On 5/25/06, Martin Langhoff <martin.langhoff@gmail.com> wrote:
> On 5/26/06, Cameron McBride <cameron.mcbride@gmail.com> wrote:
> Ok. You might want to retain that latest, it has some further fixes ;-)
sounds good.
> Yes, I was guessing as much. I am still curious about what parameters
> (and in what order) cvs 1.11.7 sends...
sure! now that I know CVS_CLIENT_LOG exists ... ;)
It points in basically the same direction, which is to say the newer
client passes an 'Argument -- ' which is what git-cvsserver seems to
be choking on.
The 'in' versions of the two
noup: cvs 1.11.1p1 that failed plane cvs update
work: cvs 1.11.17 that worked
--- cvs_noup.log.in 2006-05-25 23:44:21.000000000 -0400
+++ cvs_work.log.in 2006-05-25 23:48:38.000000000 -0400
@@ -1,6 +1,7 @@
Root /export/home/cameron/ws/git_test/ntropy.git
-Valid-responses ok error Valid-requests Checked-in New-entry Checksum
Copy-file Updated Created Update-existing Merged Patched Rcs-diff Mode
Mod-time Removed Remove-entry Set-static-directory
Clear-static-directory Set-sticky Clear-sticky Template
Set-checkin-prog Set-update-prog Notified Module-expansion
Wrapper-rcsOption M Mbinary E F MT
+Valid-responses ok error Valid-requests Checked-in New-entry Checksum
Copy-file Updated Created Update-existing Merged Patched Rcs-diff Mode
Mod-time Removed Remove-entry Set-static-directory
Clear-static-directory Set-sticky Clear-sticky Template Notified
Module-expansion Wrapper-rcsOption M Mbinary E F MT
valid-requests
+Argument --
Directory .
/export/home/cameron/ws/git_test/ntropy.git/master
Entry /.gitignore/1.1///
Thanks for your help!
Cameron
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2006-05-26 3:58 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-25 16:42 git-cvsserver wart? Cameron McBride
2006-05-25 21:19 ` Martin Langhoff
2006-05-26 3:11 ` Cameron McBride
2006-05-26 3:23 ` Martin Langhoff
2006-05-26 3:57 ` Cameron McBride
2006-05-26 3:24 ` Cameron McBride
2006-05-26 3:28 ` Martin Langhoff
2006-05-26 3:34 ` Cameron McBride
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).