Git-SVN для веб-разработки - как это сделать? - PullRequest
1 голос
/ 12 марта 2009

мы используем SVN для нашей работы. Мы - небольшая студия веб-дизайна, и в то же время мы пишем на PHP, разрабатывая некую «фреймворк».

Теперь мы думаем о более мощном решении и хотели бы попробовать git-svn. Мы используем филиалы как разные проекты - один филиал, один проект. Так что у меня в компьютере точно такая же структура, что и в моем wwwroot. Одна ветка = один проект = один виртуальный хост.

Пока я играл с git-svn, я не знаю, как этого добиться. Мне нужно, чтобы ветки физически присутствовали в файловой системе, потому что у меня есть виртуозы в Apache и т. Д.

Не могли бы вы дать мне какой-нибудь совет или указать на какой-нибудь учебник, как это сделать?

Ответы [ 5 ]

3 голосов
/ 12 марта 2009

Вы делаете это неправильно ™.

Серьезно, ветки предназначены, ну, в общем, для ветвей. Вы должны использовать разные репозитории для разных проектов.

Если я правильно понял, у вас есть один фреймворк, над которым вы работаете, и несколько проектов, основанных на этом фреймворке. Независимо от того, какую систему контроля версий вы используете, она переводится в один репозиторий для платформы и один репозиторий для каждого проекта.

Именно поэтому git показывает вам только одну ветвь за раз в вашей рабочей копии. Обычно вы работаете на одной ветке за раз. Вам нужна одна рабочая копия на филиал, если вам нужны рабочие копии всех филиалов.

1 голос
/ 25 августа 2010

Время показало нам лучшее решение.

Мы полностью перешли на git с новой основной версией нашего фреймворка. Таким образом, проекты, основанные на более старой версии, по-прежнему поддерживаются через репозиторий SVN, и новая разработка выполняется в git.

0 голосов
/ 14 марта 2009

Как уже говорили другие, используйте отдельные репозитории, а не ветки.

С SVN вы можете просто иметь ..

http://svn/site_a/trunk/
http://svn/site_b/trunk/
etc

Тогда вы можете svn co http://svn/site_a/trunk/ каждый сайт отдельно

С помощью git вы просто создадите несколько репозиториев:

mkdir site_a
cd site_a
git init
cd ../
mkdir site_b
cd site_b
git init

У вас может быть «главный» репозиторий, в который каждый сайт добавляется как подмодуль, но это не то, для чего предназначен git-submodule, и я обнаружил, что это больше проблем, чем стоит.

Не очень хорошая идея использовать git-svn для чего-то большего, чем миграция репозитория SVN в git или работа над проектом, который вы не контролируете.

Если вы хотите использовать gits ветвление (и это другие преимущества), почему бы не перейти полностью на git? Вы можете настроить его в несколько SVN-подобном централизованном режиме, используя что-то вроде gitosis

Обычно, если вам нравится git, переключитесь на него (вместо использования git-svn). Если вы ищете git только для разветвления, не делайте - делите SVN-репозиторий на более мелкие проекты (site_a/trunk/ и т. Д.)

0 голосов
/ 14 марта 2009

Только что переключившись с SVN на Git, я бы согласился с двумя ответами выше.

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

С svn некоторым людям нравится использовать один репозиторий, потому что проще делиться кодом между проектами и т. Д. С Git вам лучше использовать один дополнительный репозиторий для всех ваших общих ресурсов; если что-то начинается в одном проекте, и вы позже захотите поделиться им, сделайте слияние поддеревьев (кстати, это специально задокументированный термин Git) в ваш общий репозиторий. Затем вы можете вернуть код к другим проектам.

0 голосов
/ 12 марта 2009

Вы можете сделать то же самое с самим Git - см. Подмодули Git .

Таким образом, у вас есть Git-репо для всего "wwwroot" и субмодулей для каждого проекта. Если вы работаете только над несколькими проектами из всех, вы можете проверить их / клонировать отдельно.

Я никогда не находил git-svn хорошим решением. Я использую SVN или Git, а не оба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...