mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Merge branch 'master' of github.com:loot/loot into german-translation
This commit is contained in:
@@ -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
@@ -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
@@ -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
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user