2016-08-24 3 views
0

Я являюсь членом небольшой команды разработчиков PHP внутри более крупной компании. У нас есть собственный сервер разработки и производства, и поскольку оба они находятся в локальной сети, а разрабатываемые нами приложения работают строго локально и не предназначены для публичной работы, мы разрабатываем сервер разработки и не располагаем локальными средами. Каждый из нас имеет исходные коды, хранящиеся локально на диске, но у нас есть IDE, настроенные для автоматической синхронизации всех изменений с сервером DEV сразу (в основном после каждого сохранения).Право разработки на сетевом диске

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

Есть ли способ реализовать какой-то рабочий процесс git для этой настройки? Я имею в виду, что установка Git так же просто, как и она, но мы хотим пользоваться преимуществами, например, интегрировать git в IDE и быть в состоянии видеть, кто что сделал, когда и т. д. В настоящее время все, что мы можем сделать, не изменяя наш рабочий процесс, - это установить git на сервер DEV и зафиксировать прямо там. Но это будет означать, что каждый человек будет работать над кодом локально, код будет синхронизирован с сервером, и ему нужно будет туда подключиться и зафиксировать там. Это кажется мне просто неправильным.

Вы можете увидеть способ внедрения git без необходимости настройки локальной среды на наших машинах?

+0

«Мы разрабатываем сервер разработки и не имеем локальных окружений. У каждого из нас есть исходные коды, хранящиеся локально на диске». Итак, у каждого разработчика есть своя машина? Если да, то просто сделайте каждую локальную копию репозитария git. –

+0

Да, у всех нас есть наши машины. Проблема в том, что, поскольку у нас нет localhost, единственный способ увидеть и протестировать код - на сервере DEV. Вот почему все локальные изменения автоматически загружаются там. Если бы мы хотели сохранить эту работу, она столкнулась бы с git-репозиториями, потому что мы бы зафиксировали наши изменения в наших локальных копиях, но также загрузили их на сервер. Это наверняка вызовет конфликты при каждом нажатии на хранилище на сервере DEV. –

ответ

0

У каждого разработчика есть свой локальный репозиторий git, синхронизированный с центральным хранилищем.

Когда разработчик считает, что его изменения готовы, он может просто нажать на свои коммиты.

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

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

Вы также можете настроить post-receive hook так, что центральное хранилище автоматически обновляет файлы на веб-сервер, когда были вытеснены новые коммиты (хотя первые работы автоматизированных тестов явно более благоразумно).

Редактировать

Ваша стратегия развития является, имхо, ни даже подходит для средних команд, ни средних проектов программного обеспечения.

  • Большая команда, тем больше людей работают одновременно над кодом. Что делать, если два разработчика меняют один и тот же файл? Если Dev1 сохранит свою работу, будет ли работа Dev2 перезаписана только потому, что он не сохранил свой файл? Если Dev2 сохранит свой файл, он перезапишет работу Dev1?

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

+0

Спасибо за ответ! Я полностью согласен, что то, что мы делаем сейчас, не велико. До сих пор наша IDE сама проверяла конфликты. Каждому программисту было предупреждено, что он открыл файл с более новой версией на сервере. Таким образом, мы в основном справлялись с конфликтами так же, как и с git, но на самом базовом уровне (если файл на сервере более новый, просто загрузите его или слейте в локальную версию). –

+0

Итак, если я правильно понимаю ваш ответ, мы должны в основном отключить автоматическую загрузку в DEV и сделать это с помощью commit/push in git. Для этого у нас должен быть рабочий локальный хост, потому что, если бы у нас было только приложение, работающее на DEV, мы работали бы в темноте, и нам нужно было бы совершить и подтолкнуть каждое изменение к DEV, чтобы увидеть его в действии, - что очень легко сломало бы приложение. Я прав? –

+0

Я бы сказал, вы должны * заменить * автоматическую загрузку с помощью (вручную) совершает/толкает. В принципе, для каждого изменения вы можете создать фиксацию и нажать ее, поэтому по существу есть основной рабочий процесс. Однако, как разработчик, я бы всегда хотел, чтобы мои изменения не нарушали ничего, прежде чем загружать их в любом месте. Поэтому локальная среда тестирования - если это возможно - всегда хорошая вещь. Но вы этого не требуете. - В любом случае, в настоящее время вы также работаете в темноте и можете сломать вещи - просто, что циклы намного короче, чем, вероятно, будет с git. –