Как добавить хэши 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)