#
#
# patch "cmd_ws_commit.cc"
#  from [f19eb71e76506b5ac8a706f610e6a34b595266a1]
#    to [e759dd933ee892c83a40d4eda3c1040efc6ad008]
#
============================================================
--- cmd_ws_commit.cc	f19eb71e76506b5ac8a706f610e6a34b595266a1
+++ cmd_ws_commit.cc	e759dd933ee892c83a40d4eda3c1040efc6ad008
@@ -337,6 +337,50 @@ CMD(revert, "revert", "", CMD_REF(worksp
   work.maybe_update_inodeprints(db);
 }
 
+CMD(rebase, "rebase", "", CMD_REF(workspace), N_("REVISION"),
+    N_("Changes the parent to the specified revision"),
+    "",
+    options::opts::none)
+{
+  database db(app);
+  revision_id new_base_rid;
+  parent_map old_parents;
+  parent_map new_parents;
+  temp_node_id_source nis;
+  project_t project(db);
+
+  if (args.size() != 1)
+    throw usage(execid);
+  
+  complete(app.opts, app.lua, project, idx(args, 0)(), new_base_rid);
+  
+  N(db.revision_exists(new_base_rid),
+    F("no such revision '%s'") % new_base_rid);
+
+  workspace work(app);
+  // db.get_roster(new_base_rid, new_base_roster);
+
+  work.get_parent_rosters(db, old_parents);
+
+  N(old_parents.size() == 1, F("cannot rebase a merge workspace"));
+
+#if 0
+  roster_t old_roster = parent_roster (old_parents.begin());
+  roster_t working_roster;
+
+  work.get_current_roster_shape(db, nis, working_roster);
+  work.update_current_roster_from_filesystem(working_roster);
+#endif
+
+  revision_t rev; 
+  make_revision_for_workspace(new_base_rid, cset(), rev);
+
+  work.put_work_rev(rev);
+  P(F("Changed the base revision to '%s'") % new_base_rid);
+
+  // work.set_work_state(new_parents, workspace_roster);
+}
+
 CMD(disapprove, "disapprove", "", CMD_REF(review), N_("REVISION"),
     N_("Disapproves a particular revision"),
     "",
