используя Subversion с действительно очень большим сайтом - PullRequest
6 голосов
/ 06 октября 2008

Я большой поклонник Subversion и собираюсь захватить большой сайт (около 200 МБ). Я урезал основной сайт с первоначального размера 500 МБ !!

Я собираюсь проверить этот сайт в новом хранилище subversion. Проблема в том, что мое хранилище Subversion размещено удаленно, так что на сайте может работать и другой коллега.

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

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

Предполагая, что все проверено нормально, будет ли Subversion обеспечивать загрузку только новых / измененных файлов / папок каждый раз, когда я делаю новую проверку, или я буду ждать загрузки по 200 МБ каждый раз?

Ответы [ 8 ]

12 голосов
/ 06 октября 2008

Если я не ошибаюсь после первой регистрации / выхода, вы обрабатываете только файлы .diff, поэтому вам нужно только загрузить / загрузить изменения (не весь файл, а только строки, которые были изменены, пока файл ASCII ), который существует между файлами на клиенте / сервере.

Первый комит / обновление будет ужасным, хотя.

5 голосов
/ 06 октября 2008

Следует также помнить, что вы можете делать копии своих извлеченных папок, и они по-прежнему будут действительными рабочими копиями:

svn checkout http://server/path/to/repos my_working_copy
cp -a my_working_copy another_working_copy
svn status another_working_copy

Это может сэкономить много времени / пропускной способности, если вам нужно несколько рабочих копий. Это также ускоряет ветвление и переключение

svn checkout http://server/path/to/trunk my_trunk
cp -a my_trunk my_branch
cd my_branch
svn switch http://server/path/to/branches/stable

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

1 голос
/ 06 октября 2008

Я использую сайты объемом около 5 ГБ или более. (и система сборки, которая вносит изменения во множество файлов для каждой сборки). Таким образом, дельта будет около 200 МБ легко (и для удаленного сайта). SVN прекрасно с этим справляется. Это также зависит от того, насколько хорош ваш Apache (если вы используете Apache).

1 голос
/ 06 октября 2008

Как было сказано ранее, commit / update передает только diffs и довольно быстро. Оформление заказа занимает больше времени - используйте переключатель svn для быстрого перехода между ветвями.

Кроме того, транспортный протокол HTTP / WEBDAV не очень эффективен, особенно при работе с большим количеством небольших файлов (например, с исходным кодом :)) - вместо этого вы можете использовать svnserve.

200 МБ данных не должны быть слишком большими проблемами для Subversion, но если дисковое пространство и эффективная передача данных действительно являются проблемой, вы также можете взглянуть на git или mercurial. Особенно git гораздо эффективнее, но вам, вероятно, понадобится немного больше времени, чтобы осмыслить концепции распределенного управления исходными кодами, и вам пока придется жить без причудливых инструментов с графическим интерфейсом (инструменты командной строки стали намного более можно использовать в последнее время).

Эта ссылка тоже может быть интересной: Обновление сайта

0 голосов
/ 06 октября 2008

Он будет загружать только те файлы, которые были затронуты в это время. Однако, если вы собираетесь разветвляться (как и должно быть), то вы можете долго ждать.

Какая часть проекта действительно нужна? Я сомневаюсь, что есть 200 МБ источника. Если большая часть данных является ресурсами, которые изменяются очень редко (например, изображения), то вы можете подумать о разделении репозиториев на более мелкие проекты.

0 голосов
/ 06 октября 2008

Subversion получает только изменения / обновления, поэтому у вас есть полная проверка только при первом получении. В последующих обновлениях вы получите только изменения.

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

0 голосов
/ 06 октября 2008

изменения будут отправлены только при обновлении или комментировании. Вы должны быть в порядке.

0 голосов
/ 06 октября 2008

Если часто делается множество изменений, почему бы не иметь запись cron, которая обновляет subversion, чтобы обновлять локальную копию, скажем, каждые 6 часов?

Таким образом, вы получаете последние различия (или ни одного, если они не обновлялись в течение нескольких часов), а не весь шебанг.

РЕДАКТИРОВАТЬ : для уточнения, если происходит много изменений, но только на нескольких страницах за раз, любой данный коммит / обновление будет небольшим; если они сделаны для всего / большей части сайта, то важно будет регулярно обновлять их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...