SVN ( Subversion ) вся правда для новичка

Я решил поведать тебе новичок, информацию в том виде, в котором она попала ко мне. Поэтому, привожу текст полностью объясняющий цель и суть работы программы SVN.

Новичок: Привет, есть программный вопрос, ты часом не пользуешься SVN (Subversion) ?
Пользователь SVN: Привет, пользуюсь, ага (agree)
Новичок: я так понял там принцип простой, после установки сервака, создается директория, в которую ты можешь поместить свой проект, а далее изменяй себе сколько-угодно файлы и папки, старые версии этих файлов и папок будут логироваться и складываться в папки с датами последних изменений, ну это я так догадываюсь, что скажешь?
Пользователь SVN: не угадал :)
Пользователь SVN: сервак нужен, чтобы хранить все версии файлов (точнее, там даже не сами файлы хранятся, а отличия одной версии от другой)
Пользователь SVN: есть еще клиентская часть...
1) надо создать репозиторий: на компе, где лежат оригинальные файлы, запускаешь клиента, указываешь ему путь к папке с файлами, адрес сервера, и клиент заливает все файлы на сервер
2) после этого можешь менять файлы на компе, затем снова запускаешь клиента, указываешь ему только папку (он уже запомнил адрес сервера), и клиент заливает изменения на сервер
3) если надо получить актуальную версию файлов, снова - к клиенту, он скачает их в указанную папку
Пользователь SVN: если всё это делать штатный клиентом, упаришься, поэтому народ пользуется клиентом TortoiseSVN (для Винды)
Новичок: хм... интересный подход, а где лежит инфа об изменениях в файлах?
Пользователь SVN: её клиент вычисляет
клиент в каждую папку кладет свою скрытую папку с именем .svn, в которой хранит последнюю версию файла, полученную с сервера
когда клиент заливает новую версию, он сравнивает оригинальный файл с тем, что лежит в папке .svn, вычисляет изменения, и отправляет их на сервер
Новичок: значит полный бэкап измененных файлов таки не ведется, только последнии версии и предпоследнии
Новичок: и узнать чем версия 1 отличалась от версии 3 не удастся, только отличия 2 от 3
Новичок: верно?
Пользователь SVN: почему? сервер тебе всегда может прислать любую версию файла
Новичок: но ведь "клиент в каждую папку кладет свою скрытую папку с именем .svn, в которой хранит последнюю версию файла, полученную с сервера" т.е. я имею только новую версию 3 и версию с сервера 2, или я не до конца понял?
Новичок: а отличия будет хранить сервак, совсем забыл
Пользователь SVN: сервер хранит для файла: версию 1, изменения до версии 2, изменения до версии 3, ...
Пользователь SVN: в папке .svn у тебя обычно будет последняя версия, которая на сервере
Новичок: все, теперь я понял обязанности сервака и клиента :)
Новичок: удобно :)
Новичок: кстати, весь этот софт бесплатный я так понял?
Пользователь SVN: у subversion есть заморочки, которые надо научиться обходить, но софт - бесплатный :)
Новичок: и еще, насколько корректно и правильно вычисляются изменения, бывали случаи с глюками?
Пользователь SVN: глюков никогда не замечали
я даже подозреваю, что изменения вычисляет сервер, а не клиент
Пользователь SVN: т.е. может быть, коммитится файл целиком
Новичок: коммитится?
Пользователь SVN: commit
Пользователь SVN: в данном контексте означает "заливается на сервер"
Новичок: а, ну это конечно
Пользователь SVN: а с сервера всегда летят изменения
Новичок: не, я думаю с сервера тоже летят полные файлы
Пользователь SVN: не-а, с сервера летят изменения, для оптимизации трафика
Пользователь SVN: стопудово :)
Новичок: а как клиент может сравнить файлы (вычислить изменения) без просмотра файла?
Новичок: думаю никак
Новичок: с запятой :)
Пользователь SVN: сравнить изменения с той версией файла, которая лежит в папке .svn, он может
Новичок: конечно может, но он ведь он сначала должен закачать файл в папку .svn
Пользователь SVN: если его там нет, то летит файл целиком
а если там файл версии 2, а на сервере - версии 3, то с сервера прилетит только изменение с 2 до 3
Новичок: неа, не прилетят изменения, т.к. чтобы узнать различия, то нужно 2 файла, а как же узнать содержание файла версии 3 на серваке?
Новичок: и при этом не скачивать его! не получится.
Новичок: а т.к. в .svn могут лежать старые файлы (ведь с файлами на сервере могут работать и др. пользователи) то он сначала закачает их с сервера в .svn, а затем сравнит, наверное так логичнее
Новичок: хотя, я пока не уверен, надо пробовать :)
Новичок: в любом случае, спасибо за консультацию, весьма полезная информация! (bow)
Пользователь SVN: клиент посылает на сервер запрос: "у меня есть файл версии 2, а я хочу - свежак"
сервер определяет, что у него актуальная версия этого файла - 3, и высылает на клиента отличия между 2 и 3
клиент применяет эти отличия, и получает файл версии 3
Пользователь SVN: давай сразу скажу о двух косяках
Новичок: а, ну если файлы сравнивает сервак, тогда ты 100% прав
Пользователь SVN: 1) если ты удаляешь файл, то он к тебе прилетит с сервера снова
1a) если ты переименовываешь файл A в B, то с сервера прилетит и файл A, т.к. у тебя в папке его нет
т.е. удалять и переименовывать надо через клиента
2) если на сервере хранится файл, который поменял кто-то другой, то клиент может для некоторых файлов делать слияние "merge", т.е. по своему усмотрению вставить строчки из разных редакций файла (типа, ничего не потерять)
Новичок: вот пункт 2 нужно обязательно где-то отключать, это же глюк
Пользователь SVN: это так заложено в идею
правда, у тебя будет три версии файла: 1) которую клиент "слил", 2) твоя оригинальная, 3) серверная оригинальная
после этого надо самому разрулить слияние, удалить два лишних файла, и залить на сервер результат
Новичок: ну, надо полагать, то что будет 3 версии файлов это хорошо, но вот я должен работать уже работать с самой новой версией и не заботиться о тех 2-х
Пользователь SVN: можно получить с сервера свежак, затерев тот файл, который есть у тебя (т.е. проигнорировав твои изменения)
Пользователь SVN: мы обычно так и делаем, когда появляются конфликтующие файлы
Новичок: ясно, короче нужно хорошенько потестировать это все дело, чтобы не попасть на косяк и уничтожение своих трудов :)
Пользователь SVN: ага :)
Новичок: спасибо за нюансы, весьма интересно и полезно! (y)
Пользователь SVN: мы раньше юзали StarTeam, но он тяжелый и дорогой, а сейчас сидим под Subversion, и привыкли

Еще об SVN можно почитать тут - http://ru.wikipedia.org/wiki/SVN
Скачать сервер можно тут - http://www.visualsvn.com/server/download/
Почитать информацию о клиенте можно тут - http://ru.wikipedia.org/wiki/TortoiseSVN
Оцени публикацию:
  • 31,143
Оценили человек: 31

Похожие статьи:


Комментарии посетителей:
  • Спасибо, написано классно !
    04 марта 2010, 04:09 коммент полезен : +2 # Robert (гость)
  • (yea)
    04 июня 2010, 13:41 коммент полезен : 0 # Гость
  • Все хорошо написано, SVN используем, нравится. Хотим использовать свойства "Properties" для объектов, но вот нигде не могу найти как выбрать все объекты "обладающие каким-то конкретным свойством"... Возможно ли это?
    07 июля 2010, 09:55 коммент полезен : 0 # Butterfly
  • Спасибо :-)
    21 ноября 2010, 19:40 коммент полезен : 0 # Skam
  • Клиент не обязателен, все прекрасно работает из консоли и еще не раскрыта суть svnа, он используется дла совместной разработки, то есть одни и те же файлы могу править несколько человек.
    16 января 2013, 07:50 коммент полезен : +3 # Dev
Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

Новые заметки:

Про что мы забываем когда делаем оценку задачи по времени

Список вопросов для собеседования разработчика по телефону

Symfony2 авторизация без Doctrine2 для чайника

Phpstorm7 LiveEdit

Жесткий хабр или не хабр, тогда кто?

Яндекс.Деньги мошенничество

Как узнать какие страницы в поиске яндекса или это секрет

Последние комменты:

Yapro CMS:

Здравствуйте, Гость | Войти | Регистрация | Карта сайта | RSS ленты | Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2018 YaPro.Ru

Главная » Веб-мастеру » Программы »