Forget it ! I should think before posting. It affects only cvs-1.10.7
and appears to be fixed in cvs-1.10.8.
WinCvs betas are running cvs-1.10.7, so I will make an update as soon as
possible.
Regards,
alex.
Alexandre Parenteau wrote:
>
> In main.c of cvs-1.10.8 we have :
>
> /* Create the list. */
> assert (root_directories == NULL);
> root_directories = getlist ();
>
> /* Prime it. */
> if (CVSroot != NULL)
> {
> Node *n;
> n = getnode ();
> n->type = NT_UNKNOWN;
> n->key = xstrdup (CVSroot);
> n->data = NULL;
>
> if (addnode (root_directories, n))
> error (1, 0, "cannot add initial CVSROOT %s", n->key);
> }
>
> But "getlist" has already added a default node inside of type "HEADER".
> So we got *two* nodes in the list when cvs goes the main loop :
>
> while (
> #ifdef SERVER_SUPPORT
> server_active ||
> #endif
> walklist (root_directories, set_root_directory, NULL)
> )
>
> The side effect is that the loop is executed *twice* !!! It takes twice
> the time to update, commit...
>
> A quick fix is :
>
> static int
> set_root_directory (p, ignored)
> Node *p;
> void *ignored;
> {
> > if (current_root == NULL && p->data == NULL && p->type == NT_UNKNOWN)
> < if (current_root == NULL && p->data == NULL)
> {
> current_root = p->key;
> return 1;
> }
> return 0;
> }
>
> alex.