monotone-commits-diffs
[Top][All Lists]
Advanced

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

[Monotone-commits-diffs] net.venge.monotone.issue-209: 54a1b63d943a9d445


From: code
Subject: [Monotone-commits-diffs] net.venge.monotone.issue-209: 54a1b63d943a9d445b3fdf33d80e5f9b66d659b1
Date: Sat, 9 Jun 2012 17:32:34 +0200 (CEST)

revision:            54a1b63d943a9d445b3fdf33d80e5f9b66d659b1
date:                2012-06-09T12:46:42
author:              address@hidden
branch:              net.venge.monotone.issue-209
changelog:
resolve_dropped_modified_conflicts: fix minor bugs

* src/merge_conflict.cc (resolve_dropped_modified_conflicts): improve message, 
keep the right version.

* test/func/resolve_conflicts_dropped_modified/__driver__.lua: verify right 
version got kept

* test/func/resolve_conflicts_dropped_modified_2/__driver__.lua: fix typo in 
last merge


manifest:
format_version "1"

new_manifest [bdcab84401ee4e9128d5bd878ef843dc0ffc6137]

old_revision [c67426e491a95c2cb764d5315442d81843bf82e8]

patch "src/merge_conflict.cc"
 from [4269fe13d0992982ea99d03c27383830f2e8e381]
   to [71bce0c9082087835e6e7039391eaaeb0a03f3e7]

patch "test/func/resolve_conflicts_dropped_modified/__driver__.lua"
 from [ae5cc1ba521c8721d36ba4fd8b9c11238d719cae]
   to [fd9589d3d00616a563113e170e278e5db573da5b]

patch "test/func/resolve_conflicts_dropped_modified_2/__driver__.lua"
 from [49e72adbb370c1cdd117a8e1facf86777d039a47]
   to [a477e8cd203c4b69b5662e36cfd32a24b57cb16f]
============================================================
--- src/merge_conflict.cc	4269fe13d0992982ea99d03c27383830f2e8e381
+++ src/merge_conflict.cc	71bce0c9082087835e6e7039391eaaeb0a03f3e7
@@ -2854,10 +2854,10 @@ roster_merge_result::resolve_dropped_mod
           break;
 
         case resolve_conflicts::keep:
-          P(F("keeping '%s'") % modified_name);
-
           if (conflict.recreated == the_null_node)
             {
+              P(F("keeping '%s'") % modified_name);
+
               // We'd like to just attach_node here, but that violates a
               // fundamental design principle of mtn; nodes are born once,
               // and die once. If we attach here, the node is born, died,
@@ -2873,8 +2873,20 @@ roster_merge_result::resolve_dropped_mod
             }
           else
             {
+              P(F("keeping '%s' from %s") % modified_name % ((conflict.left_nid == the_null_node) ? "right" : "left"));
+
               roster.drop_detached_node(nid);
-              // Nothing else to do.
+
+              // keep the modified content, not the recreated content
+              file_data parent_data, result_data;
+              adaptor.get_version(recreated_fid, parent_data);
+
+              adaptor.get_version(modified_fid, result_data);
+
+              file_t result_node = downcast_to_file_t(roster.get_node_for_update(conflict.recreated));
+              result_node->content = modified_fid;
+
+              adaptor.record_file(recreated_fid, modified_fid, parent_data, result_data);
             }
           break;
 
============================================================
--- test/func/resolve_conflicts_dropped_modified/__driver__.lua	ae5cc1ba521c8721d36ba4fd8b9c11238d719cae
+++ test/func/resolve_conflicts_dropped_modified/__driver__.lua	fd9589d3d00616a563113e170e278e5db573da5b
@@ -345,8 +345,11 @@ check(samelines("stderr",
 check(samelines("stderr",
 {"mtn: [left]  fd12d8fb1973814d7756bae60c668b9c82364b59",
  "mtn: [right] 74ded9748ae7ee457a83a8d8a7dd0ffac93b13af",
- "mtn: keeping 'file_10'",
+ "mtn: keeping 'file_10' from left",
  "mtn: replacing content of 'file_11' with '_MTN/resolutions/file_11'",
- "mtn: [merged] 4da275122e0592217634c4d23838284cc570681a"}))
+ "mtn: [merged] 146a0f04f7f1d015976a10ab6a0c7164f0789ac7"}))
 
+check(mtn("update"), 0, nil, true)
+check(samelines("file_10", {"file_10 left"}))
+
 -- end of file
============================================================
--- test/func/resolve_conflicts_dropped_modified_2/__driver__.lua	49e72adbb370c1cdd117a8e1facf86777d039a47
+++ test/func/resolve_conflicts_dropped_modified_2/__driver__.lua	a477e8cd203c4b69b5662e36cfd32a24b57cb16f
@@ -76,11 +76,14 @@ check(samelines
   "mtn: dropped and recreated on the right",
   "mtn: 1 conflict with supported resolutions."}))
 
-check(mtn("conflicts", "store", left_1, right_1), 0, nil, true)
+check(mtn("conflicts", "store", left_2, right_2), 0, nil, true)
 
 check(mtn("conflicts", "resolve_first", "keep"), 0, nil, true)
 
-check(mtn("explicit_merge", "--resolve-conflicts", left_1, right_1, "testbranch"), 0, nil, true)
-check(qgrep("mtn: keeping 'file_2'", "stderr"))
+check(mtn("explicit_merge", "--resolve-conflicts", left_2, right_2, "testbranch"), 0, nil, true)
+check(qgrep("mtn: keeping 'file_2' from left", "stderr"))
 
+check(mtn("update"), 0, nil, true)
+check(samelines("file_2", {"file_2 left 2"}))
+
 -- end of file

reply via email to

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