Merge branch 'master' of github.com:loot/loot into german-translation

This commit is contained in:
lpradel
2014-07-05 18:40:03 +02:00
5 changed files with 509 additions and 346 deletions
+3 -2
View File
@@ -443,13 +443,14 @@ A copy of the license is included in the file named "GNU FDL v1.3.txt".</blockqu
<h2 id="history">Version History</h2>
<p>Only program history is recorded here. The masterlists are updated far too frequently for their changes to be concisely recorded here, but a full history of changes to them may be viewed by browsing the GitHub repositories.
<h3>0.6.0 - <i>X Y 2014</i></h3>
<h3>0.6.0 - <i>05 July 2014</i></h3>
<ul>
<li>Fixed: The uninstaller not removing the Git repositories used to update the masterlists.
<li>Fixed: Miscellaneous crashes due to uncaught exceptions.
<li>Fixed: Plugin priorities are now temporarily "inherited" during sorting so that a plugin with a low priority that is made via metadata to load after a plugin with a high priority doesn't cause other plugins with lower priorities to be positioned incorrectly.
<li>Fixed: The default language is now correctly set to English.
<li>Fixed: Defaults for the online masterlist repository used for Nehrim.
<li>Fixed: Endless sorting loop that occurred if some user metadata was disabled.
<li>Added: Display of masterlist revision date in reports.
<li>Added: Report filter for inactive plugin messages.
<li>Added: The number of dirty plugins, active plugins and plugins in total to the report summary.
@@ -480,7 +481,7 @@ A copy of the license is included in the file named "GNU FDL v1.3.txt".</blockqu
<li>Changed: Cyclic dependency error messages now detail the full cycle.
<li>Changed: LOOT's report now uses a static HTML file and generates a javascript file that is dynamically loaded to contain the report data. This removes the PugiXML build dependency.
<li>Changed: Debug log message priorities adjusted so that medium verbosity includes more useful data.
<li>Changed: Updated libgit2 dependency to v0.21.0.
<li>Changed: Updated dependencies: libgit2 (v0.21.0), wxWidgets (v3.0.1), libloadorder (latest), libespm (latest).
</ul>
<h3>0.5.0 - <i>31 March 2014</i></h3>
File diff suppressed because it is too large Load Diff
+65
View File
@@ -119,6 +119,23 @@ msgstr ""
msgid "Rolled back to the previous revision."
msgstr ""
#: gui/editor.cpp:73
msgid ""
"Compare priority against all other plugins"
msgstr ""
#: gui/editor.cpp:100
msgid "User Metadata Enabled"
msgstr ""
#: gui/editor.cpp:101
msgid "Plugin Name"
msgstr ""
#: gui/editor.cpp:103
msgid "Global Priority"
msgstr ""
#: gui/editor.cpp:159 gui/editor.cpp:326 gui/editor.cpp:464
msgid ""
"Please submit any edits made for reasons other than personal preference to "
@@ -154,6 +171,10 @@ msgstr ""
msgid "Condition"
msgstr ""
#: gui/editor.cpp:182
msgid "Otherwise, priorities are only compared between conflicting plugins."
msgstr ""
#: gui/editor.cpp:199 gui/editor.cpp:577
msgid "Select a plugin to edit its load order metadata."
msgstr ""
@@ -394,6 +415,10 @@ msgstr ""
msgid "LOOT: Edit Dirty Info"
msgstr ""
#: gui/editor.cpp:1158
msgid "If LOOT has gotten something wrong, please let the team know. See the Contributing To LOOT section of the readme for details."
msgstr ""
#: gui/main.cpp:120
msgid "Masterlist update failed. Details: %1%"
msgstr ""
@@ -843,6 +868,46 @@ msgstr ""
msgid "Install Path Registry Key:"
msgstr ""
#: backend/generators.cpp:324
msgid "Version Information"
msgstr ""
#: backend/generators.cpp:330
msgid "Masterlist Revision"
msgstr ""
#: backend/generators.cpp:333
msgid "Masterlist Date"
msgstr ""
#: backend/generators.cpp:339
msgid "Plugin & Message Counts"
msgstr ""
#: backend/generators.cpp:342
msgid "Total Plugins"
msgstr ""
#: backend/generators.cpp:345
msgid "Active Plugins"
msgstr ""
#: backend/generators.cpp:348
msgid "Dirty Plugins"
msgstr ""
#: backend/generators.cpp:351
msgid "Total Messages"
msgstr ""
#: backend/generators.cpp:354
msgid "Warnings"
msgstr ""
#: backend/generators.cpp:357
msgid "Errors"
msgstr ""
#: backend/generators.h:57
msgid "Note:"
msgstr ""
+45 -7
View File
@@ -43,7 +43,7 @@ namespace loot {
struct git_handler {
public:
git_handler() : repo(nullptr), remote(nullptr), cfg(nullptr), obj(nullptr), commit(nullptr), ref(nullptr), sig(nullptr), blob(nullptr) {}
git_handler() : repo(nullptr), remote(nullptr), cfg(nullptr), obj(nullptr), commit(nullptr), ref(nullptr), ref2(nullptr), sig(nullptr), blob(nullptr), merge_head(nullptr) {}
~git_handler() {
git_commit_free(commit);
@@ -52,8 +52,10 @@ namespace loot {
git_remote_free(remote);
git_repository_free(repo);
git_reference_free(ref);
git_reference_free(ref2);
git_signature_free(sig);
git_blob_free(blob);
git_merge_head_free(merge_head);
}
void call(int error_code) {
@@ -81,8 +83,11 @@ namespace loot {
git_object * obj;
git_commit * commit;
git_reference * ref;
git_reference * ref2;
git_signature * sig;
git_blob * blob;
git_merge_head * merge_head;
std::string ui_message;
};
@@ -246,7 +251,7 @@ namespace loot {
}
else {
// Repository exists: check settings are correct, then pull updates.
git.ui_message = "An error occurred while trying to access the local masterlist repository.";
git.ui_message = "An error occurred while trying to access the local masterlist repository. If this error happens again, try deleting the \".git\" folder in \"%LOCALAPPDATA%\\LOOT\\" + game.FolderName() + "\".";
// Open the repository.
BOOST_LOG_TRIVIAL(info) << "Existing repository found, attempting to open it.";
@@ -279,6 +284,7 @@ namespace loot {
BOOST_LOG_TRIVIAL(info) << "Received " << stats->indexed_objects << " of " << stats->total_objects << " objects in " << stats->received_bytes << " bytes.";
// Check that a branch with the correct name exists.
git.ui_message = "An error occurred while trying to access the local masterlist repository. If this error happens again, try deleting the \".git\" folder in \"%LOCALAPPDATA%\\LOOT\\" + game.FolderName() + "\".";
int ret = git_branch_lookup(&git.ref, git.repo, repo_branch.c_str(), GIT_BRANCH_LOCAL);
if (ret == GIT_ENOTFOUND) {
// Branch doesn't exist. Create a new branch using the remote branch's latest commit.
@@ -317,12 +323,44 @@ namespace loot {
if (ret == 0) {
/* The branch did exist, and is now pointed at by HEAD.
Need to merge the remote branch into it.
1. git_merge_head_from_fetchhead to get the remote branch object to merge with.
2. git_merge to merge the remote branch object into HEAD, which is set to be
the desired branch.Docs say a commit may be necessary after this.
Need to merge the remote branch into it. Just do a fast-forward merge because
that's all that should be necessary as the local repo shouldn't get changed by
the user.
*/
BOOST_LOG_TRIVIAL(trace) << "Checking that local and remote branches can be merged by fast-forward.";
git_merge_analysis_t analysis;
git_merge_preference_t pref;
git.call(git_reference_lookup(&git.ref2, git.repo, (string("refs/remotes/origin/") + repo_branch).c_str()));
git.call(git_merge_head_from_ref(&git.merge_head, git.repo, git.ref2));
git.call(git_merge_analysis(&analysis, &pref, git.repo, (const git_merge_head **)&git.merge_head, 1));
if ((analysis & GIT_MERGE_ANALYSIS_FASTFORWARD) != 0) {
BOOST_LOG_TRIVIAL(trace) << "Local branch can be fast-forwarded to remote branch.";
// The remote branch reference points to a particular commit. We just want to
// update the local branch reference to point to the same commit.
// Get the commit object ID.
git.call(git_reference_peel(&git.obj, git.ref2, GIT_OBJ_COMMIT));
const git_oid * commit_id = git_object_id(git.obj);
git_reference_free(git.ref2);
git.ref2 = nullptr;
git_object_free(git.obj);
git.obj = nullptr;
// Set the reference target.
git.call(git_reference_set_target(&git.ref2, git.ref, commit_id, git.sig, "Setting branch reference."));
git_reference_free(git.ref2);
git.ref2 = nullptr;
}
else if ((analysis & GIT_MERGE_ANALYSIS_UP_TO_DATE) != 0) {
BOOST_LOG_TRIVIAL(trace) << "Local branch is up-to-date with remote branch.";
}
else {
throw error(error::git_error, "Local repository has been edited, an automatic fast-forward merge update is not possible.");
}
}
// Free branch pointer.
+3 -18
View File
@@ -110,24 +110,9 @@ struct masterlist_updater_parser {
if (_doUpdate) {
BOOST_LOG_TRIVIAL(debug) << "Updating masterlist";
try {
try {
pair<string, string> ret = UpdateMasterlist(_game, _errors, _plugins, _messages);
_revision = ret.first;
_date = ret.second;
}
catch (loot::error &e) {
BOOST_LOG_TRIVIAL(error) << "Masterlist update failed. Details: " << e.what();
if (e.code() == loot::error::git_error) {
BOOST_LOG_TRIVIAL(info) << "Masterlist update failure was due to Git error, deleting repository and retrying...";
//Delete .git folder and try again.
fs::remove_all(_game.MasterlistPath().parent_path() / ".git");
pair<string, string> ret = UpdateMasterlist(_game, _errors, _plugins, _messages);
_revision = ret.first;
_date = ret.second;
}
else
throw e;
}
pair<string, string> ret = UpdateMasterlist(_game, _errors, _plugins, _messages);
_revision = ret.first;
_date = ret.second;
} catch (std::exception& e) {
_plugins.clear();
_messages.clear();