git с интерфейсом svn?

#svn #git

#svn #git

Вопрос:

Есть ли способ взаимодействовать с репозиторием git, используя набор команд svn?

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

Я знаю, что можно получить доступ к репозиторию svn с помощью git, но я ищу противоположную функциональность.

Ответ №1:

Вы можете попробовать SubGit. Установите его на свой сервер, и он предоставит связанный репозиторий SVN таким образом, что любая фиксация в репозитории SVN приведет к Git push и наоборот. Трансляция безопасна для параллельного использования и довольно прозрачна: теги SVN преобразуются в теги Git, ветви — в branches, svn:ignore — в .gitignores и так далее.

Инструкция такова:

 $ svnadmin create svn.repo
$ subgit configure svn.repo
$ #edit svn.repo/conf/subgit.conf to specify path to your bare Git repository
$ subgit install svn.repo
  

Вот и все. Перевод запускается перехватами, которые будут добавлены как в репозитории SVN, так и в репозитории Git.

Ответ №2:

Принципиально нет — не без ужасных допущений и упрощений, которые гарантированно вернутся, чтобы укусить вас. Переход от нераспределенной к распределенной VCS и эффективное ее использование требует от вас изменения вашего мышления. http://hginit.com/00.html есть несколько замечаний по переходу с svn на hg, которые были бы аналогично уместны в данном случае.

Комментарии:

1. Этот «совет» не является ответом, и все же вы приняли его как ответ. Если вы искали проверку, то название вопроса было обманчивым.

Ответ №3:

Что я делал, так это использовал svn в качестве авторитетного источника, но все разработчики git подключаются к gitorious во время совместной работы над проектами. Когда задачи завершены, кто-то, кто работает над сопряженной задачей, например, выполняет перебазирование по мере необходимости и передает subversion с git svn .

Это не идеальное решение, но оно позволяет вам работать локально под git, по крайней мере, с другими разработчиками git.

Что вам действительно нужно сделать, так это устранить препятствия для git. Похоже, это единственное реальное устойчивое долгосрочное решение.

Комментарии:

1. Тем не менее, я все еще не решил проблему с задержками svn на своей стороне. Я живу с git svn, и это как минимум в 10000000 раз лучше, чем просто svn.

Ответ №4:

Если не всех устраивает переход, вы можете рассмотреть возможность использования SVN-сервера и попросить всех, кто хочет использовать git, использовать git-svn. У Git очень крутая кривая обучения. Таким образом, даже у людей, которым нравится использовать Git, могут возникнуть проблемы с его использованием, а в проекте это может снизить вашу производительность. Лучше, чтобы все изучали git через git-svn, поскольку при необходимости есть альтернативный способ работы — через SVN. Если у людей есть опыт работы с git, переход может оказаться очень плодотворным. В противном случае может возникнуть множество краткосрочных и среднесрочных проблем. Я сталкивался с этим и рассказываю о своем опыте.

В противном случае, TortoiseGit в Windows должен быть знаком людям, использующим TortoiseSVN. Кроме того, вы можете использовать псевдонимы некоторых команд в git на основе аналогичных команд SVN, чтобы они выполняли похожие действия. Like svn revert — это не то же самое, что git revert , но git reset --hard является своего рода эквивалентом. Большую часть времени трудно найти эквиваленты, но для некоторых из них вы можете

Комментарии:

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

2. @Mark Longair — полностью согласен с вами, но обновил свой ответ, чтобы дать дополнительные пояснения.

Ответ №5:

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

Комментарии:

1. Неплохая идея, но я был бы очень осторожен с этим. Я помню, как читал что-то о команде, где люди допустили много критических ошибок, потому что это выглядело как нечто эквивалентное svn, но на самом деле отличалось критическим образом. В частности, был случай, когда кто-то изменил файл A, переданный в origin / master, а затем кто-то другой изменил файл B, полученный из origin / master, и попытался объединить origin / master в master. В своем коммите «слияния» они сняли галочку с файла A, потому что не собирались вносить в него какие-либо изменения, фактически перезаписывая первые изменения.