? fix-clean_update_no_abort_on_merge.diff
? vms/Makefile
Index: src/ChangeLog
===================================================================
RCS file: /home/nyap/.cvsroot/cvs/src/ChangeLog,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.18.1
diff -C16 -w -r1.1.1.1 -r1.1.1.1.18.1
*** src/ChangeLog	2001/03/06 16:21:21	1.1.1.1
--- src/ChangeLog	2001/03/09 17:05:23	1.1.1.1.18.1
***************
*** 1,16 ****
--- 1,21 ----
+ 2001-03-09  Noel Yap  <yap_noel@yahoo.com>
+ 
+ 	* update.c (update_fileproc)
+ 	toss_local_changes check added for when status is T_NEEDS_MERGE.
+ 
  2000-09-19  Larry Jones  <larry.jones@sdrc.com>
  
  	* version.c: Version 1.11.
  
  2000-09-07  Larry Jones  <larry.jones@sdrc.com>
  
  	* Makefile.in: Use @bindir@, @libdir@, @infodir@, and @mandir@
  	from autoconf.
  
  2000-08-23  Larry Jones  <larry.jones@sdrc.com>
  
  	* mkmodules.c (init): Create an empty val-tags file if it doesn't
  	already exist to avoid problems with users not having sufficient
  	permissions to create it later.
  
  2000-09-06  Jim Kingdon  <jkingdon@dhcp-net200-89.su.valinux.com>
Index: src/update.c
===================================================================
RCS file: /home/nyap/.cvsroot/cvs/src/update.c,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.18.1
diff -C16 -w -r1.1.1.1 -r1.1.1.1.18.1
*** src/update.c	2001/03/06 16:21:21	1.1.1.1
--- src/update.c	2001/03/09 17:05:23	1.1.1.1.18.1
***************
*** 637,695 ****
  	}
      }
      else
      {
  	switch (status)
  	{
  	    case T_UNKNOWN:		/* unknown file was explicitly asked
  					 * about */
  	    case T_UPTODATE:		/* file was already up-to-date */
  		retval = 0;
  		break;
  	    case T_CONFLICT:		/* old punt-type errors */
  		retval = 1;
  		write_letter (finfo, 'C');
  		break;
  	    case T_NEEDS_MERGE:		/* needs merging */
- 		retval = merge_file (finfo, vers);
- 		break;
  	    case T_MODIFIED:		/* locally modified */
- 		retval = 0;
                  if (toss_local_changes)
                  {
                      char *bakname;
                      bakname = backup_file (finfo->file, vers->vn_user);
                      /* This behavior is sufficiently unexpected to
                         justify overinformativeness, I think. */
  #ifdef SERVER_SUPPORT
                      if ((! really_quiet) && (! server_active))
  #else /* ! SERVER_SUPPORT */
                      if (! really_quiet)
  #endif /* SERVER_SUPPORT */
                          (void) printf ("(Locally modified %s moved to %s)\n",
                                         finfo->file, bakname);
                      free (bakname);
  
                      /* The locally modified file is still present, but
                         it will be overwritten by the repository copy
                         after this. */
                      status = T_CHECKOUT;
                      retval = checkout_file (finfo, vers, 0, 0, 1);
                  }
                  else 
                  {
                      if (vers->ts_conflict)
                      {
                          char *filestamp;
                          int retcode;
  
                          /*
                           * If the timestamp has changed and no
                           * conflict indicators are found, it isn't a
                           * 'C' any more.
                           */
  
  #ifdef SERVER_SUPPORT
                          if (server_active)
                              retcode = vers->ts_conflict[0] != '=';
                          else 
                          {
--- 637,697 ----
  	}
      }
      else
      {
  	switch (status)
  	{
  	    case T_UNKNOWN:		/* unknown file was explicitly asked
  					 * about */
  	    case T_UPTODATE:		/* file was already up-to-date */
  		retval = 0;
  		break;
  	    case T_CONFLICT:		/* old punt-type errors */
  		retval = 1;
  		write_letter (finfo, 'C');
  		break;
  	    case T_NEEDS_MERGE:		/* needs merging */
  	    case T_MODIFIED:		/* locally modified */
                  if (toss_local_changes)
                  {
                      char *bakname;
                      bakname = backup_file (finfo->file, vers->vn_user);
                      /* This behavior is sufficiently unexpected to
                         justify overinformativeness, I think. */
  #ifdef SERVER_SUPPORT
                      if ((! really_quiet) && (! server_active))
  #else /* ! SERVER_SUPPORT */
                      if (! really_quiet)
  #endif /* SERVER_SUPPORT */
                          (void) printf ("(Locally modified %s moved to %s)\n",
                                         finfo->file, bakname);
                      free (bakname);
  
                      /* The locally modified file is still present, but
                         it will be overwritten by the repository copy
                         after this. */
                      status = T_CHECKOUT;
                      retval = checkout_file (finfo, vers, 0, 0, 1);
                  }
+                 else if (status == T_NEEDS_MERGE)
+                 {
+                     retval = merge_file (finfo, vers);
+                 }
                  else
                  {
+                     retval = 0;
                      if (vers->ts_conflict)
                      {
                          char *filestamp;
                          int retcode;
  
                          /*
                           * If the timestamp has changed and no
                           * conflict indicators are found, it isn't a
                           * 'C' any more.
                           */
  
  #ifdef SERVER_SUPPORT
                          if (server_active)
                              retcode = vers->ts_conflict[0] != '=';
                          else
                          {
***************
*** 710,748 ****
                              retcode = !file_has_markers (finfo);
                          }
  
                          if (!retcode)
                          {
                              write_letter (finfo, 'C');
                              retval = 1;
                          }
                          else
                          {
                              /* Reregister to clear conflict flag. */
                              Register (finfo->entries, finfo->file, 
                                        vers->vn_rcs, vers->ts_rcs,
                                        vers->options, vers->tag,
                                        vers->date, (char *)0);
                          }
-                     }
                      if (!retval)
                      {
                          write_letter (finfo, 'M');
                          retval = 0;
                      }
                  }
  		break;
  #ifdef SERVER_SUPPORT
  	    case T_PATCH:		/* needs patch */
  		if (patches)
  		{
  		    int docheckout;
  		    struct stat file_info;
  		    unsigned char checksum[16];
  
  		    retval = patch_file (finfo,
  					 vers, &docheckout,
  					 &file_info, checksum);
  		    if (! docheckout)
  		    {
  		        if (server_active && retval == 0)
  			    server_updated (finfo, vers,
--- 712,750 ----
                              retcode = !file_has_markers (finfo);
                          }
  
                          if (!retcode)
                          {
                              write_letter (finfo, 'C');
                              retval = 1;
                          }
                          else
                          {
                              /* Reregister to clear conflict flag. */
                              Register (finfo->entries, finfo->file,
                                        vers->vn_rcs, vers->ts_rcs,
                                        vers->options, vers->tag,
                                        vers->date, (char *)0);
                          }
                          if (!retval)
                          {
                              write_letter (finfo, 'M');
                              retval = 0;
                          }
                      }
+                 }
  		break;
  #ifdef SERVER_SUPPORT
  	    case T_PATCH:		/* needs patch */
  		if (patches)
  		{
  		    int docheckout;
  		    struct stat file_info;
  		    unsigned char checksum[16];
  
  		    retval = patch_file (finfo,
  					 vers, &docheckout,
  					 &file_info, checksum);
  		    if (! docheckout)
  		    {
  		        if (server_active && retval == 0)
  			    server_updated (finfo, vers,
Index: src/version.c
===================================================================
RCS file: /home/nyap/.cvsroot/cvs/src/version.c,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.18.1
diff -C16 -w -r1.1.1.1 -r1.1.1.1.18.1
*** src/version.c	2001/03/06 16:21:21	1.1.1.1
--- src/version.c	2001/03/09 17:05:23	1.1.1.1.18.1
***************
*** 1,31 ****
  /*
   * Copyright (c) 1994 david d `zoo' zuhn
   * Copyright (c) 1994 Free Software Foundation, Inc.
   * Copyright (c) 1992, Brian Berliner and Jeff Polk
   * Copyright (c) 1989-1992, Brian Berliner
   * 
   * You may distribute under the terms of the GNU General Public License as
   * specified in the README file that comes with this  CVS source distribution.
   * 
   * version.c - the CVS version number
   */
  
  #include "cvs.h"
  
! char *version_string = "Concurrent Versions System (CVS) 1.11";
  
  #ifdef CLIENT_SUPPORT
  #ifdef SERVER_SUPPORT
  char *config_string = " (client/server)\n";
  #else
  char *config_string = " (client)\n";
  #endif
  #else
  #ifdef SERVER_SUPPORT
  char *config_string = " (server)\n";
  #else
  char *config_string = "\n";
  #endif
  #endif
  
  static const char *const version_usage[] =
--- 1,31 ----
  /*
   * Copyright (c) 1994 david d `zoo' zuhn
   * Copyright (c) 1994 Free Software Foundation, Inc.
   * Copyright (c) 1992, Brian Berliner and Jeff Polk
   * Copyright (c) 1989-1992, Brian Berliner
   *
   * You may distribute under the terms of the GNU General Public License as
   * specified in the README file that comes with this  CVS source distribution.
   *
   * version.c - the CVS version number
   */
  
  #include "cvs.h"
  
! char *version_string = "Concurrent Versions System (CVS) 1.11 (clean update no abort on merge)";
  
  #ifdef CLIENT_SUPPORT
  #ifdef SERVER_SUPPORT
  char *config_string = " (client/server)\n";
  #else
  char *config_string = " (client)\n";
  #endif
  #else
  #ifdef SERVER_SUPPORT
  char *config_string = " (server)\n";
  #else
  char *config_string = "\n";
  #endif
  #endif
  
  static const char *const version_usage[] =
***************
*** 59,75 ****
      if (client_active)
      {
  	(void) fputs ("Server: ", stdout);
  	start_server ();
  	if (supported_request ("version"))
  	    send_to_server ("version\012", 0);
  	else
  	{
  	    send_to_server ("noop\012", 0);
  	    fputs ("(unknown)\n", stdout);
  	}
  	err = get_responses_and_close ();
      }
  #endif
      return err;
  }
- 	
--- 59,74 ----
