Это может не относиться к вам;Прочтите последний абзац, если он не звучит так.
Я не уверен, что это то, что вам нужно, но мне нужны различия в содержании UTF-16LE больше, чемпросто «двоичные файлы различны» - когда я искал его несколько месяцев назад, я нашел ветку и ошибку, обсуждающую это; вот часть этого .Я не могу найти исходный источник этого мини-расширения сейчас (хотя он делает только то, что делает этот патч), но я получил расширение BOM.py
:
#!/usr/bin/env python
from mercurial import hg, util
import codecs
boms = [
codecs.BOM_UTF8,
codecs.BOM_UTF16_BE, codecs.BOM_UTF16_LE,
codecs.BOM_UTF32_BE, codecs.BOM_UTF32_LE
]
def binary(s):
if s:
for bom in boms:
if s.startswith(bom):
return False
return '\0' in s
return False
def reposetup(ui, repo):
util.binary = binary
Это загружается в.hgrc (или ваши пользователи \ username \ mercurial.ini), например так:
[extensions]
bom = ~/.hgexts/BOM.py
Обратите внимание, что путь будет отличаться между Windows и Linux;в моей копии Windows я поставил путь как \...\whatever
(он находится на USB-диске, где буква диска может измениться).К сожалению, относительные пути взяты относительно текущего рабочего каталога, а не из корня хранилища или чего-либо подобного, но если вы сохраняете его на диске C :, вы можете просто указать полный путь.
В Linux (моя основная среда разработки), это работает хорошо;в командной строке (которую я до сих пор использую регулярно) она обычно работает хорошо.Я никогда не пробовал это в PowerShell, но я ожидаю, что он будет лучше, чем командная строка, для поддержки произвольных нулевых байтов в командной строке.
Я не уверен, что это то, что вам нужно ввсе;кстати, вы сказали «двоичные различия», я подозреваю, что вы, возможно, уже имеете это или делаете hg diff -a
, что позволяет достичь того же самого.В этом случае все, о чем я могу думать, это написать другое расширение, которое принимает UTF-16LE и пытается декодировать его в UTF-8.Я не уверен в синтаксисе для такого расширения, но я мог бы попробовать это.
Редактировать: , теперь перебирая источник ртути с помощью commands.py, cmdutil.py, patch.py и mdiff.py, я вижу, что двоичные различия выполняются с кодировкой base85 (patch.b85diff), а не обычным diff.Я не знал об этом, я думал, что это просто заставило это испытать это.В таком случае, возможно, этот текст является релевантным в конце концов.Я жду ответа, чтобы увидеть, если это так!