updated for version 7.3.892
Problem:    Still mering problems for viminfo history.
Solution:   Do not merge lines when writing, don't write old viminfo lines.
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index d6bd0eb..bc2fcb7 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -2113,7 +2113,7 @@
     buf_T	*buf;
 
 #ifdef FEAT_CMDHIST
-    prepare_viminfo_history(forceit ? 9999 : 0);
+    prepare_viminfo_history(forceit ? 9999 : 0, writing);
 #endif
     eof = viminfo_readline(virp);
     while (!eof && virp->vir_line[0] != '>')
@@ -2161,7 +2161,7 @@
 	    case '=':
 	    case '@':
 #ifdef FEAT_CMDHIST
-		eof = read_viminfo_history(virp);
+		eof = read_viminfo_history(virp, writing);
 #else
 		eof = viminfo_readline(virp);
 #endif
@@ -2182,7 +2182,8 @@
 
 #ifdef FEAT_CMDHIST
     /* Finish reading history items. */
-    finish_viminfo_history();
+    if (!writing)
+	finish_viminfo_history();
 #endif
 
     /* Change file names to buffer numbers for fmarks. */