Цель git-svn
- облегчить переход от svn
в git
.
Он достигает этой цели, обеспечивая:
- способ импортировать
Svn
репозиторий в локальный репозиторий Git
;
- ограниченный способ отправки коммитов из локального репозитория
Git
обратно в центральный репозиторий Svn
; он ограничен, поскольку Svn
предоставляет только ограниченное подмножество функций Git
и есть Svn
функции, которые не предоставляются Git
; Кроме того, нет необходимости для команды Git
сделать так, чтобы сделать git-svn
клиентом Svn
, потому что, как я сказал ранее, его цель состоит в том, чтобы помочь пользователям Svn
сделать переход;
- Командная строка, которая напоминает командную строку
Git
, с конкретными дополнениями.
После использования git-svn
в командной строке некоторое время вы обнаружите, что Вы уже узнали, наиболее используемые Git
команды.
Использование svn
в существующих сценариях, в самом деле, законная причина хотеть передний конец для git-svn
, который имитирует командную строку svn
.
У вас есть два варианта:
- Написать сценарий оболочки, который принимает командную строку, используя
svn
параметры и преобразует его в git-svn
командной строки с.
- Изменить скрипты для использования
git-svn
вместо svn
.
Если вы планируете перейти на git
и git-svn
только фаза размещения (это то, как это должно быть), то вам придется изменить сценарии в любом случае использовать git
вместо svn
для того, чтобы завершить миграцию ,
bash
Простой скрипт, который переводит svn
команды git-svn
команды может выглядеть следующим образом:
#!/bin/bash
SVN_CMD=$1
shift
# If $1 is empty then display some help
# ... not provided here ...
case "$SVN_CMD" in
"checkout")
git svn clone "[email protected]"
;;
"update")
git svn fetch "[email protected]"
;;
"add")
git add "[email protected]"
;;
"commit")
git svn dcommit "[email protected]"
;;
esac
Для некоторых из этих команд, которые вы, возможно, придется добавить дополнительные параметры, чтобы соответствовать вашей текущей настройки и рабочего процесса. Некоторым из них, вероятно, не нужна часть "[email protected]"
. Это не проверенный скрипт, это всего лишь эскиз, который я себе представлял сейчас.
Лучший вариант, я думаю, это позволить сценарии использовать svn
и свою собственную рабочую копию кода (как Svn
рабочей копии), пока центральное хранилище не мигрировали в Git
. Разработчики могут использовать git-svn
и локальные репозитории Git
, пока не решит, что пришло время сделать полный переход на Git
.
Так мы работали три года назад. Некоторым разработчикам потребовалось время для размещения, и они использовали git-svn
, чтобы закрыть пробел; другие разработчики подпрыгнули непосредственно до командной строки Git
или различных интерфейсов GUI Git
, которые скрывают технические детали (например, в командной строке) и позволяют сфокусироваться на коде. Хороший Git
GUI клиент Atlassian SourceTree кроме этого много других.
Когда мы в конце концов решили полностью переключиться на Git
, сценарии были легко конвертированы и протестированы. Что касается репозиториев, я рекомендую вам попробовать SubGit
для преобразования. Он делает лучшую работу, чем git-svn
.
У вас есть что-то против изучения инструментов командной строки Git? SVN и Git полностью не отображают 1: 1 друг на друга. @VonC может иметь что-то еще сказать здесь. –
@TimBiegeleisen Нет, на самом деле я предпочитаю 'git'. В противном случае было бы бесполезно использовать 'git-svn', не так ли? Я понимаю, конечно, что они не отображают 1: 1, и поэтому я спрашиваю, в какой степени это возможно. – skyking