2010-10-10 2 views
2

Я подумываю об использовании контроля версий на моей работе. В идеале я хотел использовать Subversion, так как теперь это инструмент выбора. Однако, похоже, я столкнулся с кирпичной стеной, поскольку для всех наших разработчиков не так просто работать в локальной среде. Мы делаем веб-разработку с Coldfusion и используем общий сервер разработки. Изменения, внесенные в файлы, могут быть быстро обновлены в браузере.Subversion на сервере общей разработки

Наша компания обслуживает более 100 сайтов, и наш сервер разработки отражает все эти сайты на производстве. Нам часто приходится быстро настраивать 1 из этих 100, протестировать их и быстро загрузить в производство. Если бы нам пришлось загружать данный сайт локально, настройте его на нашем локальном веб-сервере, эти небольшие изменения станут более трудоемкими задачами. Кроме того, часто копирайтеры и менее технические люди захотят перейти на html-страницу и изменить копию. Это прямо в нашей текущей настройке общего сервера.

Давным-давно мы использовали источник управления NGSource, когда вы проверили проект в репозитории, он изменил права доступа к файлу только для чтения. Мы проверили бы файл на общий dev-сервер и изменили бы разрешение на чтение и запись. Мы все проверили бы репозиторий, чтобы убедиться, что кто-то не работает над файлом, над которым мы думали работать. Это сработало хорошо и объяснимо для копирайтеров. Проблема заключалась в том, что клиент NGSource был медленным, и, насколько мне известно, они могут оказаться вне бизнеса.

Итак, есть способ реализовать это изменение прав доступа к файлам при регистрации и проверке с помощью Subversion? Если нет, есть ли лучшее решение с открытым исходным кодом? Разве так плохо развиваться в общей среде и пропустить развитие на местном уровне?

+0

вы можете объяснить, почему вам нужно " только чтение "для файлов? , как вы его описали, вы можете создать рабочую копию на производственной площадке. Поэтому разработчики или копирайтеры, просто подключитесь к сайту, отредактируйте его и внесите изменения непосредственно с сайта-производителя. – Moisei

+0

Ничего себе, ты, как раз, единственный человек, с которым я столкнулся во всем Интернете, который использовал NGSource ... В настоящее время я пытаюсь убедить руководство изменить что-то приличное, как SVN, но это тяжелая работа: ( –

ответ

1

Вы можете использовать 'svn lock' [1], чтобы никто не мог редактировать файл, в котором вы сейчас работаете.

[1] http://svnbook.red-bean.com/en/1.2/svn.ref.svn.c.lock.html

+0

Посмотрите на секцию блокировки. Вам нужны свойства 'svn: needs-lock', чтобы сделать эту работу. Http://svnbook.red-bean.com/en/1.5/svn.advanced.locking.html – msandiford

+0

Спасибо Spong, блокировка потребностей похоже на то, что я искал. Так это правильно? 1. Поместите все файлы сайта в репозиторий, поскольку они структурированы на сервере разработки и задают для всех файлов require-lock = yes. Вручную измените все разрешения на файлы сервера разработки на доступ только для чтения. 3.Когда какой-либо разработчик или копирайтер проверит файл и там будут рабочие точки на сервере разработки, файл изменится на чтение/запись. Другие не смогут коснитесь других файлов, если они не используют подрывную деятельность. e с несколькими пользователями svn, указывающими на одну и ту же рабочую копию? – DannyLeavitt

0

Можете ли вы объяснить, почему вам нужно «только для чтения» режим для файлов? , как вы его описываете, вы можете сохранить рабочую копию на производственной площадке. Поэтому разработчики или копирайтеры, просто подключитесь к сайту, отредактируйте его и внесите изменения непосредственно с сайта-производителя.

+0

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

+0

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

0

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

о процессе

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

  1. Файловая система накладные расходы: SVN хранит что-то эквивалентное удвоенному информации в извлеченным каталоге. Вот почему вы можете развернуть и вернуться без подключения к серверу.
  2. Безопасность: Наличие дополнительных .svn-каталогов - это еще один вектор атаки. Это можно компенсировать, но выгодно ли перевесить стоимость? Для нас нет.

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

О Вашей Возможный процесс

Будет ли это работать, если у вас один промежуточной среды со всеми 100+ сайтов, настроенных, работает, и в системе управления версиями? Это среда, которую разработчики и правообладатели будут использовать для внесения изменений, а затем они будут совершать. Когда изменения были признаны хорошими, такой инструмент, как RepliWeb, мог передать версию в Staging (без каталогов .svn) в Production. Если накладные расходы на файловую систему и риски безопасности незначительны для вашей компании, то RepliWeb будет заменен простым выполнением чистой проверки сайта в Production (убедитесь, что удалены любые предыдущие артефакты).

Надеюсь, это поможет.

Спасибо,
Закарей

+0

Эй, Зак, вы говорите, что все копирайтеры и разработчики должны внести изменения локально, загрузить в стадию, а затем зафиксировать из своей локальной копии? По-прежнему кажется, что было бы сложно объяснить этот процесс копирайтерам, которые привыкли работать сразу после промежуточной среды. Не говоря уже о том, что это будет медленный поток работы.Мне просто жаль, что у меня не было бы «рабочей копии» людей, работающих непосредственно в промежуточной среде. Кажется, все думают, что это преступление. Я могу просто сделать «машину времени», такую ​​как система резервного копирования, чтобы, по крайней мере, получить предыдущие версии файлов. – DannyLeavitt

+0

Привет, Дэнни. Нет, я говорю, что в основном то, что вы только что сказали, происходит сейчас: 1. Редакторы и копирайтеры редактируют в промежуточной среде; 2. они фиксируют эти изменения из промежуточной среды (которая находится под управлением версиями), затем (по некоторому механизму, который соответствует вашим потребностям); 3. Синхронизировать производственную среду с стадией. Я понимаю, что некоторые могут подумать, что это ересь. Может быть, я просто ленив, но это похоже на разумное решение, учитывая 100 + веб-сайтов, которые поддерживает ваша организация. Спасибо. –

0

Я могу представить себе вашу боль, но вы не сказали нам, что случилось с вашей текущей процедурой;). В конце концов, «не исправить, если он не сломан». И только потому, что каждый использует SVN/GIT и т. Д., Нет гаруанти, что это для вас.

У нас есть аналогичные требования, но, к счастью, все еще удается иметь локальные проверки и локальные веб-серверы, которые некоторые люди используют перед совершением. Это рекомендуемый способ. Существует общая среда разработки для других, которые монтируют через samba или nfs. Но все-таки у всех есть свое СОБСТВЕННОЕ рабочее пространство, припаркованное на нем. Люди, которые работают над внешним интерфейсом и проверяют некритические изменения, используют веб-интерфейс для вызова обновлений svn в основной системе промежуточного размещения в центре обработки данных или в целевой (клиентской) системе. Его усмотрение и их вина, когда что-то ломается. Конечно, этапы могут быть полностью автоматизированы с помощью svn hooks.

Наши результаты приемлемы до сих пор.

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

В конце концов, каковы цели контроля источника? Некоторые я могу думать:

  • развитие Paralell со многими людьми
  • Выделение стабильного и нестабильного кода
  • Прозрачность и откатить-способность

Когда вы понятия не имеете личного рабочего пространства и «пользователь» проверяет вместо анонимной «команды», управляющей файлами, большинство функций управления версиями для вас, естественно, не сработают.

Возможно, у вас есть подпапки на сервере coldfusion? Уменьшите личную нагрузку на управление рабочим пространством, обновив все из них автоматически с сервера управления версиями (обычно это не то, что я бы рекомендовал)?

Если возможно, вам нужно сначала выйти из привычки «мы редактируем на сервере», а затем подумать об управлении источником.Наоборот будет сложно;)

C

0

В нашей компании мы в очень похожую ситуацию - больше проектов, чем разработчики. Таким образом, все проекты находятся на dev-сервере, где разработчики могут легко работать над ними. Обычно только один разработчик работает в одном проекте в данный момент времени. Но разработчики приходят и уходят, каникулы, палки и т. Д., Поэтому нам нужно быстро переключать проекты. Но в идеале с контролем версий, чтобы избавиться от страха изменить что-то, и все хорошие вещи, которые приносит верность.

Централизованные элементы управления версиями, такие как svn, csv, p4 и другие, не подходят для такого решения. Можно использовать только распределенное управление версиями.

Мы собираемся протестировать некоторые распределенные средства контроля версий, такие как Mercurial или GIT, которые кажутся единственными контроллерами версий, которые подходят для работы в описанной среде, даже они, вероятно, не разработаны для такого случая.

Но поскольку для разработчиков нет личного пространства, мы не сможем использовать все аспекты управления версиями. Разработчикам необходимо будет указать свое имя int checkin note. Но по крайней мере что-то, чем ничего.

Я сделал некоторые исследования, вот некоторые интересные ссылки, которые я нашел:

How to use version control on a remote development server?

Version control has me stumped

https://www.mercurial-scm.org/wiki/TortoiseHg

http://git-scm.com/

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