pkgsrc-Changes-HG archive

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

[pkgsrc/trunk]: pkgsrc/devel/monotone pluck a number of fixes from mainline m...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/94aae5263a0f
branches:  trunk
changeset: 529220:94aae5263a0f
user:      dan <dan%pkgsrc.org@localhost>
date:      Mon May 28 08:13:25 2007 +0000

description:
pluck a number of fixes from mainline mtn to fix a bug introduced shortly
before the 0.35 release, which could cause monotone db files to grow
larger than necessary by not removing some file/delta content as they were
superceded by new versions.  Most noticable on fresh pulls, or
via "db check".  Extra content can be cleaned up with a local
sync into a fresh db.

Changes from Matt Johnston, via
 pluck -r t:monotone-0.35 -r 397dcbd2f \
   database.{cc,hh} diff_patch.{cc,hh} work.cc

bump PKGREVISION

diffstat:

 devel/monotone/Makefile         |    4 +-
 devel/monotone/distinfo         |    7 ++-
 devel/monotone/patches/patch-da |   30 ++++++++++
 devel/monotone/patches/patch-db |  114 ++++++++++++++++++++++++++++++++++++++++
 devel/monotone/patches/patch-dc |   35 ++++++++++++
 devel/monotone/patches/patch-dd |   70 ++++++++++++++++++++++++
 devel/monotone/patches/patch-de |   21 +++++++
 7 files changed, 279 insertions(+), 2 deletions(-)

diffs (truncated from 323 to 300 lines):

diff -r a5e3a5d414c3 -r 94aae5263a0f devel/monotone/Makefile
--- a/devel/monotone/Makefile   Mon May 28 07:57:46 2007 +0000
+++ b/devel/monotone/Makefile   Mon May 28 08:13:25 2007 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.37 2007/05/13 10:45:19 jmmv Exp $
+# $NetBSD: Makefile,v 1.38 2007/05/28 08:13:25 dan Exp $
 #
 
 DISTNAME=      monotone-0.35
@@ -9,6 +9,8 @@
 HOMEPAGE=      http://monotone.ca/
 COMMENT=       Free distributed version control system
 
+PKGREVISION=   1
+
 GCC_REQD+=             3.0
 GNU_CONFIGURE=         yes
 INFO_FILES=            # PLIST
diff -r a5e3a5d414c3 -r 94aae5263a0f devel/monotone/distinfo
--- a/devel/monotone/distinfo   Mon May 28 07:57:46 2007 +0000
+++ b/devel/monotone/distinfo   Mon May 28 08:13:25 2007 +0000
@@ -1,5 +1,10 @@
-$NetBSD: distinfo,v 1.29 2007/05/13 10:45:19 jmmv Exp $
+$NetBSD: distinfo,v 1.30 2007/05/28 08:13:25 dan Exp $
 
 SHA1 (monotone-0.35.tar.gz) = b745eee239ab198f4263493c7f79cfd1b6935127
 RMD160 (monotone-0.35.tar.gz) = 91cb91fc25415f8357a57f199a5f83b8ea9293a1
 Size (monotone-0.35.tar.gz) = 4857094 bytes
+SHA1 (patch-da) = 7788a38488e3ea143ba0a82dbe5a367c34f0d41f
+SHA1 (patch-db) = 3225f5e42e3fc36d071e67d66778c38a28ac03ab
+SHA1 (patch-dc) = 2daf64dc25410b82d9ba031e3e77fd099493ad63
+SHA1 (patch-dd) = 84748f95117632726b7ded61ece7cd1f895011a4
+SHA1 (patch-de) = 25839f337dff78514b845647b948a53902a83172
diff -r a5e3a5d414c3 -r 94aae5263a0f devel/monotone/patches/patch-da
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/monotone/patches/patch-da   Mon May 28 08:13:25 2007 +0000
@@ -0,0 +1,30 @@
+$NetBSD: patch-da,v 1.1 2007/05/28 08:13:25 dan Exp $
+#
+# old_revision [f92dd754bf5c1e6eddc9c462b8d68691cfeb7f8b]
+#
+# patch "database.hh"
+#  from [aa0ee865053a7c27df33ab9906ce681db1e9d6c8]
+#    to [954a78c55234b282b7c047569cc5cc6ca9014341]
+#
+============================================================
+--- database.hh        aa0ee865053a7c27df33ab9906ce681db1e9d6c8
++++ database.hh        954a78c55234b282b7c047569cc5cc6ca9014341
+@@ -187,6 +187,7 @@ private:
+   bool have_delayed_file(file_id const & id);
+   void load_delayed_file(file_id const & id, file_data & dat);
+   void cancel_delayed_file(file_id const & id);
++  void drop_or_cancel_file(file_id const & id);
+   void schedule_delayed_file(file_id const & id, file_data const & dat);
+ 
+   std::map<file_id, file_data> delayed_files;
+@@ -215,6 +216,10 @@ private:
+   bool delta_exists(std::string const & ident,
+                     std::string const & table);
+ 
++  bool delta_exists(std::string const & ident,
++                    std::string const & base,
++                    std::string const & table);
++
+   void get_file_or_manifest_base_unchecked(hexenc<id> const & new_id,
+                                            data & dat,
+                                            std::string const & table);
diff -r a5e3a5d414c3 -r 94aae5263a0f devel/monotone/patches/patch-db
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/monotone/patches/patch-db   Mon May 28 08:13:25 2007 +0000
@@ -0,0 +1,114 @@
+$NetBSD: patch-db,v 1.1 2007/05/28 08:13:25 dan Exp $
+#
+# old_revision [f92dd754bf5c1e6eddc9c462b8d68691cfeb7f8b]
+#
+# patch "database.cc"
+#  from [4e7fc712cb49d0e87413ee46797b07ce53c286af]
+#    to [d2603c50782ad0ee0f86fa96f58846608a6d9748]
+#
+============================================================
+--- database.cc        4e7fc712cb49d0e87413ee46797b07ce53c286af
++++ database.cc        d2603c50782ad0ee0f86fa96f58846608a6d9748
+@@ -922,6 +922,15 @@ void
+ }
+ 
+ void
++database::drop_or_cancel_file(file_id const & id)
++{
++  if (have_delayed_file(id))
++    cancel_delayed_file(id);
++  else
++    drop(id.inner()(), "files");
++}
++
++void
+ database::schedule_delayed_file(file_id const & an_id,
+                                 file_data const & dat)
+ {
+@@ -1032,6 +1041,17 @@ database::delta_exists(string const & id
+   return table_has_entry(ident, "id", table);
+ }
+ 
++bool
++database::delta_exists(string const & ident,
++                       string const & base,
++                       string const & table)
++{
++  results res;
++  query q("SELECT 1 FROM " + table + " WHERE id = ? and base = ? LIMIT 1");
++  fetch(res, one_col, any_rows, q % text(ident) % text(base));
++  return !res.empty();
++}
++
+ string
+ database::count(string const & table)
+ {
+@@ -1692,15 +1712,10 @@ database::put_file_version(file_id const
+                            file_id const & new_id,
+                            file_delta const & del)
+ {
++  I(!(old_id == new_id));
+   file_data old_data, new_data;
+   file_delta reverse_delta;
+ 
+-  if (file_version_exists(new_id))
+-    {
+-      L(FL("file version '%s' already exists in db") % new_id);
+-      return;
+-    }
+-
+   if (!file_version_exists(old_id))
+     {
+       W(F("file preimage '%s' missing in db") % old_id);
+@@ -1714,6 +1729,7 @@ database::put_file_version(file_id const
+     patch(old_data.inner(), del.inner(), tmp);
+     new_data = file_data(tmp);
+   }
++
+   {
+     string tmp;
+     invert_xdelta(old_data.inner()(), del.inner()(), tmp);
+@@ -1724,20 +1740,25 @@ database::put_file_version(file_id const
+     calculate_ident(old_tmp, old_tmp_id);
+     I(file_id(old_tmp_id) == old_id);
+   }
+-
+-  transaction_guard guard(*this);
++  
++  transaction_guard guard(*this);  
+   if (file_or_manifest_base_exists(old_id.inner(), "files"))
+     {
+       // descendent of a head version replaces the head, therefore old head
+       // must be disposed of
+-      if (have_delayed_file(old_id))
+-        cancel_delayed_file(old_id);
+-      else
+-        drop(old_id.inner()(), "files");
++      drop_or_cancel_file(old_id);
+     }
+-  schedule_delayed_file(new_id, new_data);
+-  put_file_delta(old_id, new_id, reverse_delta);
+-  guard.commit();
++  if (!file_or_manifest_base_exists(new_id.inner(), "files"))
++    {
++      schedule_delayed_file(new_id, new_data);
++      drop(new_id.inner()(), "file_deltas");
++    }
++    
++  if (!delta_exists(old_id.inner()(), new_id.inner()(), "file_deltas"))
++    {
++      put_file_delta(old_id, new_id, reverse_delta);
++      guard.commit();
++    }
+ }
+ 
+ void
+@@ -1944,7 +1965,7 @@ database::deltify_revision(revision_id c
+                 delta delt;
+                 diff(old_data.inner(), new_data.inner(), delt);
+                 file_delta del(delt);
+-                drop(delta_entry_dst(j).inner()(), "files");
++                drop_or_cancel_file(delta_entry_dst(j));
+                 drop(delta_entry_dst(j).inner()(), "file_deltas");
+                 put_file_version(delta_entry_src(j), delta_entry_dst(j), del);
+               }
diff -r a5e3a5d414c3 -r 94aae5263a0f devel/monotone/patches/patch-dc
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/monotone/patches/patch-dc   Mon May 28 08:13:25 2007 +0000
@@ -0,0 +1,35 @@
+$NetBSD: patch-dc,v 1.1 2007/05/28 08:13:25 dan Exp $
+#
+# old_revision [f92dd754bf5c1e6eddc9c462b8d68691cfeb7f8b]
+#
+# patch "diff_patch.hh"
+#  from [f80e158dc7f4b50ac1ce4157896c226e95acfc54]
+#    to [d481b1cf53caed0381272a18713c357880d3bd03]
+#
+============================================================
+--- diff_patch.hh      f80e158dc7f4b50ac1ce4157896c226e95acfc54
++++ diff_patch.hh      d481b1cf53caed0381272a18713c357880d3bd03
+@@ -48,6 +48,7 @@ content_merge_adaptor
+                             file_id const & right_ident,
+                             file_id const & merged_ident,
+                             file_data const & left_data,
++                            file_data const & right_data,
+                             file_data const & merged_data) = 0;
+ 
+   virtual void get_ancestral_roster(node_id nid,
+@@ -75,6 +76,7 @@ content_merge_database_adaptor
+                     file_id const & right_ident,
+                     file_id const & merged_ident,
+                     file_data const & left_data,
++                    file_data const & right_data,
+                     file_data const & merged_data);
+ 
+   void get_ancestral_roster(node_id nid,
+@@ -101,6 +103,7 @@ content_merge_workspace_adaptor
+                     file_id const & right_ident,
+                     file_id const & merged_ident,
+                     file_data const & left_data,
++                    file_data const & right_data,
+                     file_data const & merged_data);
+ 
+   void get_ancestral_roster(node_id nid,
diff -r a5e3a5d414c3 -r 94aae5263a0f devel/monotone/patches/patch-dd
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/monotone/patches/patch-dd   Mon May 28 08:13:25 2007 +0000
@@ -0,0 +1,70 @@
+$NetBSD: patch-dd,v 1.1 2007/05/28 08:13:25 dan Exp $
+#
+# old_revision [f92dd754bf5c1e6eddc9c462b8d68691cfeb7f8b]
+#
+# patch "diff_patch.cc"
+#  from [5437f74550a59622f0aca36b00dd43f104b7692a]
+#    to [d4826b42f48007454d5827ae45c9eb39d99dbe6a]
+#
+============================================================
+--- diff_patch.cc      5437f74550a59622f0aca36b00dd43f104b7692a
++++ diff_patch.cc      d4826b42f48007454d5827ae45c9eb39d99dbe6a
+@@ -500,19 +500,26 @@ content_merge_database_adaptor::record_m
+                                              file_id const & right_ident,
+                                              file_id const & merged_ident,
+                                              file_data const & left_data,
++                                             file_data const & right_data,
+                                              file_data const & merged_data)
+ {
+   L(FL("recording successful merge of %s <-> %s into %s")
+     % left_ident % right_ident % merged_ident);
+ 
+-  delta left_delta, right_delta;
+   transaction_guard guard(app.db);
+ 
+-  diff(left_data.inner(), merged_data.inner(), left_delta);
+-  diff(left_data.inner(), merged_data.inner(), right_delta);
+-
+-  app.db.put_file_version(left_ident, merged_ident, file_delta(left_delta));
+-  app.db.put_file_version(right_ident, merged_ident, file_delta(right_delta));
++  if (!(left_ident == merged_ident))
++    {
++      delta left_delta;
++      diff(left_data.inner(), merged_data.inner(), left_delta);
++      app.db.put_file_version(left_ident, merged_ident, file_delta(left_delta));    
++    }
++  if (!(right_ident == merged_ident))
++    {
++      delta right_delta;
++      diff(right_data.inner(), merged_data.inner(), right_delta);
++      app.db.put_file_version(right_ident, merged_ident, file_delta(right_delta));
++    }
+   guard.commit();
+ }
+ 
+@@ -574,6 +581,7 @@ content_merge_workspace_adaptor::record_
+                                               file_id const & right_id,
+                                               file_id const & merged_id,
+                                               file_data const & left_data,
++                                              file_data const & right_data,
+                                               file_data const & merged_data)
+ {
+   L(FL("temporarily recording merge of %s <-> %s into %s")
+@@ -734,7 +742,7 @@ content_merger::try_to_merge_files(file_
+ 
+           merged_id = merged_fid;
+           adaptor.record_merge(left_id, right_id, merged_fid,
+-                               left_data, merge_data);
++                               left_data, right_data, merge_data);
+ 
+           return true;
+         }
+@@ -764,7 +772,7 @@ content_merger::try_to_merge_files(file_
+ 
+       merged_id = merged_fid;
+       adaptor.record_merge(left_id, right_id, merged_fid,
+-                           left_data, merge_data);
++                           left_data, right_data, merge_data);
+       return true;
+     }
+ 
diff -r a5e3a5d414c3 -r 94aae5263a0f devel/monotone/patches/patch-de
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000



Home | Main Index | Thread Index | Old Index