-
anonym authored
I used this hacky approach: git diff 6b9e13f1^..origin/master -- *.po > lots-of-fuzzy.patch patch -R -p1 < lots-of-fuzzy.patch git commit So I undid all the PO changes of #17005. The idea is to unfuzzy lots-of-fuzzy.patch and then apply this patch instead, and then squash those changes into the "revert" commit we made above, turning it into the commit I'm writing right now. The fuzzy cases I care aboute looke like this: -#, no-wrap -msgid "Online anonymity and censorship circumvention\n" +#, fuzzy, no-wrap +#| msgid "Online anonymity and censorship circumvention\n" +msgid "Online anonymity and censorship circumvention" msgstr "Onlineanonymität und Zensurumgehung\n" and should be transformed into this: #, no-wrap -msgid "Online anonymity and censorship circumvention\n" +msgid "Online anonymity and censorship circumvention" -msgstr "Onlineanonymität und Zensurumgehung\n" +msgstr "Onlineanonymität und Zensurumgehung" Behold this ugly state machine (my favored way of solving these kind of problems in small steps without having to think much about the whole problem): out = open('unfuzzy.patch', 'w') state = 0 fuzzy_buf = '' unfuzzy_buf = '' File.read('lots-of-fuzzy.patch').each_line do |line| line = line.chomp fuzzy_buf += line + "\n" if state == 0 && line == '-#, no-wrap' state = 1 unfuzzy_buf += " #, no-wrap\n" elsif state == 1 && /^-msgid ".*\\n"/.match(line) state = 2 unfuzzy_buf += line + "\n" elsif state == 1 && line == '-msgstr ""' ; elsif state == 2 && line == '+#, fuzzy, no-wrap' state = 3 elsif state == 3 && /^\+#| msgid ".*\\n"/.match(line) state = 4 elsif state == 4 && /^\+msgid ".*"/.match(line) state = 5 unfuzzy_buf += line + "\n" elsif state == 5 && /^ msgstr ".*\\n"/.match(line) state = 6 unfuzzy_buf += "-" + line[1..] + "\n" unfuzzy_buf += "+" + line[1..-4] + '"' + "\n" elsif state == 6 && /^\s*$/.match(line) state = 0 # Eh, so in total the above transformations mean that our hunk # results in one less line, so the diff offset is off by one => # bad patch! So we just add a line that we easily can remove # later. :) unfuzzy_buf += "+########sdf9s7d87fyusdf98sd7f098sd7f09sduf09uj######\n" unfuzzy_buf += line + "\n" out.write(unfuzzy_buf) fuzzy_buf = '' unfuzzy_buf = '' else state = 0 out.write(fuzzy_buf) fuzzy_buf = '' unfuzzy_buf = '' end end Then I applied unfuzzy.patch and used sed to kill the weird lines I had to introduce (see above): pattern="########sdf9s7d87fyusdf98sd7f098sd7f09sduf09uj######" for f in $(git grep -l ${pattern}); do sed -i "/${pattern}/d" ${f} done and squashed, and now we have 1386 fewer fuzzy strings, yay! And po_lint does not complain, which seems like a good sign. :)
a5e62488