Янв
11
2010

Начало работы с SVN (checkout, update, status, ignore, log)

UPD: svn – фигня! юзайте git! =)

Возникла необходимость научить свеого друга пользоваться svn. И я ему начал писать  письмо с кратким экскурсом по основным командам. Полчился, на мой взгляд, неплохой пост для краткого ввдения в то, как начать пользоваться svn. Далее и привожу этот экскрус по основным консольным командам svn. Я затронул вот такие моменты: checkout, update, status, ignore, log

При работе с SVN тебе дают просто ссылку (у нас например просто в примечаниях к проекту она указывается и всё) на репозиторий или какой-то конкретный путь в репозитории. Например

http://example.com/svn/projectname/some/path

Тут projectname – это название репозитория, а some/path – это уже путь внутри репозитория.

Как правило на серверах с svn включена возможность просмотра репозитория через обычный браузер. Тогда ты можешь посмотреть что находится внутри этого пути. Пробуй открыть в браузере.

svn checkout

Ну вобщем раз у тебя есть ссылка, то ты должен забрать данные из репозитория. Для этого воспользуйся командой «svn co» Почитай «svn help co»

Причём заметь: для примера требуемые файлы находятся не сразу в папке some/path, а в еще одной (например, html). Т.е. возможно тебе не захочется, чтобы в твоей файловой системе по пути к main.html была лишняя папка. тогда ты можешь просто делать чекаут другого немного пути: http://example.com/svn/projectname/some/path/html

Ну и checkout ты будешь делать так:

svn co http://example.com/svn/projectname/some/path/html/ .

Кстати обрати внимание на второй параметр у svn co ;)

Если это твой первый checkout, то скорее всего тебе будет предложено указать имя пользователя и пароль для доступа к репозиторию, а так же будет предложено сохранить эти данные на твоём компе, чтобы не вводить их каждый раз. Соглашайся. А логин  и пароль спрашивай у администратора svn.

Идём далее.

svn:ignore

В svn не принято хранить всякие «шлаковые» файлы. Например при работе над проектом в zend автоматически в папке проекта создаются файлы .settings, .buildpath и тд. В этимх файлах хранятся настройки среды разработки для тебя лично. И другим людям, кто будет забирать данные из этого же репозитория эти файлы не нужны, а скорее будут мешать. Так же не принято в svn хранить конфигурационные файлы проекта, которые индивидуальны для разных копий. Ну например файл с конфигурацией с доступом к базе данных.

Вобщем таких файлов быть не должно в svn. для этого ты должен проставить на них игнор. Выглядит это примерно так:

svn pedit svn:ignore . — для выставления игноров на текущую папку
svn pedit svn:ignore ./folder/ — для выставления игноров на папку folder, которая находится в текущей папке.

Тут pedit – это команда для редактирования опций (properties edit) (глянб также pget, pset, pdel), а svn:ignore – это опция, которую мы редактируем (есть и другие). И далее следует параметр – это для какой папки будем указывать опцию. Точка – это текущая папка.

После выполнения этой команды у тебя откроется на редактирование текстовый файл. В нём просто указывай на что ставить игноры. Каждая запись в новой строке. Затем сохраняешь.

svn status

И проверяешь командой
svn status
Если всё хорошо, то файлов, на которые ты выставил игноры ты не увидишь.

svn commit

Теперь осталось зафиксироваться (закоммитить) изменения на сервере. для этого выполняй:

svn ci -m «проставил игноры на ненужные файлы и папки»

ну вот и всё с игнорами.

когда что-то поредактировал и хочешь слиться с сервером делай коммит. и пиши пояснительные сообщения, чтобы было понятно что ты делал. лучше сразу привыкай к такому стилю.
svn ci -m «сверстал верхнюю менюшку»

Так же ты просто можешь написать svn ci и тогда тебе откроется текстовый файл на редактирование, где в верхней части ты можешь написать своё пояснение (тут кстати можно и в несколько строчек писать). Затем закрываешь файл и происходит коммит.

svn update

Если кто-то другой сделал изменения и тебе надо их получить, то пиши svn up

svn log

Так же ты можешь посмотреть лог (т.е. кем и когда были сделаны коммиты и что было написано в сообщении (-m «блабла»))
svn log -l 5

Тут флаг -l используется для установки ограничения (limit) на количество записей, которые ты хочешь посмотреть. Лучше всегд используй лимит. Иначе ты будешь получать список всех ревизий. А если их будет 100 или 1000? )

Ну вот вроде бы и всё. Вопросы? )

UPD: svn – фигня! юзайте git! =)

tags: ,
posted in svn by yas375

Follow comments via the RSS Feed| Trackback URL

19 Comments to "Начало работы с SVN (checkout, update, status, ignore, log)"

  1. lest wrote:

    Если нужно, то могу написать что-то подобное про Git.

  2. yas wrote:

    эмм, ну для меня это актуально, ты же знаешь ;)

  3. alex wrote:

    Не совсем понял такой момент.
    Вот я скачал репу, добавил/изменил файл. Как мне его на сервер обратно отослать?

  4. alex wrote:

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

  5. yas wrote:

    пиши:

    svn add . --force

    при такой команде будут пересканины на предмет новых файлов все директории от текущегно уровня (на это указывает точка). Или же для увеличения скорости можно указать точнее в какой папке находятся твои новые файлы:

    svn add source/ --force

  6. duBackup wrote:

    Отлично, но наверное, сегодня дочитать не успею, добавил в избранное.

  7. pet wrote:

    мало что понял.
    не объяснена суть работы с svn, описаны лишь команды.

    вот я завел svn на GoogleCode.
    как туда засунуть файлы своего проекта. co? ведь там пусто.
    как удалить что то там, а ведь там просто так не удаляется,а планируется.

  8. yas wrote:

    если вы заметили, я в первом абзаце указал, что это краткий экскурс по осноынм командам svn. Я не ставил тут целью объяснение почему стоит использовать системы контроля версий.

    Я не работал с Google Code, но последовательность твоих действий должна быть примерно такой:

    svn checkout http://path.to/repo ./
    Т.е. ты как бы забираешь пустой репозиторий. Потом делаешь в этой своей папке необходимые изменения.
    Затем добавляешь это дело к будущему коммиту командой «svn add ./»
    Коммитишь «svn commit»

    Вот и всё.

  9. Леша wrote:

    Примере про svn checkout

    svn ci http://example.com/svn/projectname/some/path/html/ .

    нужно ci заменить на co

  10. yas wrote:

    2Лёша: ага, очепятался. Спасибо, поправил

  11. ALca wrote:

    >> Если нужно, то могу написать что-то подобное про Git.
    НУЖНО

  12. Max wrote:

    У меня два вопроса, если можно)

    1) можно ли в SVN поставить ограничение по размеру для ветви (т.е. при превышении удалять совсем старые версии)

    2) можно ли в SVN автоматом посмотреть по списку каталогов посмотреть, когда были сделаны последние commit’ы (хочется знать, кто из разработчиков отлынивает:) ), или придется писать скрипт

    //используем VisualSVN

  13. yas wrote:

    1. я про такое не слышал, но мне кажется, что врядли. неправильно как-то удалять историю коммитов. очеь врядли..

    2. http://www.google.by/search?hl=ru&q=svn+statistic&aq=f&aqi=g1&aql=&oq=

  14. Vasyl wrote:

    Стандартно апач позволяет показывать только файлы последней ревизии, без каких либо полезных вещей. Весьма примитивно. Для просмотра правок, изменений (включая изменения в файлах между ревизиями и т.д.) могу рекомендовать бесплатный продукт: http://www.websvn.info/

    Крохотный мини-сайтик, поставил, настроил и пользуешься. Весьма обширные возможности.

    Не реклама, а совет, не более того.

  15. Djvibegga wrote:

    Здесь очень мало уделено внимания разбору параметров команд, и собственно их значению команд. Здесь дополнительно читаем: devdream.net/?p=188

  16. chee wrote:

    а как можно объединить 2 версии с разных репозиториев? у меня svn развернут на 2 компах.нужно все это объединить вместе с логами

  17. ctepeo wrote:

    Сильно удивился, увидев Леста в комментах к статье из Гугла. А потом вообще удивился, когда имя сайта увидел :) Спасибо, хлопцы!

  18. yas375 wrote:

    You are welcome :)

  19. But wrote:

    Как скачать файлы из старой ревизии?