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: d69b6671da387f29b2acafba5ad


From: code
Subject: [Monotone-commits-diffs] net.venge.monotone: d69b6671da387f29b2acafba5ade90aaa190d0da
Date: Sun, 13 Nov 2011 00:03:19 +0100 (CET)

revision:            d69b6671da387f29b2acafba5ade90aaa190d0da
date:                2011-11-12T23:02:50
author:              Richard Hopkins <address@hidden>
branch:              net.venge.monotone
changelog:
Produce meaningful error message when trying to disapprove a root

The old code used to generate an invariant failure in get_revision, called
from get_revision_manifest. This is because root revisions have no parents,
making the code trying to get the null_id revision.

Rather than let this happen, produce a friendlier message but still error
out as we don't handle disapproving of root revisions.

manifest:
format_version "1"

new_manifest [178893aa310ed40cd7c8b1b6994be79e5061afe4]

old_revision [b95f29a31b0bdfcefe0a168dfa6d8b125ff96e1e]

add_dir "test/func/disapprove_root_revision"

add_file "test/func/disapprove_root_revision/__driver__.lua"
 content [743f82c455ccc4d57b1ee123d0c8fcf7341f8207]

patch "src/cmd_ws_commit.cc"
 from [aa290a0418e1944d17768dd0d07fe6c3f348f2cf]
   to [431aff612ada586c56b63247423ae72df1650b88]
============================================================
--- src/cmd_ws_commit.cc	aa290a0418e1944d17768dd0d07fe6c3f348f2cf
+++ src/cmd_ws_commit.cc	431aff612ada586c56b63247423ae72df1650b88
@@ -670,6 +670,8 @@ CMD(disapprove, "disapprove", "", CMD_RE
   unsigned int old_head_size = heads.size();
 
   edge_entry const & old_edge (*rev.edges.begin());
+  E(!null_id(edge_old_revision(old_edge)), origin::user,
+    F("cannot disapprove root revision"));
   db.get_revision_manifest(edge_old_revision(old_edge),
                                rev_inverse.new_manifest);
   {
============================================================
--- /dev/null	
+++ test/func/disapprove_root_revision/__driver__.lua	743f82c455ccc4d57b1ee123d0c8fcf7341f8207
@@ -0,0 +1,11 @@
+mtn_setup()
+
+addfile("foo", "bar")
+commit()
+to_disapprove = base_revision()
+addfile("xyzzy", "xyzzy")
+commit()
+addfile("123", "456")
+commit()
+check(mtn("disapprove", to_disapprove), 1, true, true)
+check(qgrep("cannot disapprove root revision", "stderr"))

reply via email to

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