Можно ли хранить два разных вида кода в одном и том же git-репозитории?

6

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

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

Мы разработали три схемы организации кода:

Схема 1: Поместите Matlab и PHP в один и тот же репозиторий. Разделите Matlab на "Веб-сайт" (основной филиал a.k.a.), "Develop1", "Develop2" и т.д. Разработчики работают в своем собственном филиале, и периодически мы объединяем ветки разработки в ветку сайта.

Схема 2: Поместите Matlab и PHP в один и тот же репозиторий. Разработчики, которые хотят работать над Matlab, разворачивают Matlab в другие репозитории, затем представляют запросы на загрузку, когда хотят, чтобы их код сливался с кодом Matlab веб-сайта.

Схема 3: Поместите PHP в один репозиторий, а Matlab - в другой. Затем разработчики fork или branch, как описано выше.

Каковы ваши мысли? DBA в нашей компании говорит, что это ужасная идея поместить два типа кода в один и тот же репозиторий (и в какой-то момент это будет три, поскольку мы будем замедлять изменение кода Matlab на C или какой-либо другой язык), С другой стороны, я беспокоюсь, что будет сложно отслеживать, какие версии работают друг с другом для PHP и Matlab, если они находятся в отдельных хранилищах.

Я прочитал несколько сообщений о переполнении стека, которые частично ответили на мои вопросы:

Это помогло мне понять разницу между ветвями и вилками - мне кажется, что ветки просто требуют большего доверия к разработчикам, поскольку они могут объединиться без разрешения или обзора кода.

git ветвь, fork, fetch, merge, rebase и clone, каковы различия?

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

Как организовать общий код/​​активы по проектам с репозиториями git

Это также помогло мне лучше понять ветки и git.

http://tom.preston-werner.com/2009/05/19/the-git-parable.html

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

Должен ли я отделить клиентскую и серверную сторону моего проекта в двух хранилищах git или сохранить их в одном?

Теги:
bitbucket

1 ответ

10
Лучший ответ

Используйте только один репозиторий. Нет абсолютно никаких оснований делать два репозитория только из-за языков. Большинство проектов используют в любом случае несколько языков (например, веб-приложение будет иметь некоторую часть сервера, например Java или Go, некоторые файлы HTML, CSS и JavaScript, несколько сценариев оболочки, некоторые скрипты SQL, несколько используемых утилит и т.д.). Используйте два репозитория только в том случае, если вы можете использовать один без другого в некотором роде, и вы указали чистый интерфейс между ними (в этом случае было бы полезно создать два репозитория, но это явно не ваш случай). Ваша забота правильна: синхронизация отдельных репозиториев - это кошмар.

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

Обратите внимание, что вы можете иметь клоны репозитория (помните: git), вы даже можете решить, что существует один репозиторий, на котором только несколько поддерживающих пользователей имеют доступ на запись, и они извлекают из других репозиториев. Но в этот момент, с вашим опытом, вы можете использовать решение, построенное поверх git, а не чистое базовое git, будь то коммерческое (смотрите Atlassian, GitHub и т.д.) Или бесплатно (например, гитолит).

  • 0
    В связи с вашим последним абзацем, является ли Bitbucket "решением, построенным поверх git"? Я не уверен, что вы подразумеваете под этим.
  • 0
    bitbucket позволяет вам использовать git или mercurial yes. И теперь bitbucket принадлежит Atlassian (который также делает Stash ). Для профессиональных команд я бы рекомендовал избегать битбакетов и выбирать Stash.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню