Расширение 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 может быть недостаточно для запуска драйвера "фильтра содержимого".

Другие вопросы по тегам