- size_t const size = list.size();
- list.remove_if(BranchNamesEqual(s));
- return size != list.size();
+ size_t const size = list_.size();
+ list_.remove_if(BranchNamesEqual(s));
+ return size != list_.size();
+}
+
+
+bool BranchList::rename(docstring const & oldname,
+ docstring const & newname, bool const merge)
+{
+ if (newname.empty())
+ return false;
+ if (find_if(list_.begin(), list_.end(),
+ BranchNamesEqual(newname)) != list_.end()) {
+ // new name already taken
+ if (merge)
+ return remove(oldname);
+ return false;
+ }
+
+ Branch * branch = find(oldname);
+ if (!branch)
+ return false;
+ branch->setBranch(newname);
+ return true;