cvs-cvs
[Top][All Lists]
Advanced

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

[Cvs-cvs] ccvs/src ChangeLog add.c base.c base.h client.c... [signed-com


From: Derek Robert Price
Subject: [Cvs-cvs] ccvs/src ChangeLog add.c base.c base.h client.c... [signed-commits2]
Date: Mon, 12 Dec 2005 19:37:33 +0000

CVSROOT:        /cvsroot/cvs
Module name:    ccvs
Branch:         signed-commits2
Changes by:     Derek Robert Price <address@hidden>     05/12/12 19:37:33

Modified files:
        src            : ChangeLog add.c base.c base.h client.c update.c 

Log message:
        Simplify protocol slightly.
        * add.c (add), update.c (join_file): Use temp files rather than base
        files for resurrection and additions via join.
        * base.c (temp_checkout): Export function.
        (ibase_copy): Factor from...
        (base_copy): ...here.
        (temp_copy): New function.
        * base.h (temp_checkout, temp_copy): New functions.
        * client.c (client_base_copy): Work with temp files when necessary.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/ChangeLog.diff?only_with_tag=signed-commits2&tr1=1.3306.2.45&tr2=1.3306.2.46&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/add.c.diff?only_with_tag=signed-commits2&tr1=1.121.4.4&tr2=1.121.4.5&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/base.c.diff?only_with_tag=signed-commits2&tr1=1.1.2.12&tr2=1.1.2.13&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/base.h.diff?only_with_tag=signed-commits2&tr1=1.1.2.7&tr2=1.1.2.8&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/client.c.diff?only_with_tag=signed-commits2&tr1=1.433.4.20&tr2=1.433.4.21&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/update.c.diff?only_with_tag=signed-commits2&tr1=1.256.4.14&tr2=1.256.4.15&r1=text&r2=text

Patches:
Index: ccvs/src/ChangeLog
diff -u ccvs/src/ChangeLog:1.3306.2.45 ccvs/src/ChangeLog:1.3306.2.46
--- ccvs/src/ChangeLog:1.3306.2.45      Sat Dec 10 16:40:27 2005
+++ ccvs/src/ChangeLog  Mon Dec 12 19:37:32 2005
@@ -1,3 +1,15 @@
+2005-12-12  Derek Price  <address@hidden>
+
+       Simplify protocol slightly.
+       * add.c (add), update.c (join_file): Use temp files rather than base
+       files for resurrection and additions via join.
+       * base.c (temp_checkout): Export function.
+       (ibase_copy): Factor from...
+       (base_copy): ...here.
+       (temp_copy): New function.
+       * base.h (temp_checkout, temp_copy): New functions.
+       * client.c (client_base_copy): Work with temp files when necessary.
+       
 2005-12-10  Derek Price  <address@hidden>
 
        * sanity.sh: Minor corrections for nobase testing.
Index: ccvs/src/add.c
diff -u ccvs/src/add.c:1.121.4.4 ccvs/src/add.c:1.121.4.5
--- ccvs/src/add.c:1.121.4.4    Fri Dec  2 21:12:44 2005
+++ ccvs/src/add.c      Mon Dec 12 19:37:33 2005
@@ -474,7 +474,7 @@
                             */
                            char *prev = previous_rev (vers->srcfile,
                                                       vers->vn_rcs);
-                           int status;
+                           char *tempfile;
                            if (prev == NULL)
                            {
                                /* There is no previous revision.  Either:
@@ -498,11 +498,11 @@
                                error (0, 0,
 "Resurrecting file `%s' from revision %s.",
                                       finfo.fullname, prev);
-                           status = base_checkout (vers->srcfile, &finfo,
-                                                   NULL, prev, NULL,
-                                                   vers->tag,
-                                                   NULL, vers->options);
-                           if (status != 0)
+                           tempfile = temp_checkout (vers->srcfile, &finfo,
+                                                     NULL, prev, NULL,
+                                                     vers->tag,
+                                                     NULL, vers->options);
+                           if (!tempfile)
                            {
                                error (0, 0, "Failed to resurrect revision %s",
                                       prev);
@@ -513,10 +513,11 @@
                                /* I don't actually set vers->ts_user here
                                 * because it would confuse server_update ().
                                 */
-                               base_copy (&finfo, prev, "nyd");
+                               temp_copy (&finfo, "ny", tempfile);
                                timestamp = time_stamp (finfo.file);
                                if (!really_quiet)
                                    write_letter (&finfo, 'U');
+                               free (tempfile);
                            }
                            free (prev);
                        }
Index: ccvs/src/base.c
diff -u ccvs/src/base.c:1.1.2.12 ccvs/src/base.c:1.1.2.13
--- ccvs/src/base.c:1.1.2.12    Thu Dec  8 20:49:44 2005
+++ ccvs/src/base.c     Mon Dec 12 19:37:33 2005
@@ -283,7 +283,7 @@
 
 
 
-static char *
+char *
 temp_checkout (RCSNode *rcs, struct file_info *finfo,
               const char *prev, const char *rev, const char *ptag,
               const char *tag, const char *poptions, const char *options)
@@ -398,13 +398,15 @@
 
 
 
-void
-base_copy (struct file_info *finfo, const char *rev, const char *flags)
+static void
+ibase_copy (struct file_info *finfo, const char *rev, const char *flags,
+           const char *tempfile)
 {
     char *basefile;
 
-    TRACE (TRACE_FUNCTION, "base_copy (%s, %s, %s)",
-          finfo->fullname, rev, flags);
+    TRACE (TRACE_FUNCTION, "ibase_copy (%s, %s, %s, %s)",
+          finfo->fullname, rev, flags,
+          tempfile ? tempfile : "(null)");
 
     assert (flags && flags[0] && flags[1]);
 
@@ -418,7 +420,11 @@
     if (noexec)
        return;
 
-    basefile = make_base_file_name (finfo->file, rev);
+    if (tempfile)
+       basefile = tempfile;
+    else
+       basefile = make_base_file_name (finfo->file, rev);
+
     if (isfile (finfo->file))
        xchmod (finfo->file, true);
 
@@ -427,11 +433,28 @@
        xchmod (finfo->file, true);
 
     if (server_active && strcmp (cvs_cmd_name, "export"))
-       server_base_copy (finfo, rev, flags);
+       server_base_copy (finfo, rev ? rev : "", flags);
 
-    if (suppress_bases && CVS_UNLINK (basefile) < 0)
+    if ((suppress_bases || tempfile) && CVS_UNLINK (basefile) < 0)
        error (0, errno, "Failed to remove temp file `%s'", basefile);
-    free (basefile);
+    if (!tempfile)
+       free (basefile);
+}
+
+
+
+void
+temp_copy (struct file_info *finfo, const char *flags, const char *tempfile)
+{
+    ibase_copy (finfo, NULL, flags, tempfile);
+}
+
+
+
+void
+base_copy (struct file_info *finfo, const char *rev, const char *flags)
+{
+    ibase_copy (finfo, rev, flags, NULL);
 }
 
 
Index: ccvs/src/base.h
diff -u ccvs/src/base.h:1.1.2.7 ccvs/src/base.h:1.1.2.8
--- ccvs/src/base.h:1.1.2.7     Thu Dec  8 15:02:36 2005
+++ ccvs/src/base.h     Mon Dec 12 19:37:33 2005
@@ -41,10 +41,16 @@
 int base_checkout (RCSNode *rcs, struct file_info *finfo,
                   const char *prev, const char *rev, const char *ptag,
                   const char *tag, const char *poptions, const char *options);
+char *temp_checkout (RCSNode *rcs, struct file_info *finfo,
+                    const char *prev, const char *rev, const char *ptag,
+                    const char *tag, const char *poptions,
+                    const char *options);
 enum update_existing translate_exists (const char *exists);
 bool validate_change (enum update_existing existp, const char *filename,
                      const char *fullname);
 void base_copy (struct file_info *finfo, const char *rev, const char *flags);
+void temp_copy (struct file_info *finfo, const char *flags,
+               const char *tempfile);
 void base_remove (const char *file, const char *rev);
 int base_merge (RCSNode *rcs, struct file_info *finfo, const char *ptag,
                const char *poptions, const char *options,
Index: ccvs/src/client.c
diff -u ccvs/src/client.c:1.433.4.20 ccvs/src/client.c:1.433.4.21
--- ccvs/src/client.c:1.433.4.20        Thu Dec  8 20:49:44 2005
+++ ccvs/src/client.c   Mon Dec 12 19:37:33 2005
@@ -2370,7 +2370,15 @@
        return;
     }
 
-    basefile = make_base_file_name (filename, rev);
+    if (temp_checkout1)
+    {
+       if (temp_checkout2)
+           error (1, 0, "Server sent two temp files before a Base-copy.");
+       basefile = temp_checkout1;
+    }
+    else
+       basefile = make_base_file_name (filename, rev);
+
     temp_filename = newfilename (filename);
     copy_file (basefile, temp_filename);
 
@@ -2385,11 +2393,12 @@
      * file be sent.
      */
 
-    /* If EXISTS[2] == "d", don't keep the base file.  This happens
-     * when a merge adds a file and when `cvs add' resurrects a file.
-     */
-    if (flags[0] && flags [1] && flags[2] == 'd' && CVS_UNLINK (basefile) < 0)
-       error (0, errno, "Failed to delete `%s'", short_pathname);
+    if (temp_checkout1)
+    {
+       temp_checkout1 = NULL;
+       if (CVS_UNLINK (basefile) < 0)
+           error (0, errno, "Failed to remove temp file `%s'", basefile);
+    }
 
     free (flags);
     free (temp_filename);
Index: ccvs/src/update.c
diff -u ccvs/src/update.c:1.256.4.14 ccvs/src/update.c:1.256.4.15
--- ccvs/src/update.c:1.256.4.14        Thu Dec  8 20:49:46 2005
+++ ccvs/src/update.c   Mon Dec 12 19:37:33 2005
@@ -2327,6 +2327,7 @@
        if (vers->vn_user == NULL)
        {
            Vers_TS *xvers;
+           char *tempfile;
 
            /* Use NULL for keyword expansion options.  Otherwise, when a
               command like `cvs update -kk -jT1 -jT2' creates a new file
@@ -2343,16 +2344,17 @@
 
            /* FIXME: If base_checkout fails, we should arrange to
                return a non-zero exit status.  */
-           status = base_checkout (xvers->srcfile, finfo,
-                                   NULL, xvers->vn_rcs,
-                                   xvers->entdata
-                                   ? xvers->entdata->tag : NULL,
-                                   xvers->tag,
-                                   xvers->entdata
-                                   ? xvers->entdata->options : NULL,
-                                   xvers->options);
+           tempfile = temp_checkout (xvers->srcfile, finfo,
+                                     NULL, xvers->vn_rcs,
+                                     xvers->entdata
+                                     ? xvers->entdata->tag : NULL,
+                                     xvers->tag,
+                                     xvers->entdata
+                                     ? xvers->entdata->options : NULL,
+                                     xvers->options);
            /* Added files are always writable until commit.  */
-           base_copy (finfo, xvers->vn_rcs, "nyd");
+           temp_copy (finfo, "ny", tempfile);
+           free (tempfile);
 
            Register (finfo->entries, finfo->file, "0",
                      "Result of merge", NULL, vers->tag, vers->date, NULL);




reply via email to

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