Как добавить хэши git в приложение Eclipse RCP на странице?

В прошлом, используя mercurial с Visual Studio, я использовал добавить меркурийные изменения в приложение для моего приложения, чтобы, когда пользователь сделал Help About, он перечислил всех компонентов и их точной ртутной ревизии. Он также регистрирует все идентификаторы изменений в файле журнала приложения каждый раз, когда он запускается. Эта процедура даже позволила мне увидеть, была ли изменена конкретная рабочая копия с момента последнего фиксации (mercurial hg id указывает на грязную рабочую копию, добавив + в конец идентификатора набора изменений, который он сообщает).

Это было невероятно полезно, поскольку это означало, что в любое время, когда пользователь сообщал о проблеме, я мог бы быстро построить именно ту версию, которую они использовали. Я мог бы также сказать, когда люди быстро взломали проблему, чтобы исправить проблему, и не внесли никаких изменений и не рассказали мне об этом.

Теперь я хотел бы реплицировать одно и то же средство в моем RCP-приложении git. К сожалению, я довольно новичок в разработке приложений git и Eclipse RCP, поэтому я немного не понимаю, будет ли работать тот же метод.

В частности, мне не удалось выяснить, как сделать эквивалент hg id с git, как заставить систему сборки Eclipse вызвать git для создания файла .gitignore d, содержащего идентификатор, так что его можно скомпилировать в приложение/подключаемый модуль или как получить эту информацию на странице справки > О себе.

Если вы сделали это или что-то подобное, мне бы понравились некоторые указания относительно того, как вы это сделали. В качестве альтернативы, я был бы рад услышать любые предложения об альтернативных способах достижения конечного результата, который я ищу.


С небольшим количеством google-fu, читающим за строками и экспериментированием, похоже, что git rev-parse HEAD или git rev-parse --short HEAD, вероятно, ближе всего к hg id, увы, я не могу найти способ указать, что работающий копия не чистая, поэтому мне кажется, что мне нужно проверить вывод git status --short, а если он не пустой, добавьте + в хеш-код фиксации вручную.

Теперь мне просто нужно понять, как заставить эти команды запускаться из системы сборки Eclipse и куда вводить эту информацию, чтобы она отображалась на страницах About.

Ответ 1

Я не могу поговорить с частью git этого вопроса, но я могу в некоторой степени на части RCP. Тем не менее, вы упомянули, что не являетесь поклонником замещения ключевых слов. Я ценю это, но насколько я знаю, что очень распространенная практика в рамках структуры построения RCP!

Диалоговое окно About можно контролировать с помощью файлов about.properties, about.mappings и about.ini. Rich Client Platform Book говорит об этом.

Что бы я сделал, это создать сборку файла about.mappings с вашим хэштегом git.

Ответ 2

Вы посмотрели на git описать?

http://linux.die.net/man/1/git-describe

Я использую этот вывод для нескольких разных проектов. Он даст вам самый близкий тег в прошлом, количество коммитов с тега и несколько символов из хэша.

Вот пример из manpage: v1.0.4-14-g2414721

В этом примере части:

  • тег равен 'v1.0.4'
  • после тега на этой ветке было 14 коммитов
  • префикс хеша 2414721

Если последняя фиксация отмечена, вы получите только имя тега: v1.0.4

Есть много полезных опций, но два наиболее важных для моих проектов:

--tags: Я использую легкие теги без знака, которые он по умолчанию не выбирает.

--match: Если у вас есть разные типы тегов, но вы хотите только сопоставить те, которые начинаются с 'v'.

С точки зрения процесса, то, что я делаю для серьезных проектов, также:

  • Измените версию и подсчитайте ее в формате rc или бета:

    tag v1.2-14 --> `1.3-rc14` or `1.3-beta14`
    

    Вы не можете строить 1.2, так как это было в прошлом, поэтому это должна быть 14-я версия следующей версии 1.3.

  • Подготовить название ветки, если это специальная ветка (не мастер и т.д.). Например, "v1.2-14" в ветке "featurex" будет производить:

    featurex-1.3-rc14
    
  • Добавить -modified или `-unsupported", если в сборке нет всего установленного. Это ваш ключ, который вы никогда не сможете воспроизвести.

     featurex-1.3-rc14-unsupported
    
  • Сохраните хэш на конце или на следующей строке в журналах или на экранах. Я обычно помещаю полный хеш в журналы и т.д., Но меньший префикс распространен: featurex-1.3-rc14 (2414721) Это хорошо работает с моим рабочим процессом. Когда я объединяю эту функцию в ветвь release, префикс уходит: 1.3-rc14 (2414721)

Когда тестирование завершено и версия отмечена, rc уходит: 1.3 (2414721)