Ежовый угол

Сеть, Рунет, телеком, Иркутск

Ставим 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.

Раздел: Без рубрики

Метки: , ,

66 комментариев

  1. Альберт:

    А у меня уже стоит классная вещь 🙂

  2. Я тоже так считаю. 🙂 Вот этим материалом хочу расширить круг пользователей.

  3. А для чего обращаться к репозиторию через сервер, если он находится на том же компьютере, что и рабочая копия? Может лучше локально используя url: file:///c:/svn-store/my_project
    Или я чего то не усвоил?

  4. Да, так можно. Но я посчитал, что лучше сразу описать сетевой способ. Локальный слишком прост, чтобы его вообще описывать — достаточно установить SVN и клиент и подключаться по указанному вами адресу.

  5. SofT MANiAC:

    Использую активно. Статья рулит!

  6. Спасибо за положительную оценку. 🙂

  7. Mike:

    Я одного догнать не могу: я делаю одно хранилище для всех проектов или для каждого создаю свое?

  8. Да, для каждого нужно делать отдельное.

  9. gibz:

    не забывайте только еще и стартовать SVN сервер svnserve.exe -d
    —listen-port СВОЙ_ПОРТ -r ПУТЬ_К_ХРАНИЛИЩУ_РЕПОЗИТОРИЕВ

  10. Mike:

    У меня он службой в Винде стартует

  11. Igor_:

    Кто-нибудь подскажет, как узнать, на каком порту SVN стартовал по умолчанию (если при старте SVN сервера
    svnserve.exe -d –listen-port СВОЙ_ПОРТ -r ПУТЬ_К_ХРАНИЛИЩУ_РЕПОЗИТОРИЕВ)
    –listen-port СВОЙ_ПОРТ не был указан?

  12. Mike:

    Могу предложить только посмотреть netstat -an до запуска и после, а потом сравнить. Хотя по умолчанию согласно доке при запуске с ключом -d порт 3690.

  13. Igor_:

    Спасибо.
    Попробуем..

    Просто в статье по умолчанию был указал порт
    svn://localhost:8082/my_project/

    Я у себя попробовал — с таким портом не работало (без указания порта — все, естественно, ОК).

    А порт по умолчанию в доке чего-то не нашел..

  14. Igor_:

    А еще вопрос, может кто подскажет (либо ссылку на статью подкиньте).

    Как нормально (и безопасно) поднять SVN под Windows чтобы с ним можно было работать из internet (есть реальный IP).
    Допустим через протокол https:\\.

    Я в svn-book кое-чего почитал, но в web-технологиях я не особо силен, многих вещей не понял.. В общем, хотелось бы подобное руководство (кстати, оно для начинающих очень хорошее), только для моей задачи..

  15. Автору спасибо за статью. Если кому надо, описание как установить svn как службу винды здесь:
    http://svn.collab.net/repos/svn/trunk/notes/windows-service.txt

  16. Jay:

    Можно и так и так. Если для каждого проекта свое хранилище — то у каждого проекта свои revision numbers. Если хранилище общее — то revisions будут общие.

  17. давно ей пользуюсь! рекомендую

  18. mastikhin:

    Ввожу в импорт: «svn://localhost:8082/my_project/», результате клиент отвечает «конечный компьютер отверг запрос». Игрался уже и с файерволом, и с локалхостом (пробовал свой ип в сети, 127.0.0.1) — ничего не помогает.
    Я уже голову сломал, в чём дело, неужели в карме?
    Помогите советом..

  19. Tee:

    Ребят, кто подскажет оно с Win2k работает ?
    Интересует именно серверная часть. Поставил, делал по инструкции (не с этого сайта), что то как то … нифига в общем.

  20. маин:

    Запустил и все работает.
    Но когда подключаюсь к СВН то всегда пишет — Error: Authorization failed
    При этом окна логина и пароля не просит. А сразу ошибку выдает!

  21. Видимо, файл с паролями был неправильно создан.

  22. Tee:

    Всё, добил. )

  23. Анатолий:

    Огромнейшее спасибо за статью!!! RESPECT!!! Мессага об ошибочной аутентификации меня прост убивала… А тут все дело в шляпе… Толковая статья. Коротко и в тему.

  24. Рад, что статейка кому-то помогла.

    Специально писал максимально коротко и просто. Многое не описано, но такой задачи и не ставилось. Хотел показать, как начать работать.

  25. Alex:

    Как создать учетные записи? Пользователю необходимо дать права только на 2 каталога. Напишите пожалуйста конкртно, т.е. как есть. В книгах все на английском ,ну а я не силен. СПАСИБО

  26. К сожалению, мне кажется, что никак, т.к. суть SVN в раздаче прав на проекты, а не части проектов. Но я не сильно углублялся в администрирование.

  27. Alex:

    Во-первых, спасибо за ответ. Но теперь появился новый вопрос. Т.к. первый был неправильно сформулирован. На самом деле мне необходимо раздать права на проекты. Как это сделать я не знаю. Просто я пока не силен в администрировании:?) Если знаешь как это сделать напиши пожалуйста пошагово. очень нужно.

  28. Alex:

    For subvrsion 1.4

  29. qik:

    снесите сервер и клиент, поставьте их заново.

  30. qik:

    Спасибо за статью


Оставить комментарий

Реклама

Статистика