2016-03-09 3 views
1

Я новый пользователь для github.com, и я пытаюсь создать мобильное приложение, которое состоит из двух частей: кода клиента и кода сервера. Клиентский код будет написан на Java для Android, Swift для iOS и C# для Windows Phone. Серверная часть будет написана на PHP, HTML, Javascript и CSS.папка vs репозиторий в github

Мой вопрос в том, как я должен структурировать код? Должен ли я помещать код сервера и код клиента в разные репозитории или я должен просто поместить их в разные папки в том же хранилище? Кроме того, поскольку есть несколько клиентов (Android, iOS и Windows), я должен помещать их в разные репозитории или в разные папки?

Я уже знаю, что это можно сделать, но я хочу знать, что такое стандартная процедура и какие преимущества/недостатки.


Существует много возможных решений этой проблемы. Ответ, предоставленный saljuama, является наиболее полным.

После изучения нескольких проектов в github я обнаружил, что одним из способов сделать это является создание отдельных хранилищ для клиента и сервера. Если у вас несколько клиентских кодов (как в моем случае), вы можете использовать один и тот же репозиторий, но разные make-файлы.

Я нашел способ делать вещи на https://github.com/CasparCGserver является другое хранилище, чем client. Кроме того, клиенты используют одни и те же файлы src, lib и другие, но каждый из них имеет build scripts. Как отметил saljuama, этот метод имеет смысл, когда ваши клиенты используют одну и ту же базу кода. Если ваши клиенты не используют одну и ту же кодовую базу, см. Ответ saljuama.

Это не единственный возможный способ. Вы можете сделать это по-своему.

ответ

1

Тема довольно широкая и может быть основана на мнениях, но я постараюсь оставаться как можно нейтральнее.

Согласно первому принципу 12factor codebase, каждое приложение должно иметь свою собственную базу кода (или репозиторий). Поскольку клиент и сервер - разные приложения, они не должны использовать одно и то же репо.

Одной из причин того, почему наличие в одном и том же хранилище является плохой идеей, является использование систем непрерывной интеграции и непрерывной доставки. Поскольку push-репозиторий обычно запускает эти процессы, выполнение изменения на одной из сторон сделает сервер CI/CD обработкой обеих сторон приложения, когда это не понадобится.

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


Update:

Чтобы ответить на обновление на ваш вопрос, если различные клиенты имеют точно такие же кодовое, если вы продолжаете читать о принципах приложения на 12-факторе, configuration и builds, то одно репо - это то, что вы должны использовать.

+0

Спасибо! Именно то, что я искал. –

+0

Если я правильно понимаю, это также означает, что каждый из клиентов (Android, iOS и Windows) должен находиться в другом хранилище? –

+0

Да, имеет смысл держать каждого клиента на собственном репо – saljuama

Смежные вопросы