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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как работает SVN при нескольких пользователей?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: нужны детали по работе, и отзывы
DlTA
Отправлено: 02 Ноября, 2011 - 10:44:29
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




SVN

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

и общие ощущения.
 
 Top
EuGen Администратор
Отправлено: 02 Ноября, 2011 - 11:00:30
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




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

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

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

Важно понимать, что в репозитории файлы всегда находятся в целостном состоянии


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DlTA
Отправлено: 02 Ноября, 2011 - 13:07:02
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




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

сервер SVN настраивается у каждого пользователя отдельно?
 
 Top
EuGen Администратор
Отправлено: 02 Ноября, 2011 - 13:15:01
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




DlTA пишет:
имеется свой временный репозиторий

Вы что-то путаете в архитектуре. SVN - централизованная система управления версиями. И репозиторий там один. Если до него нет связи, то будет ошибка (Couldn't read status line и т.п.) - но, естественно, только при апдейтах/коммитах. В остальное время с файлами идет обычная работа локально.
Пример распределенной системы управления - git. Если Вам нужно то, что Вы написали комментарием выше, то изучите git (на мой взгляд, лучшей распределенной системы сейчас не существует).


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Stierus Супермодератор
Отправлено: 02 Ноября, 2011 - 13:18:58
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




есть svn-хранилище, есть клиенты. vpn и прочее тут никак не связаны. У клиента есть несколько возможность - получить файлы из хранилища, отправить файлы в хранилище, посмотреть измененные файлы и тд. ТЫ себе на комп ставишь svn-клиента, выгружаешь из хранилища файлы и работаешь с ними ЛОКАЛЬНО. Никакой связи с хранилищем нет, поэтому серверу все равно, оборвался у тебя vpn или нет, работает у тебя компьютер или выключили электричество. Вот работаешь ты с файлами в локальной папке ... работаешь так же, будто svn нет никакого и настает момент, когда ты решаешь, что пора бы свои изменения отправить в хранилище. Ты делаешь svn up - обновляешь данные у себя в локальной папке до последней версии. Тоесть свн сама тебе в твою папку закачивает новые файлы, удаляет ненужные, изменяет те, что были изменены в хранилище. Если ты тоже изменял те же файлы, что изменились в хранилище - свн клиент пытается сам тебе объединить твои изменения (смержить) ... если ты изменял файл внизу, а в хранилище изменялся файл вверху - мерж пройдет без проблем и ты этого двже не заметишь, если же менялись близкие места, одни и те же функции в файле и тд (тоесть если свн сам не может понять, какие изменения правильные, а оба оставить не может) - тебе кидается конфликт, который ты у себя в локальной папке разрешаешь (сам выбираешь, какие изменения файла применить). Вот ты исправил все конфликты, обновил свою локальную папку до последней версии свн - теперь ты можешь отправить свои данные в хранилище. Связь с хранилищем нужна только на моменты этих обновлений и отправки своих версий, все остальное время никакая связь не нужна, вся работа идет в твоих локальных папках
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Прочее »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB