# # # patch "mtn_cvs/cvs_sync_push.cc" # from [4b19c7dd823bf02e72896eba7cd4a41de43718bf] # to [605dc95911f4584f28147eb362a7ab60ec257202] # ============================================================ --- mtn_cvs/cvs_sync_push.cc 4b19c7dd823bf02e72896eba7cd4a41de43718bf +++ mtn_cvs/cvs_sync_push.cc 605dc95911f4584f28147eb362a7ab60ec257202 @@ -246,6 +246,7 @@ std::set::iterator cvs_reposit a.removed=true; a.old_revision=old->second->cvs_version; a.keyword_substitution=old->second->keyword_substitution; + a.mode=old->second->mode; commits.push_back(a); L(FL("rename from %s -%s %s\n") % a.file % a.old_revision % a.keyword_substitution); @@ -286,6 +287,12 @@ std::set::iterator cvs_reposit a.file=file_path(i->first).as_internal(); // if (a.file==".mtn-sync-"+app.opts.domain) continue; a.new_content=app.get_file(i->second).inner()(); + std::map, attr_value>::const_iterator exec=cs->attrs_set.find(std::make_pair(file_path(i->first), attr_key("mtn:execute"))); + if (exec!=cs->attrs_set.end() && exec->second==attr_value("true")) + a.mode|=0111; + exec=cs->attrs_set.find(std::make_pair(file_path(i->first), attr_key("mtn:manual_merge"))); + if (exec!=cs->attrs_set.end() && exec->second==attr_value("true")) + a.keyword_substitution="-kb"; commits.push_back(a); L(FL("add %s %d\n") % a.file % a.new_content.size()); }