Могу ли я использовать git-svn и выглядеть так, как будто я использую SVN, если да, то как?

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

Я знаю, что можно получить репозиторий из svn с помощью git, но могу ли я использовать git вместо svn и при этом выполнить фиксацию и «отправить» на центральный сервер svn?

Я хочу использовать git, а не svn, если я могу, вы можете указать мне какой-нибудь учебник для этого?

Спасибо

ИЗМЕНИТЬ:

На самом деле мне не нужно получать ВСЕ коммиты, достаточно только 10/20 предыдущего, так как приложение находится в рабочем состоянии, и это касается только улучшений, поэтому я буду получать всю историю коммитов, только если это действительно необходимо.


person ÉricP    schedule 09.03.2011    source источник
comment
и похоже, что я использовал SVN. Если действительно важно, чтобы никто из других пользователей svn не знал, что вы использовали git, то будьте осторожны, чтобы не зафиксировать свой .gitignore файл или что-то подобное, и никогда не git svn dcommit более чем один раз зафиксировать время, потому что в журналах svn они будут отличаться всего на несколько секунд. Но кроме этого, вы можете думать о git просто как о очень причудливом клиенте svn, и никто не заметит разницы.   -  person MatrixFrog    schedule 10.03.2011


Ответы (2)


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

Вместо отправки вы будете использовать git commit для локальной фиксации и git svn dcommit для отправки локальной фиксации в SVN.

В документации git-svn объясняется, как получать данные из репозитория SVN. Обратите внимание, что он чрезвычайно медленный (по сравнению с обычным git), поскольку извлекает каждую ревизию из SVN. См. примеры внизу документации.

Вот типичный способ, которым я его использовал:

  1. git svn clone http://svn.example.com/project -T trunk -b branches -t tags — URL-адрес — это ваш репозиторий SVN, и вы указываете переключатели -T, -b и -t, чтобы указать подпути в вашем каталоге SVN. Затем Git будет использовать эти каталоги SVN для поиска веток и тегов, а ствол — в качестве главного.
  2. Внесите некоторые изменения в код
  3. git add... для внесения изменений
  4. git commit... для локальной фиксации изменений.
  5. git svn dcommit для отправки локальных коммитов в SVN. Для каждого локального коммита Git будет делать эти отдельные коммиты на сервере SVN.
person vcsjones    schedule 09.03.2011
comment
Я пробовал вашу команду git svn clone, но это ничего не дает, я ранее проверил репозиторий svn (с помощью svn), кажется, что там нет ни одной папки, ствола, тегов или ветвей, весь код находится в корне, любые идеи ? - person ÉricP; 09.03.2011
comment
Все в порядке, я добился клонирования, не указав никаких параметров - person ÉricP; 09.03.2011
comment
@EricP: Это был способ справиться с этим, да. - person vcsjones; 09.03.2011
comment
И последнее, теперь я знаю, как нажать (используя svn dcommit), но как вытащить? Достаточно ли git-svn? - person ÉricP; 09.03.2011
comment
@EricP: Вы, вероятно, ищете git svn rebase Согласно документам ... Это извлекает версии из SVN-родителя текущего HEAD и перебазирует текущую (не зафиксированную в SVN) работу против нее. Это работает аналогично обновлению svn... - person vcsjones; 09.03.2011

Это возможно, но я думаю, что лучше всего изменить приложение контроля версий :)

чтобы svn зафиксировался в git (после того, как вы уже инициализировали его git svn)

git svn fetch

Чтобы ваш git зафиксировал svn

git commit git svn dcommit

person Michael Koper    schedule 09.03.2011
comment
Я не думаю, что мой клиент согласится перейти с svn на git :) Но я бы хотел: D - person ÉricP; 09.03.2011