Как я могу добавить git-хэши в мое приложение Eclipse RCP? О странице? - PullRequest
11 голосов
/ 29 марта 2012

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

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

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

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

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


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

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

Ответы [ 2 ]

1 голос
/ 09 апреля 2012

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

Диалог «О программе» может управляться с помощью файла about.properties, about.mappings и about.ini. Об этом говорится в Rich Client Platform Book .

Я хотел бы, чтобы ваша сборка генерировала файл about.mappings с вашим хэштегом git.

1 голос
/ 29 марта 2012

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

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

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

Вот пример с man-страницы: v1.0.4-14-g2414721

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

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

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

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

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

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

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

  1. Измените версию и считайте в формате rc или beta:

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

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

  2. Добавить название ветви, если это специальная ветка (не основная и т. Д.) Например, «v1.2-14» на ветке «featurex» выдаст:

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

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

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

...