#
# patch "ChangeLog"
# from [e9de117a2044926f443013af7951cbe6069c62ae]
# to [5c3d7675730904be66a8881e932045c9734dca6a]
#
# patch "commands.cc"
# from [5c9d5557618af9fc3447467688a61189c4727014]
# to [02840f7f28a0b9fafa6fe1816035ed6e5cf2fc8e]
#
# patch "manifest.cc"
# from [13650d15c6b7fde18fb7018c68ebbf2e82d2d125]
# to [63b95a89a40d5d8c24fda2e2103b31e53dc67026]
#
# patch "manifest.hh"
# from [32ecf7dfe6decb959f38856418e5e572afa82cd2]
# to [2665667c3cf960e64f39301fea45d1e4e67e5dba]
#
--- ChangeLog
+++ ChangeLog
@@ -1,5 +1,23 @@
2005-04-23 Derek Scherger
+ * commands.cc (calculate_base_revision): rename to ...
+ (get_base_revision): ... this, since it's not calculating anything
+ (calculate_base_manifest): rename to ...
+ (get_base_manifest): ... this, and call get_base_revision
+ (calculate_restricted_revision): call get_base_revision and remove
+ missing files stuff
+ (add):
+ (drop):
+ (rename):
+ (attr): call get_base_manifest
+ (ls_missing):
+ (revert): call get_base_revision
+ * manifest.{cc,hh} (build_restricted_manifest_map): don't return
+ missing files and don't produce invalid manifests; do report on
+ all missing files before failing
+
+2005-04-23 Derek Scherger
+
* app_state.cc:
* database.cc:
* file_io.{cc, hh}: fix bad merge
--- commands.cc
+++ commands.cc
@@ -496,10 +496,10 @@
}
static void
-calculate_base_revision(app_state & app,
- revision_id & rid,
- manifest_id & mid,
- manifest_map & man)
+get_base_revision(app_state & app,
+ revision_id & rid,
+ manifest_id & mid,
+ manifest_map & man)
{
man.clear();
@@ -524,12 +524,12 @@
}
static void
-calculate_base_manifest(app_state & app,
- manifest_map & man)
+get_base_manifest(app_state & app,
+ manifest_map & man)
{
revision_id rid;
manifest_id mid;
- calculate_base_revision(app, rid, mid, man);
+ get_base_revision(app, rid, mid, man);
}
static void
@@ -538,7 +538,6 @@
revision_set & rev,
manifest_map & m_old,
manifest_map & m_new,
- path_set & missing_files,
change_set::path_rearrangement & restricted_work)
{
manifest_id old_manifest_id;
@@ -551,9 +550,9 @@
m_old.clear();
m_new.clear();
- calculate_base_revision(app,
- old_revision_id,
- old_manifest_id, m_old);
+ get_base_revision(app,
+ old_revision_id,
+ old_manifest_id, m_old);
get_path_rearrangement(work);
extract_path_set(m_old, old_paths);
@@ -571,7 +570,7 @@
cs->rearrangement = included;
restricted_work = excluded;
- build_restricted_manifest_map(new_paths, m_old, m_new, missing_files, app);
+ build_restricted_manifest_map(new_paths, m_old, m_new, app);
complete_change_set(m_old, m_new, *cs);
calculate_ident(m_new, rev.new_manifest);
@@ -587,27 +586,6 @@
vector const & args,
revision_set & rev,
manifest_map & m_old,
- manifest_map & m_new,
- change_set::path_rearrangement & restricted_work)
-{
- path_set missing_files;
- calculate_restricted_revision(app, args, rev, m_old, m_new, missing_files, restricted_work);
-
- for (path_set::const_iterator i = missing_files.begin();
- i != missing_files.end(); ++i)
- {
- W(F("missing %s") % (*i)());
- }
-
- N(missing_files.size() == 0,
- F("%d missing files\n") % missing_files.size());
-}
-
-static void
-calculate_restricted_revision(app_state & app,
- vector const & args,
- revision_set & rev,
- manifest_map & m_old,
manifest_map & m_new)
{
change_set::path_rearrangement work;
@@ -1470,7 +1448,7 @@
app.require_working_copy();
manifest_map m_old;
- calculate_base_manifest(app, m_old);
+ get_base_manifest(app, m_old);
change_set::path_rearrangement work;
get_path_rearrangement(work);
@@ -1494,7 +1472,7 @@
app.require_working_copy();
manifest_map m_old;
- calculate_base_manifest(app, m_old);
+ get_base_manifest(app, m_old);
change_set::path_rearrangement work;
get_path_rearrangement(work);
@@ -1519,7 +1497,7 @@
app.require_working_copy();
manifest_map m_old;
- calculate_base_manifest(app, m_old);
+ get_base_manifest(app, m_old);
change_set::path_rearrangement work;
get_path_rearrangement(work);
@@ -2083,7 +2061,7 @@
app.require_working_copy();
- calculate_base_revision(app, rid, mid, man);
+ get_base_revision(app, rid, mid, man);
get_path_rearrangement(work);
extract_path_set(man, old_paths);
@@ -2588,7 +2566,7 @@
// check to make sure .mt-attr exists in
// current manifest.
manifest_map man;
- calculate_base_manifest(app, man);
+ get_base_manifest(app, man);
if (man.find(attr_path) == man.end())
{
P(F("registering %s file in working copy\n") % attr_path);
@@ -3683,9 +3661,9 @@
app.require_working_copy();
- calculate_base_revision(app,
- old_revision_id,
- old_manifest_id, m_old);
+ get_base_revision(app,
+ old_revision_id,
+ old_manifest_id, m_old);
get_path_rearrangement(work);
extract_path_set(m_old, old_paths);
--- manifest.cc
+++ manifest.cc
@@ -63,7 +63,6 @@
build_restricted_manifest_map(path_set const & paths,
manifest_map const & m_old,
manifest_map & m_new,
- path_set & missing_files,
app_state & app)
{
m_new.clear();
@@ -76,12 +75,11 @@
read_inodeprint_map(dat, ipm);
}
+ size_t missing_files = 0;
+
for (path_set::const_iterator i = paths.begin(); i != paths.end(); ++i)
{
- bool exists = file_exists(*i);
- bool included = app.restriction_includes(*i);
-
- if (included && exists)
+ if (app.restriction_includes(*i))
{
// compute the current sha1 id for included files
// we might be able to avoid it, if we have an inode fingerprint...
@@ -99,30 +97,31 @@
continue;
}
}
+
// ...ah, well, no good fingerprint, just check directly.
- hexenc ident;
- calculate_ident(*i, ident, app.lua);
- m_new.insert(manifest_entry(*i, file_id(ident)));
+ if (file_exists(*i))
+ {
+ hexenc ident;
+ calculate_ident(*i, ident, app.lua);
+ m_new.insert(manifest_entry(*i, file_id(ident)));
+ }
+ else
+ {
+ W(F("missing %s") % (*i)());
+ missing_files++;
+ }
}
- else if (included && !exists)
- {
- missing_files.insert(*i);
-
- // copy the old manifest entry for missing files
- manifest_map::const_iterator old = m_old.find(*i);
- N(old != m_old.end(),
- F("file missing but does not exist in old manifest: %s") % *i);
- m_new.insert(*old);
- }
else
{
// copy the old manifest entry for excluded files
manifest_map::const_iterator old = m_old.find(*i);
- N(old != m_old.end(),
- F("file restricted but does not exist in old manifest: %s") % *i);
- m_new.insert(*old);
+ if (old != m_old.end()) m_new.insert(*old);
}
}
+
+ N(missing_files == 0,
+ F("%d missing files\n") % missing_files);
+
}
// reading manifest_maps
--- manifest.hh
+++ manifest.hh
@@ -77,7 +77,6 @@
void build_restricted_manifest_map(path_set const & paths,
manifest_map const & m_old,
manifest_map & m_new,
- path_set & missing_files,
app_state & app);
void read_manifest_map(data const & dat,