Как обернуть слияние файлов git с предварительной и постобработкой?

Я бы хотел иметь возможность вызывать некоторую предварительную обработку файлов, прежде чем Git попытается их объединить, и пост-обработку объединенного результата. Общая идея здесь в том, что некоторые файлы являются сложными для автоматического объединения как есть, но его можно преобразовать в более простую для обработки форму. Вот мои конкретные вариант использования:

У меня есть репозиторий в основном не очень конфиденциальных данных. В этом репозитории у меня есть немного зашифрованных конфиденциальных данных в файле с именем sensitive.pgp . Мне нравится этот механизм, потому что мне не нужно доверять безопасному управлению моим репозиторием, мне просто нужно доверять шифрованию и паролю. Уловка, конечно же, заключается в том, что Git не может объединить зашифрованный текст, поэтому, если sensitive.pgp изменяется сразу в двух проверках, объединение недоступно - даже если изменения в открытом тексте легко разделены.Рабочий процесс вручную выглядит следующим образом:

  1. Обнаружен конфликт слияния для sensitive.pgp .
  2. Запустите git-mergetool. Инструмент также не может объединить файлы PGP.
  3. Теперь у меня есть временные файлы для моей версии, базовой версии и удаленной версии.
  4. Расшифровать все три файла.
  5. Вызвать мой инструмент слияния для расшифрованных версий.
  6. Зашифровать результат.
  7. git-добавьте новый sensitive.pgp .

Я хотел бы сказать Git, чтобы он применил мою предварительную и постобработку, прежде чем он даже попытается объединиться, чтобы он мог справиться с этим автоматически. Я могу представить себе множество других сценариев с тем же общим шаблоном: практически каждый раз, когда у вас есть сжатый формат файла с текстовой базовой структурой (например, PDF, OpenOffice, Word).

Есть предложения?

6
задан Eric Anderson 21 October 2011 в 19:12
поделиться