Хранилище svn и www

Разгильдяй

Новичок
Хранилище svn и www

Вынужден признать, что к своему стыду ранее не использовал ни cvs ни svn. Возникла потребность в системе управления версиям. Установил svn на сервере, читаю дальше мануал:

В этом примере мы подразумеваем наличие у вас какого то проекта (набора файлов или директорий), который вы хотите импортировать в только что созданное Subversion хранилище. Начните с объединения их в отдельной директории названой myproject (или как-то иначе). Ваше дерево проекта должно содержать три директории верхнего уровня с названиями branches, tags и trunk. Вся ваша информация должна находиться в директории trunk, а директории branches и tags должны быть пустыми
мой проект лежит в /var/www по причине того, что это веб-директория и из нее вызываются скрипты. Значит ли это, что я должен переименовать ее в trunk (глупо) или нельзя писать скрипты, которые можно одновременно хранить и в svn и в www (чтобы сразу при написании тестить)?

спасибо.
 

mani13

Новичок
Разгильдяй
1. ИМХО:
Лучше всего разрабатывать проекты в какой-нить локальной папке, например, ~/SVN/myproject, C:/SVN/myproject, etc, а отображение через httpd делать при помощи hook'ов, чтобы всегда был виден результат только закоммиченых версий. В общем-то, в таком случае разработка будет идти под один сервер с одними настройками, в идеальном случае это будет продакшн сервер. Если всё-таки хочется иметь локальную версию для просмотра, то на ИМХО забиваем.
2. По поводу структуры директорий:
trunk(основная, в данный момент разрабатываемая ветка), tags(теги, снепшоты, не знаю как ещё описать :) ), branches(ветки, например, портирование под другую платформу) это лишь рекомендуемые папки, до которых subversion по большому счёту нет дела :) Так что можно смело делать корень только с одной веткой(что, на самом деле, даже будет рациональнее для совсем небольших проектов, в которых не предусматривается версий, веток, релизов и прочего, то есть только 1 версия...).

-~{}~ 21.06.06 21:25:

Ещё одно добавление про svn и httpd одновременно:
Лучше бы закрыть служебные каталоги(.svn) от просмотра через httpd.
 

Разгильдяй

Новичок
>> отображение через httpd делать при помощи hook'ов

1. Тут подразумевается любой веб сервер, или апач с mod_webdav?
2. У меня нгинкс. Рыл доки-маны ничего конкретного.
 

Gorynych

Посетитель PHP-Клуба
Разгильдяй вы путаете хранилище и рабочий каталог проекта.
 

Разгильдяй

Новичок
>> Разгильдяй вы путаете хранилище и рабочий каталог проекта.

Копии скриптов из рабочего каталога хранятся в хранилище.
У меня рабочий каталог: /var/www а хранилище: /var/svn

скрипты никуда переносить не надо?
 

Gorynych

Посетитель PHP-Клуба
угу, не надо. Изменения в проекте заливают (commit - коммитят) в репозиторий, а из репозитория выливают 9check out) последнюю или нужную версию.

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

это, так сказать, минимальные объяснения механизма на пальцах :)
 

mani13

Новичок
Разгильдяй
На самом деле, почитайте SVN Book(ссылка выше), он частично на русском, но основные моменты понимаются довольно легко.

И такой P.S. для ленивых про всё те же hook'и: балуясь с hook'ами можно в разрабатываемой версии удалить файлы, которые генерятся автоматом... мы так когда-то от лени своей Propel-классы генерили, а также mysql таблицы апдейтили.
 

Gorynych

Посетитель PHP-Клуба
oops! я все время забываю про одну "фишку" :)

образно говоря, для того чтобы все это нормально заработало надо6

а) залить проект в репозиторий
б) первый раз вынимать из репозитория нужно в пустой каталог!!!

т.е, "по тупому" примерно так:

пусть у меня УЖЕ есть проект, который лежит в каталоге /var/my/project1

1) первым делом я должен его ИМПОРТИРОВАТЬ в репозиторий
Код:
$ путь_к_svnbin/svn import /var/my/project1 file:///путь_к_репозиторию/project1 -m "initial import"
2) теперь проект надо вытащить из репозитория в рабочий каталог. Как ни смешно - если я хочу по прежнему использовать тот же каталог /var/my/project1, то мне надо все-все-все в нем удалить (ага, мрак!) и после этого сделать
Код:
$ путь_к_svnbin/svn checkout file:///путь_к_репозиторию/project1 /var/my/project1
вот про это первичное "обнуление" каталога я все время забываю :-(

P.S. понятно, что при желании на этапе 1) можно как раз выстроить всю ту изначально описанную структуру каталогов branches, tags и trunk (куда и поместить все рабочие файлы и каталоги). Тогда "вынимать" первый раз надо будет так:
Код:
$ путь_к_svnbin/svn checkout file:///путь_к_репозиторию/project1/trunk /var/my/project1
 

Разгильдяй

Новичок
svn import /var/www file:///var/svn/www -m "initial import"
rm -rf /var/www/*
svn checkout file:///var/svn/www /var/www

все прошло успешно. Что дальше? как менять код и потом его сохранять в рабочем каталоге или где?
 

Gorynych

Посетитель PHP-Клуба
Разгильдяй

да в общем-то по большому - все. Теперь можно продолжать работать в рабочем каталоге. После изменений каких-либо файлов (например - в конце рабочего дня :) ) можно выполнить в рабочем каталоге
Код:
путь_к_svnbin/svn diff
- будет показан список внесенных изменений
а для того, что закоммитить новые версии файлов в репозиторий
Код:
путь_к_svnbin/svn commit
"информация к размышлению" тут:
- http://svnbook.red-bean.com/nightly/ru/index.html

+ информация по историческому предку:
- http://www.cvs.ru
 

Gorynych

Посетитель PHP-Клуба
Разгильдяй
да не за что в данном случае. Это только быстрый старт, для нормальной работы большой группы разработчиков этого не совсем достаточно (но я так понял, что это и не было особо нужно)

P.S. зато у меня то же есть несколько вопросов в ответ. Про nginx. А то я уже запарился искать в листах рассылки :) Будет время - задам :)
 

Разгильдяй

Новичок
1. Да, речь шла пока только о быстром старте. Не все, кто работает на проект должны иметь доступ к репозитори. С остальным вроде пока справляюсь.
2. Спрашивай, помогу чем смогу.
 
Сверху