#
# patch "ChangeLog"
# from [94df1b3806f6020b5ab486f8e77d0d0789c4c489]
# to [99443bcc3c4c5e98a1ba170b4ecc5c2f558091c3]
#
# patch "change_set.cc"
# from [62f13b93026c2ca5cae82595101f98f4fbb05d8e]
# to [2d1bd3032cf730ae58836127e0b11a0719acba10]
#
# patch "pcdv.cc"
# from [52ca638a980086603d40838ebb861e892a5ff7f3]
# to [987bf0dfb85f1e2d26e1e22e85f3f0f9bfd73658]
#
========================================================================
--- ChangeLog 94df1b3806f6020b5ab486f8e77d0d0789c4c489
+++ ChangeLog 99443bcc3c4c5e98a1ba170b4ecc5c2f558091c3
@@ -1,5 +1,10 @@
2005-08-20 Timothy Brownawell
+ * change_set.cc: use versioned scalars to track file edits
+ * pcdv.cc (tree_state::current_scalars): bugfix
+
+2005-08-20 Timothy Brownawell
+
* pcdv.{cc,hh} (tree merger): each file now gets a versioned scalar
2005-08-19 Timothy Brownawell
========================================================================
--- change_set.cc 62f13b93026c2ca5cae82595101f98f4fbb05d8e
+++ change_set.cc 2d1bd3032cf730ae58836127e0b11a0719acba10
@@ -1892,6 +1892,8 @@
typedef std::multimap::iterator gi;
typedef std::map > >::iterator ai;
+ interner itx;
+
// process history
std::multimap graph, rgraph;
app.db.get_revision_ancestry(graph);
@@ -1942,6 +1944,7 @@
std::vector treevec;
std::vector revec;
MM(revec);
+ std::map sc;
for (edge_map::const_iterator i = rs.edges.begin();
i != rs.edges.end(); ++i)
{
@@ -1957,11 +1960,19 @@
}
treevec.push_back(from);
revec.push_back(edge_changes(i).rearrangement);
+ for (change_set::delta_map::const_iterator
+ j = edge_changes(i).deltas.begin();
+ j != edge_changes(i).deltas.end(); ++j)
+ {
+ sc.insert(make_pair(delta_entry_path(j),
+ itx.intern(delta_entry_dst(j).inner()())));
+ }
}
- tree_state newtree(tree_state::merge_with_rearrangement(treevec, revec,
- roots.front().inner()()));
+ tree_state newtree1(tree_state::merge_with_rearrangement(treevec, revec,
+ roots.front().inner()()));
+ tree_state newtree2(newtree1.set_scalars(roots.front().inner()(), sc));
- trees.insert(make_pair(roots.front(), newtree));
+ trees.insert(make_pair(roots.front(), newtree2));
ai i = about.find(roots.front());
I(i != about.end());
@@ -2046,6 +2057,22 @@
r = ip.insert(std::make_pair(i->first, itempaths()));
r.first->second.merged = (*i).second;
}
+
+ std::map > sm = m.current_scalars();
+ for (std::map >::const_iterator
+ i = sm.begin(); i != sm.end(); ++i)
+ {
+ std::pair::iterator, bool> r;
+ r = ip.insert(std::make_pair(i->first, itempaths()));
+ if ((*i).second.size() == 1)
+ {
+ r.first->second.clean = true;
+ r.first->second.hash = file_id(itx.lookup(*(*i).second.begin()));
+ }
+ else
+ r.first->second.clean = false;
+ }
+
paths.clear();
paths.reserve(ip.size());
for (std::map::const_iterator i = ip.begin();
========================================================================
--- pcdv.cc 52ca638a980086603d40838ebb861e892a5ff7f3
+++ pcdv.cc 987bf0dfb85f1e2d26e1e22e85f3f0f9bfd73658
@@ -2017,7 +2017,11 @@
std::map > out;
for (std::map::const_iterator i = states->begin();
i != states->end(); ++i)
- out.insert(make_pair(i->first, i->second.current_scalars()));
+ {
+ std::set s = i->second.current_scalars();
+ if (!(s.size() == 1 && *s.begin() == item_status::scalar(-1)))
+ out.insert(make_pair(i->first, s));
+ }
return out;
}