Всем привет, JavaRush сообщество! Оптимизируем работу со своими проектами на GitHub: знакомство с Github Template Repository - 1 Сегодня поговорим об open source и о том, что нужно для создания качественного проекта ПОМИМО кода, который пишется. Важно писать полезный продукт. Но не менее важно и правильное оформление repository (репозитория проекта на GitHub). Это поможет в реализации еще одного ключевого момента — продвижении продукта. Будь проект хоть супер крутой, но если он плохо оформлен, не описан хотя бы в README(о том что такое README можно почитать здесь), не обозначена лицензия и прочее прочее прочее, успеха не будет. Просто его никто не заметит. А если кто-то и заметит, не будет знать, как с ним взаимодействовать. Есть много вещей, которые нужно заполнять из раза в раз, и каждый раз копипастить не с руки программисту, и вот как раз для этого летом этого года GitHub выпустили Template Repository фичу, которая помогает в этом. Так сказать, автоматизировать процесс создания новых проектов. Сегодня разберемся с тем, что такое Repository, что такое Template Repository. Опишем что должно быть в проекте помимо кода, на какие вещи нужно заострить внимание. Создадим с нуля Template Repository, добавим все необходимое с моей точки зрения. И, в конце, применим Template Repository при создании нового репозитория. Но сперва разберемся с терминами.

Repository — что-то наподобии папки для проекта в GitHub. Репозиторий содержит все файлы, которые относятся к проекту. Он хранит всю историю изменений проекта, что очень важно.

При помощи Issues вкладки можно создавать дефекты, улучшения, вопросы к проекту.

При помощи Projects можно создавать канбан доски для отслеживания статуса задач (issues), их выполнения и планирования.

Template repository — это шаблон, на основании которого можно создавать новые репозитории. Шаблон, который содержит общий код для всех репозиториев.

Теория: что должно быть в общем репозитории любого проектаОптимизируем работу со своими проектами на GitHub: знакомство с Github Template Repository - 2В каждом open source проекте на GitHub должен быть хорошо описан Community Profile, который содержит следующие элементы.

1. Issue template

Здесь нужно описать правила создания issue в репозитории: как они должны называться, какой будет label, кто будет заасайнен на него. При создании нового Issue, будут предложены такие варианты:
  • Bug report — создание issue с целью описать дефект на проекте;
  • Feature request — предложение новой идеи для проекта;
  • Improvement request — предложение по улучшению на проекте;
  • Custom issue template — если другие варианты не подошли, можно использовать пустой шаблон.
Пример того, как это выглядит, можно посмотреть здесь.

2. License

Лицензия, под которой пишется проект. Она необходима, чтобы те, кто будет использовать проект, знали что гарантируется, а что нет. Например, лицензия Apache License 2.0 говорит следующее: Оптимизируем работу со своими проектами на GitHub: знакомство с Github Template Repository - 3

3. README

Это описание проекта, его визитная карточка. Всё, что нужно сказать о проекте, должно быть здесь. Разумеется, его нужно будет описывать каждый раз, учитывая специфику проекта, но заголовки будут одни и те же. Например:
  • Overview — краткое описание проекта;
  • Usage — как использовать проект;
  • Building — как запустить проект, что для этого нужно;
  • Troubleshooting — здесь описывается то, с какими проблемами можно столкнуться и как их решить;
  • Release Notes — описание изменений в зависимости от версии;
  • Authors — не забываем и о себе любимых;
  • Contributing — описание того, как можно поучаствовать в разработке проекта;
  • Code of Conduct — описание правил участия;
  • RELEASE_NOTES — файл, в котором записываются все изменения для новых версий. Хорошая практика вынести это в отдельный документ, а в README хранить ссылку для перехода;
  • CONTRIBUTING — файл, в котором описано, как можно внести вклад в развитие этого проекта. Сделан как отдельный файл для Contributing заголовка в README;
  • CODE_OF_CONDUCT — файл, в котором описаны правила для участия в развитии проекта;
  • Pull Request template — шаблон для тех, кто будет создавать pull-request.
Все эти вещи используются от проекта к проекту независимо ни от языка программирования, ни от его специфики.

Практика: создаем свой собственный шаблон

Как говорится, от слов переходим к делу. Сейчас на примере я покажу, как создать собственный шаблон.
  1. Первое, что понадобится — аккаунт на GitHub / зарегистроваться там.

  2. Создаем новый репозиторий: для этого в верхнем правом углу нажимаем +

    Оптимизируем работу со своими проектами на GitHub: знакомство с Github Template Repository - 4
  3. При создании заполняем:

    • Repository name — в моем случае repository-template;
    • Description — краткое описание проекта;
    • оставляем Public, хотя можно выбрать и Private;
    • Ставим галочку инициализации README:

      Оптимизируем работу со своими проектами на GitHub: знакомство с Github Template Repository - 5
    • Выбираем лицензию, под которой будет проект:

      Оптимизируем работу со своими проектами на GitHub: знакомство с Github Template Repository - 6

      Так как в моем случае шаблон общий, то и gitignore не нужен: он будет добавлен уже для конкретного проекта и языка программирования.

      Поэтому нажимаем Create Repository, тем самым завершая процесс создания. Система автоматически перенесет нас в свежесозданный репозиторий.

  4. Заполнение Community Profile: в созданном репозитории заходим во вкладку Insights и выбираем Community:

    Оптимизируем работу со своими проектами на GitHub: знакомство с Github Template Repository - 7

    Как видим, осталось заполнить Code of Conduce, Contributing, Issue Template, Pull Request template.

    На примере с Code of Conduct покажем, как добавить их на проект.

    Нажимаем add, система предлагает выбрать Contributor Covenant или Citizen Code of Conduct:

    Оптимизируем работу со своими проектами на GitHub: знакомство с Github Template Repository - 8

    Я выбираю первое и нажимаю Review and Submit.

    Оптимизируем работу со своими проектами на GitHub: знакомство с Github Template Repository - 9

    Далее, можно будет отредактировать этот файл и уже закоммитить.

    Внизу выбираем опцию Commit directly to the master branch и нажимаем Commit new file:

    Оптимизируем работу со своими проектами на GitHub: знакомство с Github Template Repository - 10

    В итоге, если перейдем обратно в Community Profile, обнаружим, что Code of Conduct помечен как добавленный:

    Оптимизируем работу со своими проектами на GitHub: знакомство с Github Template Repository - 11

    Contributing и Issue Template добавляется аналогичным образом, поэтому показывать этого не буду. Сделайте сами ;)

  5. Добавляем Pull Request template.

    А вот об этом поговорим отдельно.

    Не знаю, по какой причине GitHub не добавил такую же удобную опцию для настройки шаблона Pull-Request’ов, поэтому придется изучить мурзилку документацию и руками добавить.

    Для этого в корне репозитория нажимаем Create new file:

    Оптимизируем работу со своими проектами на GitHub: знакомство с Github Template Repository - 12

    Имя файла должно быть следующее: .github/pull_request_template.md.

    Добавляем что нужно в шаблон и нажимаем Commit new file, как уже делали выше. Я не собирался изобретать велосипед и нашел пример, который мне показался вполне используемым.

    Таким образом, весь Community Profile будет заполнен:

    Оптимизируем работу со своими проектами на GitHub: знакомство с Github Template Repository - 13
  6. Добавляем маркер Template Repository.

    Для этого нужно перейти в опцию Settings в репозитории и поставить галочку там, где написано Template Repository:

    Оптимизируем работу со своими проектами на GitHub: знакомство с Github Template Repository - 14

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

Как использовать Template Repository

В использовании есть два варианта:

  1. Когда шаблон принадлежит непосредственно вам: при создании нового репозитория будет предоставлена опция создании на основе шаблона из списка принадлежащих вам шаблонов:

    Оптимизируем работу со своими проектами на GitHub: знакомство с Github Template Repository - 15
  2. Когда шаблон чужой: здесь тоже нет особых проблем. Переходим на тот шаблон и нажимаем кнопку Use this template. Здесь я воспользуюсь анимацией из официальной доки:

Подведем итоги

В этой статье мы разобрали:
  • что такое GitHub repository;
  • что такое Template repository;
  • что должно быть в Template repository;
  • как создать Template Repository;
  • как использовать Template Repository.
Разумеется, на основании этого шаблона уже можно создавать более конкретные. Например я создал еще шаблоны уже с настроенными maven или gradle системами сборки. Дальше больше: можно на основании последних двух создать Spring Boot Repository Template. Чтобы сгруппировать все шаблоны, я создал template-repository организацию в GitHub со всеми шаблонами. Подписывайтесь на мой GitHub аккаунт

Полезные ссылки

Оптимизируем работу со своими проектами на GitHub: знакомство с Github Template Repository - 17

Еще мои статьи