This week, I mainly focused on completing the automatic and manual merging of filesets. During my discussion with Sev, I realized that I had not fully understood the purpose and origin of the Megakey before, so I am documenting it here.
First, what is a Megakey:
Megakey is a combined key, coming from the detection entry.
Why do we need a Megakey:
The purpose of the Megakey is to understand that we are dealing with the same detection entry. “You need this for updating the metadata in the DB since, over time, we will accumulate full sets, but still, we add game entries to the games on a regular basis.
Also, we do occasional target renames, so we cannot use that for the Megakey either.”
Where does it come from:
When you see that this is a detection set, then you need to compute the Megakey (on the Python side).
For example:
For any fileset, there should be a possibility to merge manually. So, let’s say we change the language of an entry from en to en-us. This will create a new fileset with en-us because the Megakey is different, but a developer could go to the log, click on the fileset reference, and merge it.
Or, say, a new file is added to the detection entry. The Megakey will not match, so you will again create a new entry, but the developer who made this change knows what they’re doing and can go and merge manually.
Additionally, I improved the query operations on the fileset page, as I mistakenly performed many redundant calculations before.
I enhanced the comparison page during the merge process by highlighting the items with differences.
So far, both automatic and manual merging are functioning correctly.