Преобразование команды разработчиков из FTP в систему управления версиями - PullRequest
6 голосов
/ 29 декабря 2008

Я работаю в небольшой студии разработки LAMP, идея которой состояла в том, чтобы просто выполнить код и перейти к следующему пункту в списке.

Команда работает в Zend Studio 5.5, подключенной к Live-серверу через FTP или SFTP. Что им нравится в этом, так это скорость их развертывания кода (поскольку он просто изменяет живой код).

Но, конечно, это нехорошо по многим очевидным причинам.

Я хотел бы переместить их в систему управления версиями (CVS, SVN или любой другой инструмент), но главное в том, что я не старший, поэтому мне нужна морковь, чтобы они начали использовать это.

Какую настройку мне нужно построить на своем компьютере, чтобы они могли кодировать как обычно?

Что я хотел бы сделать, это создать эту настройку на моем компьютере, а затем показать их.

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

ОБНОВЛЕНИЕ (для ответа Джонатана Леффлера):

  1. Да
  2. Нет
  3. Да, они действительно делают

Вопрос также: студия создает централизованную систему CMS, которая размещается на сотнях сайтов, им нужно модифицировать отдельные сайты, должны ли сайты быть в основном или в пределах собственного?

Ответы [ 8 ]

7 голосов
/ 29 декабря 2008

Вопросы:

  1. У вас (у них) никогда не было катастрофы, когда вам (им) нужно было вернуться к предыдущей версии веб-сайта, но не могли, потому что они сломали ее?

  2. Используют ли они промежуточный веб-сервер для проверки изменений?

  3. Конечно, они не модифицируют код на производственном сервере без какого-либо тестирования?

Я подозреваю, что ответ на первый вопрос - «да (у них были бедствия)», а на второй - «нет», и я не решаюсь угадать ответ для третьего (но, судя по его звукам, ответ может быть «Да, они действительно делают»). Если это правильно, я восхищаюсь их бравадой и поражаюсь, что они никогда не ошибаются. Я никогда не рискну вносить изменения прямо на веб-сайте.

Я бы рекомендовал использовать систему контроля версий или VCS (любую VCS) самостоятельно. Разработайте складки для кода, за которым вы следите, и разработайте удобный дистрибутив, который облегчает (вероятно, все еще использование SFTP) распространение кода VCS на веб-сайт. Но также покажите, что сохранение предыдущих версий имеет свои достоинства - потому что вы можете узнать, кто что сделал, когда. Для начала вы можете обнаружить, что вам нужно загрузить текущую версию любой страницы (файла), над которой вы хотите работать, и поместить эту последнюю версию в VCS, прежде чем вы начнете изменять страницу, потому что кто-то другой мог изменить ее, так как она последний раз обновлялся в вашем главном репозитории. Вы также можете ежедневно выполнять «очистку» файлов для получения текущих версий и отслеживания изменений. У вас не было бы ни «кто», ни точно «когда» (лучше, чем на ближайший день), ни «почему», но у вас было бы (совокупное) «что» из изменений.


В ответ на комментарии по этому вопросу Олафур Вааге пояснил, что у них произошли бедствия из-за отсутствия VCS.

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

2 голосов
/ 29 декабря 2008

Вот одна хитрость, которая понравится всем:

Я включаю этот «плагин» в большинство моих производственных сайтов: Конечно, для этого нужно сначала создать учетную запись svn робота с ограниченными правами, а svn должен быть установлен на сервере.

    echo(' updating from svn<br>' );
    $username = Settings::Load()->Get('svn','username');
    $password = Settings::Load()->Get('svn','password');
    echo(" <pre>" );
    $repos = Settings::Load()->Get('svn' , 'repository');
    echo system ("svn export --username={$username} --password {$password} {$repos}includes/ ".dirname(__FILE__)."/../includes --force");
    echo system("svn export --username={$username} --password {$password} {$repos}plugins/ ".dirname(__FILE__)."/../plugins --force");

    die();

Убедитесь, что вы разместили это за сайтом .htpasswded, и убедитесь, что вы не обновляете «производственные настройки» из SVN. Et voila, Вы обновляете свою полную кодовую базу одним HTTP-запросом на свой сайт :) SVN автоматически перезаписывает файлы, не оставляя скрытых файлов или папок, и его легко адаптировать для обновления или возврата к определенной версии. Теперь все, что нужно вашей команде - это зафиксировать свой SVN-репозиторий, запустить этот фрагмент кода в среде тестирования, убедиться, что все работает, а затем запустить его на производстве:)

2 голосов
/ 29 декабря 2008

Вы можете установить SVN в вашей локальной системе для демонстрации. Есть несколько инструментов для интеграции Zend и Eclipse в SVN. Я думаю, что в дополнение к демонстрации SVN вы, вероятно, должны представить им некоторые преимущества, которые она принесет (вероятно, во время демонстрации).

Перейдите по этой ссылке для некоторых идей: Действительно ли мне нужен контроль версий?

2 голосов
/ 29 декабря 2008

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

возможно, попытайтесь настроить и использовать это для себя и через некоторое время показать им, что это может сделать для вас. Еще одна интересная вещь может быть установка trac (http://trac.edgewall.org/) на ваш сервер, если у вас есть права доступа и права для этого, или, возможно, на какой-то виртуальной машине на вашем собственном компьютере разработки. вы можете сопоставить trac с вашим SVN и получить изменения SVN в веб-интерфейсе, который вы можете показать менеджеру проекта. возможно, он влюбится в то, что сможет легко видеть изменения кода через веб-интерфейс. Конечно, вы можете сделать это только с помощью модуля apache + svn, но это приятнее, так как предлагает путь к билетам и дорожной карте (вехи и прочее, которые менеджеры могут найти: o)) ..

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

1 голос
/ 29 декабря 2008

Олафур, вы упомянули, что «студия создает систему CMS, размещенную на сотнях сайтов». Это может быть та морковь, которая вам нужна. Если группа часто развертывает обновления на этих сотнях сайтов, то использование веток внутри системы контроля версий может значительно облегчить этот процесс для всех. Это может сэкономить много времени и, таким образом, даст людям стимул изучать систему контроля версий.

Похоже, что все эти сайты связаны между собой - настроенные версии одной и той же CMS. В этом случае вы должны поместить все сайты в один и тот же репозиторий, в дополнение к ненастроенному продукту CMS. Затем вы можете настроить их как ветви одного и того же центрального продукта. Если вы используете отдельные репозитории, нет простых способов создать ветки, чтобы связать настройки с основным продуктом. (Я думаю, что может сделать это с помощью Subversion и, скорее всего, других, но это сложно и не нужно, если все разработчики работают в одной организации.)

0 голосов
/ 04 января 2009

Просто поместите то есть SVN в середину.

Команда разработчиков поместила новый материал в Subversion, а затем у вас есть скрипт, который экспортирует материал из SVN и отправляет его на веб-сервер.

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

/ Johan

0 голосов
/ 29 декабря 2008

Сделайте развертывание частью автоматизированного процесса «сборки», чтобы не пришлось беспокоиться об этом разработчику. Используйте «потоки», чтобы поддерживать работу в области разработки, области qa и области выпуска, а затем автоматизировать процессы, которые развертывают новейшие среды разработки, qa и версии.

0 голосов
/ 29 декабря 2008

VisualSVNServer и TurtoiseSVN - две программы, которые я использую, они хорошо документированы и хорошо интегрируются с Windows Explorer и Visual Studio.

...