Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как работает SVN при нескольких пользователей?
Форумы портала PHP.SU » Разное » Прочее » Как работает SVN при нескольких пользователей?

Страниц (1): [1]
 

1. DlTA - 02 Ноября, 2011 - 10:44:29 - перейти к сообщению
SVN

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

и общие ощущения.
2. EuGen - 02 Ноября, 2011 - 11:00:30 - перейти к сообщению
DlTA пишет:
хотелось бы узнать к чему приводит открытие одного файла несколькими пользователями

SVN не контролирует изменения "в реальном времени". То есть отредактировать файл удастся обоим.
Другое дело - то, к чему это приведет при синхронизации (коммите) и последующих апдейтах. Может быть 2 варианта
- Пользователи правили файл так, что его можно смерджить - то есть правильно объединить изменения
- Возникнет ошибка, так как правки несовместимы - это конфликт. Если точнее, текстовый конфликт. Тогда файл будет помечен как конфликтующий и для дальнейших коммитов нужно будет разрешить конфликт.

Хронология будет примерно таковой:
- Пользователь A изменил файл
- Пользователь B изменил файл
- Пользователь A сделал коммит, создал новую ревизию
- Пользователь B попытался сделать коммит, но его ревизия этого файла - уже старая и коммит не удастся (out of date)
- Пользователь B должен будет сначала сделать апдейт, чтобы привести файл в синхронизированное состояние
- Пользователь B делает апдейт
- Пользователь B получает локальный текстовый конфликт в файле

Важно понимать, что в репозитории файлы всегда находятся в целостном состоянии
3. DlTA - 02 Ноября, 2011 - 13:07:02 - перейти к сообщению
а в случае работы через VPN у каждого пользователя имеется свой временный репозиторий
на случай дисконекта, и при наличии связи данные передаются на главный
или работы идет через ftp?

сервер SVN настраивается у каждого пользователя отдельно?
4. EuGen - 02 Ноября, 2011 - 13:15:01 - перейти к сообщению
DlTA пишет:
имеется свой временный репозиторий

Вы что-то путаете в архитектуре. SVN - централизованная система управления версиями. И репозиторий там один. Если до него нет связи, то будет ошибка (Couldn't read status line и т.п.) - но, естественно, только при апдейтах/коммитах. В остальное время с файлами идет обычная работа локально.
Пример распределенной системы управления - git. Если Вам нужно то, что Вы написали комментарием выше, то изучите git (на мой взгляд, лучшей распределенной системы сейчас не существует).
5. Stierus - 02 Ноября, 2011 - 13:18:58 - перейти к сообщению
есть svn-хранилище, есть клиенты. vpn и прочее тут никак не связаны. У клиента есть несколько возможность - получить файлы из хранилища, отправить файлы в хранилище, посмотреть измененные файлы и тд. ТЫ себе на комп ставишь svn-клиента, выгружаешь из хранилища файлы и работаешь с ними ЛОКАЛЬНО. Никакой связи с хранилищем нет, поэтому серверу все равно, оборвался у тебя vpn или нет, работает у тебя компьютер или выключили электричество. Вот работаешь ты с файлами в локальной папке ... работаешь так же, будто svn нет никакого и настает момент, когда ты решаешь, что пора бы свои изменения отправить в хранилище. Ты делаешь svn up - обновляешь данные у себя в локальной папке до последней версии. Тоесть свн сама тебе в твою папку закачивает новые файлы, удаляет ненужные, изменяет те, что были изменены в хранилище. Если ты тоже изменял те же файлы, что изменились в хранилище - свн клиент пытается сам тебе объединить твои изменения (смержить) ... если ты изменял файл внизу, а в хранилище изменялся файл вверху - мерж пройдет без проблем и ты этого двже не заметишь, если же менялись близкие места, одни и те же функции в файле и тд (тоесть если свн сам не может понять, какие изменения правильные, а оба оставить не может) - тебе кидается конфликт, который ты у себя в локальной папке разрешаешь (сам выбираешь, какие изменения файла применить). Вот ты исправил все конфликты, обновил свою локальную папку до последней версии свн - теперь ты можешь отправить свои данные в хранилище. Связь с хранилищем нужна только на моменты этих обновлений и отправки своих версий, все остальное время никакая связь не нужна, вся работа идет в твоих локальных папках

 

Powered by ExBB FM 1.0 RC1