2016-02-04 5 views
0

В какой степени это возможно? И есть ли такая обертка (или, может быть, front-end - более правильное имя)?Есть ли оболочка для `git-svn`, которая использует синтаксис` svn`?

Например, как это работает. С git-svn вы использовали бы git svn clone <url> вместо svn co <url> (IIRC), поэтому здесь обертка будет выполняться, если выполняется svn co <url>, перевести это и на самом деле сделать git svn clone <url>.

Возможно, это плохая идея, так как могут быть важные случаи, которые невозможно обработать (поэтому первый вопрос). Может быть, это хорошая идея (поэтому второй вопрос).

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

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

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

+2

У вас есть что-то против изучения инструментов командной строки Git? SVN и Git полностью не отображают 1: 1 друг на друга. @VonC может иметь что-то еще сказать здесь. –

+0

@TimBiegeleisen Нет, на самом деле я предпочитаю 'git'. В противном случае было бы бесполезно использовать 'git-svn', не так ли? Я понимаю, конечно, что они не отображают 1: 1, и поэтому я спрашиваю, в какой степени это возможно. – skyking

ответ

0

Цель 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.

У вас есть два варианта:

  1. Написать сценарий оболочки, который принимает командную строку, используя svn параметры и преобразует его в git-svn командной строки с.
  2. Изменить скрипты для использования 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.

Смежные вопросы