Где я могу найти ресурсы «SVN для пользователей Git»? [закрыто]

18

Поэтому я устроился на работу, когда фирма использует SVN (но в будущем переедет на Git). Проблема в том, что я не знаю SVN. Я пробовал многочисленные запросы Google, и все, что я когда-либо смог найти, - это учебные пособия по SVN-> Git, блоги «Почему Git лучше, чем SVN» и особый «шпаргалка», которая дает (некоторые) сопоставимые команды ...

Если не считать книги О'Рейли о SVN, каковы краткие (но не слишком короткие) инструкции для SVN для пользователей Git?

agent154
источник
3
Короче говоря: a) нет индекса, b) svn up = git pull, c) svn commit = git commit && git push d) ветви эмулируются каталогами ... ;-)
johannes
1
Я не уверен, как я могу сделать это больше по теме ...
agent154
5
Ни за что. Рядом с чем-либо есть оффтоп на P.SE.
JensG
@ agent154 не просите нас быть поисковой системой для вас. Определите проблему, с которой вы столкнулись - проблема не в том, «где я могу найти вещи в SVN», а в том, что «я пытаюсь что-то сделать, и я не могу понять, как это сделать». Если это что-то специфическое для команды 'svn', и вы работаете над тем, как ее написать, спросите о переполнении стека. Если это что-то касается рабочего процесса и организации svn (когда разветвляться, когда объединяться, как работать с другими разработчиками) - спросите об этом здесь.
2
Я думаю, что выявленная проблема - это нехватка ресурсов, даже несколько удаленно доступных для понимания SVN как пользователя Git. Честно говоря, я нашел бы обсуждение этого супер полезным после того, как пролистал несколько страниц результатов Google / DuckDuckGo, не найдя ничего, кроме того, что упомянул ОП.
Метаграф

Ответы:

8

Каноническим справочником является Redver Subversion . Независимо от ваших прошлых навыков, прочитайте это из свежих, и вы получите всю необходимую информацию об использовании. Это не сложно и не совсем чуждо, большинство людей говорят, что SVN гораздо проще понять, чем git, поэтому вам будет достаточно немного прочитать основные команды. Глава о базовом использовании должна помочь вам без проблем.

Есть 2 основных отличия:

  • совершить = подтолкнуть к центральному репо. Здесь нет ни перебазировки, ни локального коммита, ни тянет.
  • ветвление по каталогу. Лучше всего рассматривать весь репозиторий как структуру каталогов, ветвление похоже на создание символической ссылки с семантикой копирования при записи. В то время как в git вы разветвляете все репо и переключаетесь между ними, так что новая ветвь «перекрывает» вашу рабочую копию, с SVN вы можете менять части своего репо. Обычно люди разветвляются в папке верхнего уровня (обычно это ветки), поэтому переключение становится более похожим на стиль работы git 'overlay'.

Разветвление тривиально, слияние далеко не так плохо, как того хотят апологеты DVCS, особенно если вы придерживаетесь «стандартного» трио папок верхнего уровня (называемых стволом, ветвями и тегами).

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

Есть несколько битов, которые не так хороши, как git, возникает конфликт страшного дерева - когда у вас конфликт на уровне каталогов (то есть кто-то удалил файл, который вы редактировали)

Если вы работаете в Windows, используйте TortoiseSVN. Это качается в основном.

gbjbaanb
источник
Зависит. Объединение с SVN становится плохим, когда файлы были перемещены (что по сути является образованной формой удаления + добавления, управляемой самим SVN) кем-то И изменены кем-то другим. Кроме этого, хороший ответ.
JensG
1
Я упоминал проблему конфликта дерева ... Такое состояние является проблемой для других scms, хотя я понимаю, что git использует эвристику, чтобы определить, является ли перемещенный файл тем же самым, он все равно может ошибиться, если изменения значительны ( например, файл разбивается на 2).
gbjbaanb
Git не нуждается в эвристике для обнаружения изменений дерева - ему нужен пользователь, чтобы переместить файл git mv. SVN имеет svn move, но так как ветвление и слияние в SVN - это своего рода хак, я не верю, что он может автоматически разрешать конфликты деревьев, как это делает git ...
Идан Арье
3
@IdanArye git mvреализован как add + remove. git использует эвристику, чтобы определить, произошло ли перемещение или копирование во время коммита (я думаю, что по умолчанию «80% + файла одинаковые?»)
Izkata
3

Используйте git svn, если это возможно. Я был в вашей ситуации, и после полугода разочарования я перешел на git svn и с тех пор был счастлив.

Git svn позволяет вам использовать репозиторий локально, а git svn rebaseфиксация на сервере SVN затем обрабатывается с помощью a, который сбрасывает ваши локальные изменения в транк subversion, а затем git svn dcommitкоторый фиксирует перебазированные коммиты.

Возможно, это не оптимально для продвинутого использования Subversion, но так как вы используете git локально, все в порядке.

При использовании git clone вы не должны клонировать корневую папку Subversion, а непосредственно ваш целевой каталог (клонировать trunk). Это заставит git работать намного быстрее, иначе ваша рабочая копия может стать огромной.

Отказ от ответственности : я не знаю, какова ситуация, когда вы хотите создать ветки Subversion и т. Д. Команды, с которыми я работал, не использовали ветки (только я локальные ветки git).

wirrbel
источник