[Top][All Lists]
[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"))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Monotone-commits-diffs] net.venge.monotone: d69b6671da387f29b2acafba5ade90aaa190d0da,
code <=