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-120: 98f8b25fff425876


From: code
Subject: [Monotone-commits-diffs] net.venge.monotone.issue-120: 98f8b25fff425876e004776d691b9e0d26830661
Date: Sun, 20 Feb 2011 00:07:05 +0100 (CET)

revision:            98f8b25fff425876e004776d691b9e0d26830661
date:                2011-01-26T20:19:08
author:              Richard Hopkins <address@hidden>
branch:              net.venge.monotone.issue-120
changelog:
propagate from branch 'net.venge.monotone' (head 
6e0ec4d787c7fd98841d70714b06c1664e077139)
            to branch 'net.venge.monotone.issue-120' (head 
fc13d22f21a87c3a0f37d87a7fb8bbf667b65639)

manifest:
format_version "1"

new_manifest [a067cb90c47ad78eb2cb81ed2d694827dc6aa0e5]

old_revision [6e0ec4d787c7fd98841d70714b06c1664e077139]

patch "cmd_list.cc"
 from [d5f1d76cb76151d303cda19a974fe5c86f806d70]
   to [9d870ecf6461b873a0a90c0cfcc3e7f4eda17dd4]

old_revision [fc13d22f21a87c3a0f37d87a7fb8bbf667b65639]

patch "Makefile.am"
 from [0c1e48ef9dfb72bc9f3ada23437e17c7fca73c18]
   to [5e7e8b5f2ae55ef882fc78e814b6753381efbfe1]

patch "contrib/display_branches.lua"
 from [8d16d67c82652534969e81a9062f019d68c584bf]
   to [5b9602203db9c299e7821b18078786a8a7fe5574]

patch "database.cc"
 from [1ca31c776dd4882e3c783f80dbc20e351e5fd908]
   to [ade943af074000527e1f1f34d8afb0ad0f8a2bc9]

patch "options_list.hh"
 from [548a7192e2a4dd39d69fd33d13cc0e28d6f09c26]
   to [4af93dbcc45e76d732d073ced7ce21d20472cd00]

patch "po/sv.po"
 from [5803557f4c06071a4779b86691548795481d0587]
   to [96e9d971fbb477aca03f41896a6f4376f0d43054]
============================================================
--- cmd_list.cc	d5f1d76cb76151d303cda19a974fe5c86f806d70
+++ cmd_list.cc	9d870ecf6461b873a0a90c0cfcc3e7f4eda17dd4
@@ -12,6 +12,8 @@
 #include "safe_map.hh"
 #include <utility>
 #include <iostream>
+#include <sstream>
+#include <set>
 #include <iterator>
 
 #include <boost/tuple/tuple.hpp>
@@ -45,6 +47,7 @@ using std::ostream;
 using std::sort;
 using std::copy;
 using std::ostream;
+using std::ostringstream;
 using std::string;
 using std::vector;
 
@@ -853,51 +856,109 @@ CMD(changed, "changed", "", CMD_REF(list
     "",
     options::opts::depth | options::opts::exclude)
 {
+  roster_t new_roster;
+  parent_map old_rosters;
+  revision_t rev;
+  temp_node_id_source nis;
+
   database db(app);
+  project_t project(db);
   workspace work(app);
 
-  parent_map parents;
-  roster_t new_roster;
-  temp_node_id_source nis;
+  work.get_parent_rosters(db, old_rosters);
   work.get_current_roster_shape(db, nis, new_roster);
-  work.update_current_roster_from_filesystem(new_roster);
 
-  work.get_parent_rosters(db, parents);
-
   node_restriction mask(args_to_paths(args),
                         args_to_paths(app.opts.exclude),
                         app.opts.depth,
-                        parents, new_roster, ignored_file(work));
+                        old_rosters, new_roster, ignored_file(work));
 
-  revision_t rrev;
-  make_restricted_revision(parents, new_roster, mask, rrev);
+  work.update_current_roster_from_filesystem(new_roster, mask);
+  make_restricted_revision(old_rosters, new_roster, mask, rev);
 
-  // to be printed sorted, with duplicates removed
-  set<file_path> print_paths;
+  revision_id rid;
+  calculate_ident(rev, rid);
 
-  for (edge_map::const_iterator i = rrev.edges.begin();
-       i != rrev.edges.end(); i++)
+  set<file_path> output_files;
+
+  // TODO: Refactor this method and promote these locals to parameters
+  // We can then use the method to provide us with "mtn ls added" for
+  // example
+  bool output_dropped = true;
+  bool output_renamed = true;
+  bool output_added = true;
+  bool output_patched = true;
+  bool output_attrs = true;
+
+  for (edge_map::const_iterator i = rev.edges.begin(); i != rev.edges.end(); ++i)
     {
-      set<node_id> nodes;
-      roster_t const & old_roster
-        = *safe_get(parents, edge_old_revision(i)).first;
-      select_nodes_modified_by_cset(edge_changes(i),
-                                    old_roster, new_roster, nodes);
+      revision_id parent = edge_old_revision(*i);
+      cset const & cs = edge_changes(*i);
 
-      for (set<node_id>::const_iterator i = nodes.begin(); i != nodes.end();
-           ++i)
+      if (output_dropped)
         {
-          file_path p;
-          if (new_roster.has_node(*i))
-            new_roster.get_name(*i, p);
-          else
-            old_roster.get_name(*i, p);
-          print_paths.insert(p);
+          for (set<file_path>::const_iterator i = cs.nodes_deleted.begin();
+            i != cs.nodes_deleted.end(); ++i)
+            output_files.insert(*i);
         }
+
+      if (output_renamed)
+        {
+          for (map<file_path, file_path>::const_iterator
+            i = cs.nodes_renamed.begin();
+            i != cs.nodes_renamed.end(); ++i)
+            output_files.insert(i->second);
+        }
+
+      if (output_added)
+        {
+          for (set<file_path>::const_iterator i = cs.dirs_added.begin();
+            i != cs.dirs_added.end(); ++i)
+            output_files.insert(*i);
+
+          for (map<file_path, file_id>::const_iterator i = cs.files_added.begin();
+            i != cs.files_added.end(); ++i)
+            output_files.insert(i->first);
+        }
+
+      if (output_patched)
+        {
+          for (map<file_path, pair<file_id, file_id> >::const_iterator
+            i = cs.deltas_applied.begin(); i != cs.deltas_applied.end(); ++i)
+            output_files.insert(i->first);
+        }
+
+      if (output_attrs)
+        {
+          for (map<pair<file_path, attr_key>, attr_value >::const_iterator
+            i = cs.attrs_set.begin(); i != cs.attrs_set.end(); ++i)
+            output_files.insert(i->first.first);
+
+            // FIXME: naming here could not be more inconsistent
+            // the cset calls it attrs_cleared
+            // the command is attr drop
+            // here it is called unset
+            // the revision text uses attr clear 
+
+          for (set<pair<file_path, attr_key> >::const_iterator
+            i = cs.attrs_cleared.begin(); i != cs.attrs_cleared.end(); ++i)
+            output_files.insert(i->first);
+        }
     }
 
-  copy(print_paths.begin(), print_paths.end(),
-       ostream_iterator<file_path>(cout, "\n"));
+  for (set<file_path>::const_iterator i = output_files.begin();
+       i != output_files.end(); ++i)
+    {
+      ostringstream tmp;
+      external summary_external;
+
+      tmp << *i;
+      utf8 summary = utf8(tmp.str(), origin::internal);
+
+      utf8_to_system_best_effort(summary, summary_external);
+
+      cout << summary_external << "\n";
+    }
 }
 
 namespace
============================================================
--- Makefile.am	0c1e48ef9dfb72bc9f3ada23437e17c7fca73c18
+++ Makefile.am	5e7e8b5f2ae55ef882fc78e814b6753381efbfe1
@@ -351,7 +351,7 @@ EXTRA_DIST =								\
 									\
 	contrib cygwin examples mac notes visualc
 
-MAKEINFOFLAGS=-I $(top_builddir)
+AM_MAKEINFOFLAGS=-I $(top_builddir)
 
 monotone.info: monotone.texi version.texi std_hooks.lua $(TEXI_FRAGMENTS)
 
============================================================
--- database.cc	1ca31c776dd4882e3c783f80dbc20e351e5fd908
+++ database.cc	ade943af074000527e1f1f34d8afb0ad0f8a2bc9
@@ -2848,7 +2848,7 @@ database::get_revision(revision_id const
   imp->fetch(res, one_col, one_row,
              query("SELECT data FROM revisions WHERE id = ?")
              % blob(id.inner()()));
-
+  I(res.size() == 1);
   gzip<data> gzdata(res[0][0], origin::database);
   data rdat;
   decode_gzip(gzdata,rdat);
============================================================
--- po/sv.po	5803557f4c06071a4779b86691548795481d0587
+++ po/sv.po	96e9d971fbb477aca03f41896a6f4376f0d43054
@@ -157,8 +157,8 @@ msgstr ""
 msgstr ""
 "Project-Id-Version: monotone 0.26pre1\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2011-01-20 14:26+0100\n"
-"PO-Revision-Date: 2011-01-21 15:13+0100\n"
+"POT-Creation-Date: 2011-01-23 19:58+0100\n"
+"PO-Revision-Date: 2011-01-23 19:59+0100\n"
 "Last-Translator: Joel Rosdahl <address@hidden>\n"
 "Language-Team: Richard Levitte <address@hidden>\n"
 "Language: \n"
@@ -968,7 +968,7 @@ msgstr "Öppnar en koppling till en serv
 msgstr "Öppnar en koppling till en server, typ 'automate stdio'"
 
 #: cmd_netsync.cc:122 cmd_netsync.cc:225
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "No database given; assuming '%s' database. This means that\n"
 "we can't verify the server key, because we have no record of\n"
@@ -1306,12 +1306,12 @@ msgstr "Visa vilka databaser som hantera
 msgid "Lists managed databases and their known workspaces"
 msgstr "Visa vilka databaser som hanteras och deras kända arbetskopior"
 
-#: cmd_list.cc:684 database.cc:4956
+#: cmd_list.cc:684 database.cc:4970
 #, c-format
 msgid "could not query default database locations"
 msgstr "ingen standardkatalog för databaser finns definierad"
 
-#: cmd_list.cc:688 database.cc:5034
+#: cmd_list.cc:688 database.cc:5048
 #, c-format
 msgid "could not query default database glob"
 msgstr "kunde inte fråga efter standardglobben för databaser"
@@ -2602,8 +2602,8 @@ msgstr ""
 "SÖKVÄG är angiven."
 
 #: cmd_diff_log.cc:992
-msgid "list selected revision history"
-msgstr "visa vald revisionshistoria"
+msgid "Lists the selected revision history"
+msgstr "Visa vald revisionshistoria"
 
 #: cmd_ws_commit.cc:179
 #, c-format
@@ -4632,17 +4632,17 @@ msgstr "tillitsfunktionen ogillar %d sig
 msgid "trust function disliked %d signers of %s cert on revision %s"
 msgstr "tillitsfunktionen ogillar %d signerare av certet %s i revisionen %s"
 
-#: database.cc:4798 database.cc:4933
+#: database.cc:4805 database.cc:4947
 #, c-format
 msgid "no database specified"
 msgstr "ingen databas angiven"
 
-#: database.cc:4811
+#: database.cc:4818
 #, c-format
 msgid "database %s does not exist"
 msgstr "databasen %s finns inte"
 
-#: database.cc:4819
+#: database.cc:4826
 #, c-format
 msgid ""
 "%s is a workspace, not a database\n"
@@ -4651,17 +4651,17 @@ msgstr ""
 "%s är en katalog, inte en databas\n"
 "(menade du %s?)"
 
-#: database.cc:4823
+#: database.cc:4830
 #, c-format
 msgid "%s is a directory, not a database"
 msgstr "%s är en katalog, inte en databas"
 
-#: database.cc:4831
+#: database.cc:4838
 #, c-format
 msgid "database %s already exists"
 msgstr "databasen %s finns redan"
 
-#: database.cc:4836
+#: database.cc:4843
 #, c-format
 msgid ""
 "existing (possibly stale) journal file '%s' has same stem as new database "
@@ -4672,32 +4672,32 @@ msgstr ""
 "databasen '%s'\n"
 "avbryter skapandet av databasen"
 
-#: database.cc:4991
+#: database.cc:5005
 #, c-format
 msgid "the database alias '%s' has multiple ambiguous expansions:"
 msgstr "databasaliaset '%s' har flera motsägelsefulla uttydningar:"
 
-#: database.cc:5014
+#: database.cc:5028
 #, c-format
 msgid "could not query default database alias"
 msgstr "kunde inte fråga efter databasens standardalias"
 
-#: database.cc:5016
+#: database.cc:5030
 #, c-format
 msgid "using default database '%s'"
 msgstr "använder standarddatabasen '%s'"
 
-#: database.cc:5026
+#: database.cc:5040
 #, c-format
 msgid "invalid database alias '%s': does not start with a colon"
 msgstr "ogiltigt databasalias '%s': startar inte med ett kolon"
 
-#: database.cc:5030
+#: database.cc:5044
 #, c-format
 msgid "invalid database alias '%s': must not be empty"
 msgstr "ogiltigt databasalias '%s': får inte vara tomt"
 
-#: database.cc:5046
+#: database.cc:5060
 #, c-format
 msgid "invalid database alias '%s': does contain invalid characters"
 msgstr "ogiltigt databasalias '%s': innehåller ogiltiga tecken"
@@ -5318,47 +5318,57 @@ msgstr "räknaren query-in-flight blev f
 msgid "underflow on query-in-flight counter"
 msgstr "räknaren query-in-flight blev för låg"
 
-#: netsync.cc:112 netsync.cc:217
+#: netsync.cc:112 netsync.cc:219
 #, c-format
 msgid "connecting to %s"
 msgstr "ansluter till %s"
 
-#: netsync.cc:161
+#: netsync.cc:113
 #, c-format
+msgid "  include pattern  %s"
+msgstr "  inkluderat mönster  %s"
+
+#: netsync.cc:114
+#, c-format
+msgid "  exclude pattern  %s"
+msgstr "  exkluderat mönster  %s"
+
+#: netsync.cc:163
+#, c-format
 msgid "processing failure while talking to peer %s, disconnecting"
 msgstr "tar hand om misslyckande i samtal med %s, kopplar ifrån"
 
-#: netsync.cc:169
+#: netsync.cc:171
 #, c-format
 msgid "timed out waiting for I/O with peer %s, disconnecting"
 msgstr "att vänta på I/O från %s tog för lång tid, kopplar ifrån"
 
-#: netsync.cc:186
+#: netsync.cc:188
 #, c-format
 msgid "successful exchange with %s"
 msgstr "lyckat utbyte med %s"
 
-#: netsync.cc:192
+#: netsync.cc:194
 #, c-format
 msgid "peer %s disconnected after we informed them of error"
 msgstr "%s kopplade ifrån efter att vi informerade den om ett fel"
 
-#: netsync.cc:198
+#: netsync.cc:200
 #, c-format
 msgid "I/O failure while talking to peer %s, disconnecting"
 msgstr "I/O-fel i samtal med %s, kopplar ifrån"
 
-#: netsync.cc:244
+#: netsync.cc:246
 #, c-format
 msgid "Network error: %s"
 msgstr "Nätverksfel: %s"
 
-#: netsync.cc:358
+#: netsync.cc:360
 #, c-format
 msgid "beginning service on %s"
 msgstr "startar tjänst på %s"
 
-#: netsync.cc:417 netsync.cc:421
+#: netsync.cc:419 netsync.cc:423
 #, c-format
 msgid "network error: %s"
 msgstr "nätverksfel: %s"
@@ -7754,11 +7764,11 @@ msgid ""
 
 #: options_list.hh:220
 msgid ""
-"automatically update the workspace, if it is clean and the base revision is "
-"a head of an affected branch"
+"automatically update the workspace, if it was at a head and the command "
+"creates a new head"
 msgstr ""
-"uppdaterar automatiskt arbetskopian om den är ren från ändringar och "
-"basrevisionen är ett huvud i den påverkade grenen"
+"uppdaterar automatiskt arbetskopian om basrevisionen är ett huvud i den "
+"påverkade grenen och uppdateringen skapar ett nytt huvud"
 
 #: options_list.hh:225
 msgid "address:port to listen on (default :4691)"
============================================================
--- options_list.hh	548a7192e2a4dd39d69fd33d13cc0e28d6f09c26
+++ options_list.hh	4af93dbcc45e76d732d073ced7ce21d20472cd00
@@ -217,7 +217,7 @@ SIMPLE_OPTION(auto_update, "update/no-up
               gettext_noop("block size in bytes for \"automate stdio\" output"))
 
 SIMPLE_OPTION(auto_update, "update/no-update", bool,
-              gettext_noop("automatically update the workspace, if it was at a head and the"
+              gettext_noop("automatically update the workspace, if it was at a head and the "
                            "command creates a new head"))
 
 OPTSET(bind_opts)
============================================================
--- contrib/display_branches.lua	8d16d67c82652534969e81a9062f019d68c584bf
+++ contrib/display_branches.lua	5b9602203db9c299e7821b18078786a8a7fe5574
@@ -7,26 +7,31 @@ do
 do
    netsync_branches = {}
 
-   function RL_note_netsync_cert_received(rev_id,key,name,value,nonce)
+   function RL_note_netsync_cert_received(direction,rev_id,key,name,value,nonce)
       if name == "branch" then
-	 if netsync_branches[nonce][value] == nil then
-	    netsync_branches[nonce][value] = 1
+	 if netsync_branches[direction][nonce][value] == nil then
+	    netsync_branches[direction][nonce][value] = 1
 	 else
-	    netsync_branches[nonce][value] = netsync_branches[nonce][value] + 1
+	    netsync_branches[direction][nonce][value] =
+	       netsync_branches[direction][nonce][value] + 1
 	 end
       end
    end
 
    notifier = {
-      start =
+      ["start"] =
 	 function(session_id,...)
-	    netsync_branches[session_id] = {}
+	    netsync_branches["received"] = {}
+	    netsync_branches["sent"] = {}
+	    netsync_branches["received"][session_id] = {}
+	    netsync_branches["sent"][session_id] = {}
 	    return "continue",nil
 	 end,
-      revision_received =
+      ["revision_received"] =
 	 function(new_id,revision,certs,session_id)
 	    for _, item in pairs(certs) do
-	       RL_note_netsync_cert_received(new_id,
+	       RL_note_netsync_cert_received("received",
+					     new_id,
 					     item.key,
 					     item.name,
 					     item.value,
@@ -34,26 +39,65 @@ do
 	    end
 	    return "continue",nil
 	 end,
-      cert_received =
+      ["revision_sent"] =
+	 function(new_id,revision,certs,session_id)
+	    for _, item in pairs(certs) do
+	       RL_note_netsync_cert_received("sent",
+					     new_id,
+					     item.key,
+					     item.name,
+					     item.value,
+					     session_id)
+	    end
+	    return "continue",nil
+	 end,
+      ["cert_received"] =
 	 function(rev_id,key,name,value,session_id)
-	    RL_note_netsync_cert_received(rev_id,
+	    RL_note_netsync_cert_received("received",
+					  rev_id,
 					  key,name,value,
 					  session_id)
 	    return "continue",nil
 	 end,
-      ["end"] = function(session_id)
-		   local first = true
-		   for item, amount in pairs(netsync_branches[session_id])
-		   do
-		      if first then
-			 io.stderr:write("Affected branches:\n")   
-			 first = false
-		      end
-		      io.stderr:write("  ",item,"  (",amount,")\n")   
-		   end
-		   netsync_branches[session_id] = nil
-		   return "continue",nil
-		end
+      ["cert_sent"] =
+	 function(rev_id,key,name,value,session_id)
+	    RL_note_netsync_cert_received("sent",
+					  rev_id,
+					  key,name,value,
+					  session_id)
+	    return "continue",nil
+	 end,
+      ["end"] =
+	 function(session_id,status)
+	    -- only try to display results if we got
+	    -- at least partial contents
+	    if status > 211 then
+	       return "continue",nil
+	    end
+
+	    local first = true
+	    for item, amount in pairs(netsync_branches["received"][session_id])
+	    do
+	       if first then
+		  io.stderr:write("Received data on branches:\n")
+		  first = false
+	       end
+	       io.stderr:write("  ",item,"  (",amount,")\n")   
+	    end
+	    netsync_branches["received"][session_id] = nil
+
+	    first = true
+	    for item, amount in pairs(netsync_branches["sent"][session_id])
+	    do
+	       if first then
+		  io.stderr:write("Sent data on branches:\n")
+		  first = false
+	       end
+	       io.stderr:write("  ",item,"  (",amount,")\n")   
+	    end
+	    netsync_branches["sent"][session_id] = nil
+	    return "continue",nil
+	 end
    }
 
    local v,m = push_hook_functions(notifier)

reply via email to

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