Расширение Eclipse Git для ключевых слов
Мне нужно обновлять ключевые слова ревизии исходного кода (@version, @date и т. Д.) Каждый раз, когда я проверяю исходный код на сервере git-hub.
Как вы, возможно, знаете:
Основная проблема с этим в Git состоит в том, что вы не можете изменить файл с информацией о коммите после того, как вы его зафиксировали, потому что Git сначала проверяет суммы файла.
По сути, я хочу, чтобы мой исходный код выглядел следующим образом:
* Git revision information:
*
* @version $Revision: 1e7f611039399b32e9000ec454609a0641dde368 $
* @author $Author: Eugen Mihailescu <eugenmihailescux@gmail.com> $
* @date $Date: Thu May 3 01:17:45 2012 +0200 $
*
* $Id: | Thu May 3 01:17:45 2012 +0200 | Eugen Mihailescu $
Здесь и здесь вы можете найти полное описание того, как вы можете достичь этого в Git.
Оказывается, вы можете написать свои собственные фильтры для выполнения подстановок в файлах при коммите / оформлении заказа. Это "чистые" и "грязные" фильтры. В файле.gitattributes вы можете установить фильтр для определенных путей, а затем настроить сценарии, которые будут обрабатывать файлы непосредственно перед их извлечением ("smudge", см. Рис. 7-2) и непосредственно перед их фиксацией.
Так что я знаю, как это сделать с помощью команды git. Я проверил, это просто работает! Моя настоящая проблема в том, что я хотел бы добиться того же, используя Eclipse IDE. В Eclipse у меня есть Eclipse Git, который является поставщиком Eclipse Team на основе JGit, чистой Java-реализации системы контроля версий Git.
В Eclipse EGit нет такой команды "git checkout", но это можно сделать путем аппаратного сброса (щелкните правой кнопкой мыши ваш проект, затем выберите Team -> Reset -> Hard). К сожалению, это не запустит ваши фильтры clean / smudge, фактически вы получите простую копию ваших источников из git-хаба без расширения ключевых слов.
Я надеюсь, что я подробно описал всю историю, потому что теперь я спрошу:
- это возможно в Eclipse с помощью EGit?
1 ответ
Этот коммит (август 2010) прокомментировал
Выполните автоматическое преобразование CRLF в LF во время WorkingTreeIterator
WorkingTreeIterator
теперь необязательно выполняет преобразование CRLF в LF для текстовых файлов.
Базовая структура остается на месте для поддержки включения (или отключения) этой функции на основеgitattributes
, а также для поддержки более общей системы очистки / удаления пятен.
Как нетgitattribute
поддержка еще в JGit это не реализовано, ноmightNeedCleaning()
,isBinary()
а такжеfilterClean()
методы обеспечат разумные места для подключения в будущем.
Я не думаю gitattribute
полностью поддерживается в последних выпусках JGit и в последней редакции WorkingTreeIterator
еще пустой filterClean()
функция.
Таким образом, одного JGit может быть недостаточно для запуска драйвера "фильтра содержимого".