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
  • АКЕЙ
    12 сентября 2017, 13:22 коммент полезен : 0 # Гость
Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

youtube.com/watch?v=7hFivbgIEqk

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

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