cvs-cvs
[Top][All Lists]
Advanced

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

[Cvs-cvs] Changes to ccvs/src/update.c [signed-commits2]


From: Derek Robert Price
Subject: [Cvs-cvs] Changes to ccvs/src/update.c [signed-commits2]
Date: Thu, 01 Dec 2005 15:24:35 -0500

Index: ccvs/src/update.c
diff -u ccvs/src/update.c:1.256.4.9 ccvs/src/update.c:1.256.4.10
--- ccvs/src/update.c:1.256.4.9 Thu Dec  1 02:22:36 2005
+++ ccvs/src/update.c   Thu Dec  1 20:23:55 2005
@@ -2043,6 +2043,7 @@
     char *jrev2;
     char *jdate1;
     char *jdate2;
+    bool replace_it;
 
     TRACE (TRACE_FUNCTION, "join_file(%s, %s%s%s%s, %s, %s)",
           finfo->file,
@@ -2428,20 +2429,27 @@
        as such).  In the text file case, this is probably quite
        similar to the RCS_merge, but in the binary file case,
        RCS_merge gives all kinds of trouble.  */
-    if ((strcmp (t_options, "-kb") == 0
-            || wrap_merge_is_copy (finfo->file))
-        && ((vers->vn_user != NULL
-            && strcmp (rev1, vers->vn_user) == 0
-            /* See comments above about how No_Difference has already been
-               called.  */
-            && vers->ts_user != NULL
-            && strcmp (vers->ts_user, vers->ts_rcs) == 0)
-
-           || special_file_mismatch (finfo, rev1, rev2)))
+    replace_it =
+       vers->vn_user && !strcmp (rev1, vers->vn_user)
+       /* See comments above about how No_Difference has already been
+          called.  */
+       && vers->ts_user && !strcmp (vers->ts_user, vers->ts_rcs);
+
+    if (!strcmp (vers->options, "-kb")
+       || special_file_mismatch (finfo, rev1, rev2)
+       || replace_it)
     {
-       if (!really_quiet && !special_file_mismatch (finfo, rev1, rev2))
+       if (!really_quiet)
+       {
+           /* Is there a better term than "nonmergeable file"?  What we
+              really mean is, not something that CVS cannot or does not
+              want to merge (there might be an external manual or
+              automatic merge process).  */
+           if (!replace_it)
+               error (0, 0, "Nonmergeable file needs merge.");
            error (0, 0, "Replacing `%s' with contents of revision %s.",
                   finfo->fullname, rev2);
+       }
 
        /* FIXME: Verify my comment below:
         *
@@ -2461,26 +2469,30 @@
         */
        if (base_checkout (finfo->rcs, finfo, vers->vn_user, rev2, vers->tag,
                           vers->entdata->options, t_options) != 0)
-           status = 2;
-       else
-           status = 0;
+           error (1, 0, "Checkout of revision %s of `%s' failed.",
+                  rev2, finfo->fullname);
 
        base_copy (finfo, rev2, "yy");
-       if (!really_quiet && special_file_mismatch (finfo, rev1, rev2))
+
+       if (replace_it)
        {
-           /* Hmm.  We don't give them REV1 anywhere.  I guess most people
-              probably don't have a 3-way merge tool for the file type in
-              question, and might just get confused if we tried to either
-              provide them with a copy of the file from REV1, or even just
-              told them what REV1 is so they can get it themself, but it
-              might be worth thinking about.  */
-           /* See comment in merge_file about the "nonmergeable file"
-              terminology.  */
-           error (0, 0, "nonmergeable file needs merge");
-           error (0, 0, "revision %s from repository is now in %s",
-                  rev2, finfo->fullname);
-           error (0, 0, "file from working directory is now in %s", backup);
-           write_letter (finfo, 'C');
+               /* Is there a better term than "nonmergeable file"?  What we
+                  really mean is, not something that CVS cannot or does not
+                  want to merge (there might be an external manual or
+                  automatic merge process).  */
+           if (!really_quiet)
+               write_letter (finfo, 'M');
+           status = 0;
+       }
+       else
+       {
+           if (!really_quiet)
+               {
+                   error (0, 0, "File from working directory is now in `%s'.",
+                          backup);
+                   write_letter (finfo, 'C');
+               }
+           status = 1;
        }
     }
     else




reply via email to

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