Подтвердить что ты не робот

Это хорошая идея сохранить отдельные проекты в том же хранилище, если они тесно связаны друг с другом?

Я нахожусь на ранних стадиях веб-приложения, которое будет содержать клиентское JavaScript-приложение, которое развернуто в клиентском браузере, и API-интерфейс типа REST на стороне сервера, который будет находиться на моем сервере. Эти два будут общаться, используя данные Ajax и JSON.

Теперь вот вещь; они разрабатываются совершенно отдельно, даже не разделяя ни одну строку кода или один ресурс. Оба являются приложениями Node.js. На стороне сервера используется экспресс и секвелизация для всех компонентов на стороне сервера, а сторона клиента разрабатывается с использованием сервера разработки hem со стилусом и coffee-script и будет скомпилирована в 3 файла (index.html, application.js и application.css ) которые в конечном итоге будут развернуты сервером как статические данные.

Часть, в которой я не уверен, как управлять версиями. Должны ли они иметь общие или отдельные номера версий, например. Также как должен выглядеть репозиторий Git. Обычно ли корневая папка Git-репо содержит две или более папок с отдельными, но тесно связанными проектами? Или я должен разделить их по ветким, один называется сервером, другой называется клиентом? Или я должен разделить их на два отдельных хранилища в целом? (Это будет дороже, так как я использую частные репозитории GitHub)

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

4b9b3361

Ответ 1

Общее эмпирическое правило: "вещи, которые меняются в одно и то же время, должны быть свернуты вместе".

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

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

Ответ 2

Филиалы предназначены для создания параллельных версий общей базы кода (см. "Когда вы должны разветкить").
Таким образом, это не подходит для отслеживания двух разных, но тесно связанных модулей.

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

Ответ 3

С моей точки зрения я разделил бы client и server на две основные папки под root. Для этого есть несколько причин:

  • Клиенты и серверные релизы будут связаны (физически) друг с другом. Как и в любом случае, ваш клиент будет сильно связан с api, предоставляемым вашим серверным программным обеспечением. Поэтому, если вы помечаете репозиторий как выпуск, вы будете уверены, что оба артефакта работают плавно.

  • У вас будет меньше боли, чтобы реализовать сильные интеграционные тесты, а также внедрить непрерывную интеграционную инфраструктуру. С другими вариантами также можно привести это на место, но вам нужно будет предоставить дополнительные накладные расходы.

Использование общей ветки:

  • мастер обычно используется в качестве стабильного "моментального снимка" вашего приложения (включая клиента, сервера).
  • ветвь может использоваться для представления новой функции. Обычно они используются таким образом. Таким образом, вы можете иметь ветки 1..n, содержащие дополнения к вашему программному обеспечению. Который будет слит обратно к вашему хозяину, если вы будете счастливы с ним.