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! =)
Если нужно, то могу написать что-то подобное про Git.
Link | Январь 11th, 2010 at 22:45
эмм, ну для меня это актуально, ты же знаешь ;)
Link | Январь 13th, 2010 at 03:25
Не совсем понял такой момент.
Вот я скачал репу, добавил/изменил файл. Как мне его на сервер обратно отослать?
Link | Февраль 11th, 2010 at 00:35
Точнее вопрос, как чтобы он автоматом подхватил новые файлы\директории, а не по одному добавлять ?
Link | Февраль 11th, 2010 at 00:43
пиши:
при такой команде будут пересканины на предмет новых файлов все директории от текущегно уровня (на это указывает точка). Или же для увеличения скорости можно указать точнее в какой папке находятся твои новые файлы:
Link | Февраль 13th, 2010 at 07:23
Отлично, но наверное, сегодня дочитать не успею, добавил в избранное.
Link | Март 26th, 2010 at 03:37
мало что понял.
не объяснена суть работы с svn, описаны лишь команды.
вот я завел svn на GoogleCode.
как туда засунуть файлы своего проекта. co? ведь там пусто.
как удалить что то там, а ведь там просто так не удаляется,а планируется.
Link | Ноябрь 4th, 2010 at 15:48
если вы заметили, я в первом абзаце указал, что это краткий экскурс по осноынм командам svn. Я не ставил тут целью объяснение почему стоит использовать системы контроля версий.
Я не работал с Google Code, но последовательность твоих действий должна быть примерно такой:
svn checkout http://path.to/repo ./
Т.е. ты как бы забираешь пустой репозиторий. Потом делаешь в этой своей папке необходимые изменения.
Затем добавляешь это дело к будущему коммиту командой «svn add ./»
Коммитишь «svn commit»
Вот и всё.
Link | Ноябрь 7th, 2010 at 21:54
Примере про svn checkout
svn ci http://example.com/svn/projectname/some/path/html/ .
нужно ci заменить на co
Link | Январь 14th, 2011 at 10:36
2Лёша: ага, очепятался. Спасибо, поправил
Link | Январь 14th, 2011 at 13:05
>> Если нужно, то могу написать что-то подобное про Git.
НУЖНО
Link | Февраль 11th, 2011 at 11:51
У меня два вопроса, если можно)
1) можно ли в SVN поставить ограничение по размеру для ветви (т.е. при превышении удалять совсем старые версии)
2) можно ли в SVN автоматом посмотреть по списку каталогов посмотреть, когда были сделаны последние commit’ы (хочется знать, кто из разработчиков отлынивает:) ), или придется писать скрипт
//используем VisualSVN
Link | Февраль 24th, 2011 at 16:45
1. я про такое не слышал, но мне кажется, что врядли. неправильно как-то удалять историю коммитов. очеь врядли..
2. http://www.google.by/search?hl=ru&q=svn+statistic&aq=f&aqi=g1&aql=&oq=
Link | Февраль 27th, 2011 at 10:20
Стандартно апач позволяет показывать только файлы последней ревизии, без каких либо полезных вещей. Весьма примитивно. Для просмотра правок, изменений (включая изменения в файлах между ревизиями и т.д.) могу рекомендовать бесплатный продукт: http://www.websvn.info/
Крохотный мини-сайтик, поставил, настроил и пользуешься. Весьма обширные возможности.
Не реклама, а совет, не более того.
Link | Май 6th, 2011 at 15:59
Здесь очень мало уделено внимания разбору параметров команд, и собственно их значению команд. Здесь дополнительно читаем: devdream.net/?p=188
Link | Май 8th, 2012 at 21:41