Powered by CodeIgniter

На заметку

(35)
12
12 голосов
В этом сообществе можно намечать себе цели для дальнейшей их реализации.
SVN Данный материал предназначен для тех людей, которые часто слышат об удобстве использования SVN, но еще не приступили к его изучению.
SVN (аббр. от Subversion) — это самая популярная система управления версиями. О чем идет речь, спросите вы? Представьте, у вас есть локальная версия сайта и версия сайта на сервере. Для их синхронизации требуется знать, какие файлы были изменены и куда их загружать. Упрощенно, именно эти обязанности и берет на себя SVN. Для работы под Windows рекомендую клиент TortoiseSVN, который удобным образом встраивается в контекстное меню проводника. Пользователям Mac придут на помощь программы Coda (именно в ней ведется разработка cogear с самого начала), Versions и просто Terminal с установленным через пакеты SVN.
Первым делом следует поставить акцент на основные операции работы с репозиторием:
  • Checkout. Первый шаг — загрузка репозитория, создание локальной копии.
  • Update. Обновление текущего репозитория до последней ревизии.
  • Commit. Отправка изменений в репозиторий — создание новой ревизии.

Checkout

Допустим, вы только что скачали и установили SVN-клиент. После этого вам необходимо узнать адрес репозитория и произвести чекаут с него — для сохранения локальной копии.
Если вы работаете из консоли, то чекаут cogear делается следующей командой:
cd Directory_where_you_want_to_have_cogear_copy svn co http://subversion.assembla.com/svn/cogear/cogear > cogear Если вы работаете в проводнике Windows, зайдите в нужную папку и в контекстном меню (по правому клику) выбрав пункт Commit, введите путь к текущей ревизии.
http://subversion.assembla.com/svn/cogear/cogear Локальная копия будет создана, и вы можете приступать к работе.

Update

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

Commit

В иной раз вы сами захотите внести изменения в движок (только для команды разработчиков) — измененные файлы будут отмечены особым образом, и вы сможете указать системе, с учетом каких вами сделанных изменений стоит создать новую ревизию. Выбираете файлы, правой кнопкой на них щелкаете и в контекстном меню выбираете Commit. Все, вы создали новую ревизию (каждое отправленное изменения считается ревизией) и все люди, обновляющиеся из репозитория, будут иметь доступ к нему с учетом ваших самых последний исправлений. Не переживайте, если что-то пошло не так — репозиторий можно «откатить» до любой ревизии.
Каждая ревизия должна быть дополнена комментарием. Данные об авторе каждой ревизии и комментарии к ней также хранятся в системе. Посмотрите на удобное графическое представление нашего репозитория.

Вывод

Система контроля версий позволяет нам мгновенно делиться с вами самой актуальной версией движка, а вам — безболезненно обновлять cogear на своих сайтах.
Не бойтесь попробовать — оно того стоит. Самое главное, что все изменения фиксируются, и есть возможность вернуться к любой ревизии.
19:39 ← 28 февраля 2010 Отправить в Твиттер adminadmin  RSS comments 18

Комментарии (18) ↓

inetlover inetlover time 20:33 ← 28 февраля 2010 #
…под Windows рекомендую клиент TotoiseSVN…
Отличный клиент, сам пользуюсь и всем рекомендую! Только опечатка — r пропущена, правильно TortoiseSVN.
Автор
admin admin time 20:41 ← 28 февраля 2010 #
Исправил, спасибо. Внеси уже цитирование любого текста со страницы в редакторе через SVN :-)
Softovick Softovick time 20:42 ← 28 февраля 2010 #
А для Linux что посоветуете?
Кстати, почему SVN, а не GIT?
Автор
admin admin time 20:47 ← 28 февраля 2010 #
Command Line aka Terminal, либо же серьезную IDE типа NetBeans, где есть встроенная поддержка репозиториев.
Потому что Coda поддерживает пока только лишь SVN :-) О поддержке GIT на маке совсем не слышно.
Softovick Softovick time 20:51 ← 28 февраля 2010 #
Жаль… Ибо GIT, я так понимаю, сейчас предпочтительней вроде…
кстати, а разве NetBeans нет под Mac?
Автор
admin admin time 21:07 ← 28 февраля 2010 #
Есть, но он написан на Java, а любой Java-софт на маке работает через одно место.
По поводу предпочтений — все это условности. Я работаю так, как мне удобно — каждый выбираем сам для себя.
medar medar time 21:56 ← 28 февраля 2010 #
Говорят, svn неплох, когда не ведется плотная работа с проектом несколькими людьми — с ветками и последующим слиянием. Слияние в svn — это полная задница. Именно по этой причине (ну и нескольким другим еще) Линус Торвальдс написал свой git, чтобы в нем ядро линукса разрабатывать. И все пацаны на раёне :) сейчас потихоньку мигрируют на него.

Softovick, git заточен под командную строку и в линуксе он работает прекрасно. В сети лежит масса мануалов, есть даже скринкасты: www.gitcasts.com/
Автор
admin admin time 22:12 ← 28 февраля 2010 #
Если будет необходимость — переедем на GIT, так уж и быть, уговорил.
erGo erGo time 02:01 ← 03 июля 2010 #
ИМХО, в данном случае такой потребности нет. У вас же нет нескольких команд разработчиков, разбросанных по всему миру ;). У нас в конторе разработчики сидят в нескольких городах, используем CVS и SVN. С первого (наследия прошлых эпох) постепенно переползаем на второй.
Softovick Softovick time 22:15 ← 28 февраля 2010 #
Я знаю про GIT. Потому и спросил :)
erGo erGo time 01:58 ← 03 июля 2010 #
Слияние в svn — это полная задница.
Это было в версиях до 1.5. Начиная с оной, слияние работает как часики.

Именно по этой причине (ну и нескольким другим еще) Линус Торвальдс написал свой git
Не будем передёргивать ;) Линусу нужна была система управления версиями, умеющая работать с распределёнными хранилищами. В этом классе git считается лидером. Точно так же, как в классе СУВ с одним хранилищем лидирует SVN.
diamon diamon time 11:21 ← 13 марта 2010 #
В пункте Checkout ошибочка.
Если вы работаете в проводнике Windows, зайдите в нужную папку и в контекстном меню (по правому клику) выбрав пункт Commit, введите путь к текущей ревизии.
Всё же не Commit, а Checkout.

И почему-то http://subversion.assembla.com/svn/cogear/cogear — 404 (
Автор
admin admin time 11:23 ← 13 марта 2010 #
Посмотрите структуру SVN, я разделил ее на текущую версию 1.1 (пока не рекомендуется к обновлению) и версию 1.0.
Обновляйтесь с http://subversion.assembla.com/svn/cogear/branches/1.0.
diamon diamon time 10:10 ← 14 марта 2010 #
а ошибочку так и не поправили )
кстати с svn не удобно обновлять работающий проект, ведь все настройки шестерёнок хранятся в .info файлах, которые затираются файлами из svn.
Автор
admin admin time 12:11 ← 14 марта 2010 #
Если вы изменения в файлы вносили, но SVN по-любому спросит, хотите ли вы изменить версию файлов.
dizatorr dizatorr time 00:30 ← 30 августа 2010 #

Если кому-то пригодится:

Рекрсивное удаление файлов и папок .svn под linux
find. -name .svn -type d -exec rm -rf {} \;
sofcom sofcom time 07:47 ← 11 сентября 2010 #
Я вот установил TortoiseSVN, поверх — пакет русификации. И нихера не понял «что дальше», завтра буду разбираться
Автор
admin admin time 13:35 ← 11 сентября 2010 #
Разбирайся, крайне полезная вещь.