bug-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Request for comments on 'Extending CVS with offline/disconnected ope


From: Stefan Monnier
Subject: Re: Request for comments on 'Extending CVS with offline/disconnected operations'
Date: 29 May 2003 14:15:50 -0400
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3.50

> I think I would write a wrapper script around CVS calls for any email-based
> transport.  The rest of it I'd like to see implemented, but I don't have
> time right now to do it myself.  If anyone submitted fairly complete
> patches, I'd be happy to review and maybe commit them.

A while ago, I sent patches to make `add' and `remove' local operations.
There were the following problems:

- `cvs add <dir>' still needed remote access.  Getting rid of this case
  requires changes in the `commit' part of the server to automatically
  create a directory in the repository when needed.  I didn't bother with it.

- `cvs add <removedfile>' fails to resurrect the file (because it
  needs to connect to the server, but it didn't).


        Stefan


I haven't updated the patches.  For `cvs rm' it was just:

--- /home/monnier/install/cvs/src/remove.c.~1.48~       Thu May 29 14:11:33 2003
+++ /home/monnier/install/cvs/src/.#remove.c.1.48       Sun Jul  8 20:27:17 2001
@@ -76,7 +76,7 @@
 
     wrap_setup ();
 
-#ifdef CLIENT_SUPPORT
+#if 0
     if (current_parsed_root->isremote) {
        /* Call expand_wild so that the local removal of files will
            work.  It's ok to do it always because we have to send the
@@ -113,7 +113,7 @@
     err = start_recursion (remove_fileproc, (FILESDONEPROC) NULL,
                            remove_dirproc, (DIRLEAVEPROC) NULL, NULL,
                           argc, argv,
-                           local, W_LOCAL, 0, 1, (char *) NULL, 1);
+                           local, W_LOCAL, 0, !client_active, (char *) NULL, 
1);
 
     if (removed_files && !really_quiet)
        error (0, 0, "use '%s commit' to remove %s permanently", program_name,

For `cvs add':

--- src/add.c   30 Apr 2003 17:24:07 -0000      1.85
+++ src/add.c   29 May 2003 18:15:10 -0000
@@ -59,6 +59,7 @@
     /* Nonzero if we found a slash, and are thus adding files in a
        subdirectory.  */
     int found_slash = 0;
+    int found_dir = 0;
     size_t cvsroot_len;
 
     if (argc == 1 || argc == -1)
@@ -119,6 +120,7 @@
        {
            char *p;
            p = argv[i];
+           if (isdir (p)) found_dir = 1;
            while (*p != '\0')
            {
                if (ISDIRSEP (*p))
@@ -148,7 +150,7 @@
     }
 
 #ifdef CLIENT_SUPPORT
-    if (current_parsed_root->isremote)
+    if (current_parsed_root->isremote && found_dir)
     {
        int j;
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]