30 января 2007
Ставим Subversion за 5 минут
Многие начинающие разработчики слышали о средствах контроля за версиями, CVS и SVN, но побаиваются его использовать ввиду «сложности настройки», особенно на windows (в той же fedora svn предустановлен). Несколько дней я тоже впервые занялся установкой subversion и на первый взгляд все было ужасно сложно.
Качаем
Нам необходимо загрузить сам сервер и клиент для работы с ним. В качестве клиента рекомендую воспользоваться tortoiseSVN, в котором максимально быстро разберется новичок и при этом для этого клиента доступен русский язык.
Итак качаем последнюю stable-версию сервера, клиент и русификацию к нему.
Установка
Установка проходит легко и непринужденно, везде достаточно нажимать «next». Желательно устанавливать сначала сервер, потом клиент, затем русификацию к клиенту.
Создаем первый репозитарий (хранилище)
- Создаем папочку C:\svn-store\
- Заходим в консоль (Пуск->Выполнить, cmd) и пишем:
svnadmin create c:/svn-store/my_project
Обратите внимание на слеши! Они должны указываться именно так, на манер unix.
В случае успешного создания репозитория никаких ошибок не появится. - Открываем файл C:/svn-store/my_project/conf/svnserve.conf и раскомментируем строчки:
anon-access = read
auth-access = writeТ.е. мы разрешаем всем скачивать файлы из репозитария, а зарегистрированным пользоватеям — и закачивать данные в него. Чаще всего используется именно такая политика. Данные о пользователях лежат в файле, который указывается в строчке (которую также нужно раскомментировать):
password-db = passwd
Т.е. так мы показываем, что в папке C:\svn-store\my_project\conf лежит файл passwd c указанием логинов и паролей зарегистрированных пользователей.
- Идем в C:\svn-store\my_project\conf\passwd, открыв его любым текстовым редактором и создаем учетные записи пользователей в секции users. Формат их таков:
ilya = strangeword
masha = simpleword
Заполняем репозитарий
Необходимо произвести импорт, начальное наполнение нашего репозитария. Для этого заходим в папку с вашим проектом (программой, текстами, скриптами и т.д.), щелкаем правой кнопкой мыши на свободном месте и выбираем TortoiseSVN->Импортировать…
В качестве URL вводим:
svn://localhost:8082/my_project/
Если вы подключаетесь не с локальной машины к SVN, то вместо localhost укажите IP-адрес или сетевое имя системы с SVN.
У вас должны спросить логин и пароль. Указывайте те данные, которые внесли в C:\svn-store\my_project\conf\passwd. Если вместо окошка для ввода логина и пароля вы не увидели, возвращайтесь к пунктам про правку C:\svn-store\my_project\conf\svnserve.conf и C:\svn-store\my_project\conf\passwd — вы либо не раскомментировали строчки, либо не указали логины/пароли.
В случае успешного заполнения вы увидите нечто подобное:
Работа с tortoiseSVN
Теперь создайте пустую папку и вызовите в ней по правой кнопке мыши «SVN Извлечь…». URL тот же (svn://localhost:8082/my_project/). Так вы загрузите в данную папку рабочую копию проекта из репозитария. Кроме файлов проекта в ней появится скрытая папка «.svn» — ее ни в коем случае не трогайте, она используется SVN во время фиксации (commit’a) изменений в репозитарий.
Вы можете делать хоть что (не считая папки .svn и ее содержимого, которые трогать нельзя) — создавать/править/удалять файлы проекта. Для записи изменений в репозитарий щелкните правой кнопкой мыши в папке и выберите «SVN Фиксировать…» (SVN Commit). Чтобы обновить свою рабочую копию до состояния в репозитории — «SVN Обновить» (SVN Update).
Думаю, дальнейшее освоение не вызовет проблем. А на первое время описанных действий хватит. 🙂
Post scriptum
Описанный метод — лишь один из множества. Я не стал описывать все тонкости и возможности, т.к. это заняло бы очень много времени. Пишите вопросы в комментариях — я постараюсь ответить. Но рекомендую почитать SVN Book, подробное руководство по SVN.
А у меня уже стоит классная вещь 🙂
Я тоже так считаю. 🙂 Вот этим материалом хочу расширить круг пользователей.
А для чего обращаться к репозиторию через сервер, если он находится на том же компьютере, что и рабочая копия? Может лучше локально используя url: file:///c:/svn-store/my_project
Или я чего то не усвоил?
Да, так можно. Но я посчитал, что лучше сразу описать сетевой способ. Локальный слишком прост, чтобы его вообще описывать — достаточно установить SVN и клиент и подключаться по указанному вами адресу.
Использую активно. Статья рулит!
Спасибо за положительную оценку. 🙂
Я одного догнать не могу: я делаю одно хранилище для всех проектов или для каждого создаю свое?
Да, для каждого нужно делать отдельное.
не забывайте только еще и стартовать SVN сервер svnserve.exe -d
—listen-port СВОЙ_ПОРТ -r ПУТЬ_К_ХРАНИЛИЩУ_РЕПОЗИТОРИЕВ
У меня он службой в Винде стартует
Кто-нибудь подскажет, как узнать, на каком порту SVN стартовал по умолчанию (если при старте SVN сервера
svnserve.exe -d –listen-port СВОЙ_ПОРТ -r ПУТЬ_К_ХРАНИЛИЩУ_РЕПОЗИТОРИЕВ)
–listen-port СВОЙ_ПОРТ не был указан?
Могу предложить только посмотреть netstat -an до запуска и после, а потом сравнить. Хотя по умолчанию согласно доке при запуске с ключом -d порт 3690.
Спасибо.
Попробуем..
Просто в статье по умолчанию был указал порт
svn://localhost:8082/my_project/
Я у себя попробовал — с таким портом не работало (без указания порта — все, естественно, ОК).
А порт по умолчанию в доке чего-то не нашел..
А еще вопрос, может кто подскажет (либо ссылку на статью подкиньте).
Как нормально (и безопасно) поднять SVN под Windows чтобы с ним можно было работать из internet (есть реальный IP).
Допустим через протокол https:\\.
Я в svn-book кое-чего почитал, но в web-технологиях я не особо силен, многих вещей не понял.. В общем, хотелось бы подобное руководство (кстати, оно для начинающих очень хорошее), только для моей задачи..
Автору спасибо за статью. Если кому надо, описание как установить svn как службу винды здесь:
http://svn.collab.net/repos/svn/trunk/notes/windows-service.txt
Можно и так и так. Если для каждого проекта свое хранилище — то у каждого проекта свои revision numbers. Если хранилище общее — то revisions будут общие.
давно ей пользуюсь! рекомендую
Ввожу в импорт: «svn://localhost:8082/my_project/», результате клиент отвечает «конечный компьютер отверг запрос». Игрался уже и с файерволом, и с локалхостом (пробовал свой ип в сети, 127.0.0.1) — ничего не помогает.
Я уже голову сломал, в чём дело, неужели в карме?
Помогите советом..
Ребят, кто подскажет оно с Win2k работает ?
Интересует именно серверная часть. Поставил, делал по инструкции (не с этого сайта), что то как то … нифига в общем.
Запустил и все работает.
Но когда подключаюсь к СВН то всегда пишет — Error: Authorization failed
При этом окна логина и пароля не просит. А сразу ошибку выдает!
Видимо, файл с паролями был неправильно создан.
Всё, добил. )
Огромнейшее спасибо за статью!!! RESPECT!!! Мессага об ошибочной аутентификации меня прост убивала… А тут все дело в шляпе… Толковая статья. Коротко и в тему.
Рад, что статейка кому-то помогла.
Специально писал максимально коротко и просто. Многое не описано, но такой задачи и не ставилось. Хотел показать, как начать работать.
Как создать учетные записи? Пользователю необходимо дать права только на 2 каталога. Напишите пожалуйста конкртно, т.е. как есть. В книгах все на английском ,ну а я не силен. СПАСИБО
К сожалению, мне кажется, что никак, т.к. суть SVN в раздаче прав на проекты, а не части проектов. Но я не сильно углублялся в администрирование.
Во-первых, спасибо за ответ. Но теперь появился новый вопрос. Т.к. первый был неправильно сформулирован. На самом деле мне необходимо раздать права на проекты. Как это сделать я не знаю. Просто я пока не силен в администрировании:?) Если знаешь как это сделать напиши пожалуйста пошагово. очень нужно.
For subvrsion 1.4
снесите сервер и клиент, поставьте их заново.
Спасибо за статью