Cli: Delete change file on repository commit

refs #7255
This commit is contained in:
Michael Friedrich 2014-10-27 11:02:14 +01:00
parent 8ce4b3f122
commit 3d86ae6750
2 changed files with 18 additions and 9 deletions

View File

@ -141,7 +141,7 @@ bool RepositoryUtility::RemoveObject(const String& name, const String& type, con
bool RepositoryUtility::CommitChangeLog(void) bool RepositoryUtility::CommitChangeLog(void)
{ {
GetChangeLog(boost::bind(RepositoryUtility::CommitChange, _1)); GetChangeLog(boost::bind(RepositoryUtility::CommitChange, _1, _2));
return true; return true;
} }
@ -322,7 +322,7 @@ void RepositoryUtility::CollectObjects(const String& object_file, std::vector<St
} }
bool RepositoryUtility::GetChangeLog(const boost::function<void (const Dictionary::Ptr&)>& callback) bool RepositoryUtility::GetChangeLog(const boost::function<void (const Dictionary::Ptr&, const String&)>& callback)
{ {
std::vector<String> changelog; std::vector<String> changelog;
String path = GetRepositoryChangeLogPath() + "/"; String path = GetRepositoryChangeLogPath() + "/";
@ -334,13 +334,14 @@ bool RepositoryUtility::GetChangeLog(const boost::function<void (const Dictionar
std::sort(changelog.begin(), changelog.end()); std::sort(changelog.begin(), changelog.end());
BOOST_FOREACH(const String& entry, changelog) { BOOST_FOREACH(const String& entry, changelog) {
Dictionary::Ptr change = GetObjectFromRepositoryChangeLog(path + entry + ".change"); String file = path + entry + ".change";
Dictionary::Ptr change = GetObjectFromRepositoryChangeLog(file);
Log(LogInformation, "cli") Log(LogInformation, "cli")
<< "Collecting entry " << entry << "\n"; << "Collecting entry " << entry << "\n";
if (change) if (change)
callback(change); callback(change, file);
} }
return true; return true;
@ -355,7 +356,7 @@ void RepositoryUtility::CollectChangeLog(const String& change_file, std::vector<
changelog.push_back(file); changelog.push_back(file);
} }
void RepositoryUtility::CommitChange(const Dictionary::Ptr& change) void RepositoryUtility::CommitChange(const Dictionary::Ptr& change, const String& path)
{ {
Log(LogInformation, "cli") Log(LogInformation, "cli")
<< "Got change " << change->Get("name"); << "Got change " << change->Get("name");
@ -369,11 +370,19 @@ void RepositoryUtility::CommitChange(const Dictionary::Ptr& change)
attr = change->Get("attr"); attr = change->Get("attr");
} }
bool success = false;
if (command == "add") { if (command == "add") {
AddObjectInternal(name, type, attr); success = AddObjectInternal(name, type, attr);
} }
else if (command == "remove") { else if (command == "remove") {
RemoveObjectInternal(name, type, attr); success = RemoveObjectInternal(name, type, attr);
}
if (success) {
Log(LogInformation, "cli")
<< "Removing changelog file '" << path << "'.";
RemoveObjectFileInternal(path);
} }
} }

View File

@ -76,8 +76,8 @@ private:
static bool WriteObjectToRepositoryChangeLog(const String& path, const Dictionary::Ptr& item); static bool WriteObjectToRepositoryChangeLog(const String& path, const Dictionary::Ptr& item);
static Dictionary::Ptr GetObjectFromRepositoryChangeLog(const String& filename); static Dictionary::Ptr GetObjectFromRepositoryChangeLog(const String& filename);
static bool GetChangeLog(const boost::function<void (const Dictionary::Ptr&)>& callback); static bool GetChangeLog(const boost::function<void (const Dictionary::Ptr&, const String&)>& callback);
static void CommitChange(const Dictionary::Ptr& change); static void CommitChange(const Dictionary::Ptr& change, const String& path);
static void CollectChange(const Dictionary::Ptr& change, Array::Ptr& changes); static void CollectChange(const Dictionary::Ptr& change, Array::Ptr& changes);
/* config print helpers */ /* config print helpers */